一言不合你就用环信搞个直播APP

原文地址:http://community.easemob.com/article/825307904

里面还有我的更多开源项目干货,欢迎大家过来点赞

最近互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~

来吧!少年,跟着我们做完这个APP,下一个“朱碧石”,肯定就是你啦~

先看看我们即将要做的这个APP的成品截图,内心激动一下啵~

so…是不是很酷啊?But。。。上面这个APP,需要对各种布局细节处理,所以5分钟是搞不定的……小马只能提供源码给大家参考。

小马直播间 https://github.com/mengmakies/SmallHorseLive

接下来我们教大家做的这个app,也包含了最核心的音视频直播功能,亲测……结合环信IM的聊天室Ucloud的直播云ULive,确实5分钟内可以完成。

首先,我们先来普及一下音视频直播的两个专业术语:推流、拉流。

  • 推流:把视频流“推”送到服务器,也就是:视频录制;
  • 拉流:把视频流从服务器“拉”出来,也就是:视频播放;

    注意:以上为个人理解,专业解释需要大家搜索百度或必应~!~

其次,做这个demo过程中有2个坑,小马都帮大家踩过了:

  • 环信 iOS HyphenateFullSDK(包含实时通话功能)与UCloud的直播云SDK会冲突,推流的时候直接导致视频“卡住”不动。所以只能集成环信HyphenateSDK (不包含实时通话功能);
  • UCloud官方明确表明直播云SDK最低支持IOS7.0,可是经小马实测,IOS7.0.4无法推流(但是拉流正常),被这个坑了4天,所以建议大家真机测试时,IOS系统版本至少要8.0以上。

最后,我们可以开始做直播APP了:

第一步:创建推流和拉流加速

如何创建推流和拉流加速?https://docs.ucloud.cn/upd-docs/ulive/live_stream.html

需要准备的物料:

1. 已经备案的域名;

2. 在UCloud上购买流量(0.45元/GB);

但是,要求准备一个已经备案的域名,这个确实让很多小伙伴望而生怯。so….我们直接用官方demo里的推流和拉流地址即可:

第二步:集成环信IM的聊天室功能

快速集成环信IM功能,可以参考以下文章,其中细节我们就不在这里累赘:

《IOS快速集成环信IM - 基于官方的Demo优化,5分钟集成环信IM功能》

在XCode中新建项目HxChatLiveDemo,参考上面的文章集成环信IM后,我们需要将单聊改成聊天室,在ViewController.m代码里,登录成功后,换成下面代码即可:

ChatViewController *chatVC = [[ChatViewController alloc] initWithConversationChatter:@"1432362535305065" conversationType:EMConversationTypeChatRoom];
chatVC.title = @"小马直播间";
[self.navigationController pushViewController:chatVC animated:YES];

第三步:集成UCloud的ULive直播云SDK

  1. 下载小马直播间代码,将源码中的UCloudSDKUCloudUI文件夹拷贝到项目的根目录,并拖到XCode项目中:

2.在HxChatLiveDemo-Prefix.pch中加入下面的代码:

编译运行….wait…如果没有报错,恭喜你~~你离成功就差一步了

第四步:在聊天室里集成推流(录制)和拉流(播放)功能

小马已经基于UCloud官方demo封装了调用推流拉流的代码,大家只需把自定义直播控件UcCameraView拖入自己项目中即可:

1. 下载小马直播间代码,将源码中的Class->Custom文件夹拷贝到项目的根目录,并拖到XCode项目中:

2.在聊天室页面ChatViewController.m中初始化直播控件UcCameraView,请参照如下代码:

viewDidLoad函数中初始化直播控件:

// 如果是聊天室,则显示直播~
    if (self.conversation.type == EMConversationTypeChatRoom ) {
        _cameraView = [[UcCameraView alloc] initWithStreamID:@"12345"];
        _cameraView.frame = [[UIScreen mainScreen] bounds];

        [_cameraView startRecord];// 直播视频
        // [_cameraView startPlay];// 播放视频

        [self.view addSubview:_cameraView];
        [self.view sendSubviewToBack:_cameraView];

        self.tableView.backgroundColor = [UIColor clearColor];
    }

编译运行~~~见证奇迹的时刻来了=.=

那….我们怎么验证推流是否成功?打开页面http://www.cutv.com/demo/live_test.swf ,输入推流或者拉流地址即可。比如我们当前直播的地址:

rtmp://publish3.cdn.ucloud.com.cn/ucloud/12345

或者

rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/12345

注意

关闭当前ChatViewController页面时,记得停止直播哦,即在deallocbackAction函数中调用如下代码:

if (_cameraView) {
    [_cameraView stopRecord];
}

3.推流(录制)已经可以正常使用了,接下来我们就开始拉流(播放)视频了。其实很简单,将上面第二步的一行代码换成播放即可:

//[_cameraView startRecord];// 直播视频
 [_cameraView startPlay];// 播放视频

问题又来了?我们怎么验证是否拉流(播放)成功呢?So easy…

Ucloud的直播云ULive官网下载安卓版的安装包,打开APP,输入视频流ID”12345“,点击左边的【录制】按钮开始【推流】:

Ucloud安卓APP推流效果图,注意第二张图左上角红框处,只有显示流量(例如128.KB/S)才真正推流成功。推流成功后,才能打开IOS版demo拉流播放,否则会提示:播放错误

如果没有安卓机,大家可以用其它推流工具,墙裂推荐:https://www.qcloud.com/doc/api/258/4743

OK。。。大功告成!!!开香槟庆祝一下~最简单的直播APP已经制作完毕,其它细节问题(例如界面美化、聊天页面),大家要自己处理哦。本文示例代码已开源:

HxChatLiveDemo https://github.com/mengmakies/HxChatLiveDemo

小马直播间 https://github.com/mengmakies/SmallHorseLive

如有任何问题,请咨询【环信IM互帮互助群】,群号:340452063

或者加本人QQ:364223587,加Q请认准以下正宗小马头像:

原文地址:http://community.easemob.com/article/825307904

时间: 2024-12-27 05:55:12

一言不合你就用环信搞个直播APP的相关文章

iOS: 环信的推送

原文:http://m.blog.csdn.net/article/details?id=38824551 1.先创建一个apns证书,链接如下 http://developer.easemob.com/docs/emchat/ios/push/certificate.html 创建完证书后,将证书弄成p12文件,然后上传到环信后台 2.再创建真机调试证书,和描述文件,保证能进行真机调试.并且appid要又推送功能 3.绑定环信证书和appkey //注册 APNS文件的名字, 需要与后台上传证

iOS 环信集成问题(连文档都不说明的坑。。)

首先,关于环信SDK的下载和一些依赖库的添加,在此我就不做详细介绍,(http://www.easemob.com/download/im)附上环信官网文档,可以看一下,上面都可以下载,也有相关配置介绍. 今天主要说一下,环信集成遇到的各种坑,各种问题,有的连文档都不说明的坑..(主要是讲解完全集成环信,UI的聊天界面,单聊功能也是环信的这种情况) 各位可能刚在官网下载下来ChatDemo-UI3.0这个版本,会发现HyphenateFullSDK和官网文档有个不一样的地方,少了个文件(libH

即时聊天-环信

在Xcode项目中,怎样导入即时通讯步骤如下:(Xcode突然崩溃这是我第二遍写,没谁了) 1.下载SDK 一般情况下我们使用SDK时都会下载最新版本的下面以V3.1.1为例 2.导入下载好的SDK 这一步把导入文件倒入到项目文件中,记得要勾选上Copy items if  needed  噢! 3.添加依赖库 点击Buide Phases中的Link Binary With Libraries 4.运行编译器,检查是否报错 这一步真机和模拟器运行结果是不一样的,要看清楚 5. 真机错误修复 6

环信集成,获取注册开发者用户获取Appkey(二)

首先登陆此网站:https://console.easemob.com 点击注册:具体注册信息,按照自己的信息,记着填写正确的邮箱,因为账号需要邮箱激活. 登陆后,点击我的应用, 创建应用, 成功后就会看到多个一个应用,在创建前有个sandbox的应用,不清楚是干嘛的,直接无视即可. 创建成功自己的应用后,可以创建用户之类.打开这个应用比如叫test1 里面就可以看到.appkey啦,这就是手机端需要在配置文件配置的, 他的下面就有快速集成,和Android,ios怎么配置之类. IOS需要上传

5秒钟解决环信ipv6适配问题-b

最近苹果要求app都要适配ipv6,我用的环信2x版本,据我所知环信2.2.5及之后版本才适配了ipv6.怎么检测你的app是否适配了apv6呢?可以自己搭配个ipv6环境,然后在ipv6环境下2.2.5以下版本无法登录.我的是2.2.2版本,之前我尝试把整个sdk换成2.2.5版本,但是因为项目需要改动的地方实在太多放弃了,后来想想既然适配ipv6,应该是和界面和环信用的第三方库之类的关系不大,应该和service有关于是我锁定了EaseMobSDK这个目录下的这三个文件夹,后来试了了下只要把

环信SDK

初始化 SDK 第 1 步:引入相关头文件 #import “EMSDK.h”. 第 2 步:在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //AppKey:注册的AppKey,详细见下面注释. //apnsCertName:推送证书名(不需要加后

Android 环信的使用

1.导入包 http://docs.easemob.com/doku.php?id=start:200androidcleintintegration:10androidsdkimport 在清单文件AndroidManifest.xml里加入以下权限,以及写上你注册的appkey 1.权限配置: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://

IOS开发 EaseMobSDK 环信快速集成

一.新建工程,将下载好环信SDK的<EaseMobSDK>文件夹添加到工程中. 二.添加依赖 三.将EaseMobSDK文件夹中include文件夹路径添加到Header Search Paths中. Other Linker Flags 中添加-ObjC 都在Build Settings中. 四.完成后在 AppDelegate.m中 启动文件 中写入代码 [[EaseMob sharedInstance] registerSDKWithAppKey:@"easemob-demo#

线程阻塞问题-功能:环信登录失败后自动登录5次

项目中集成了环信,点击联系客服时需要调取环信的接口,现在有个要求,如果调取环信的登录接口失败了,就要重新登录,但是这个操作不能影响主线程的操作,登录次数达到一定的数量后停止登录.首先:环信的登录时同步的,需要我们开启一个线程,不然当环信登录失败时会很容易造成界面卡死的情况.+ (void)loginWithSuccessBlock:(void(^)())success FailureBlock:(void(^)())failure{   // 自己封装的一个公共类 // 开启一个线程防止登录失败