最近公司加了互动直播功能,用的是网易互动直播,期间所经历的一些坑,和大家分享一下
1.准备分析
直播是im和视频的推流和拉流一起完成,这些是依赖库
这个是手动导入的sdk
MINSDk是网易im的一般版本,NIMAVChtat 是包含实时语音的版本,如果只是继承直播 第一个就可以了 ,互动连麦直播 就需要2个.
这2个文件夹 是网易封装的ijk播放器和直播需要的文件 也需要导入.
2关于冲突
如果你的项目里面用到了ijk就需要把他删除掉,GUPImage也是,这2个都会引发文件.
3登陆
互动直播依赖于im,需要登陆才能进行
分别是注册,是指日志 数据存放位置,有默认存放位置,配置代理,和登陆,error==nill代表登陆成功
4创建聊天室
想要聊天必须创建聊天室
创建聊天室,创建聊天进入请求,进去,error==nil 进入成功,弹出对应界面.
5创建会议
什么是会议,互动直播就是直播别人会议,你们在开会,观众再看,就这么简单.
进入界面的时候要看到摄像头获取的界面,流程是, 开启video,预定会议,加入会议
开启video
然后实现
[[NIMAVChatSDK sharedSDK].netCallManager addDelegate:self];
- (void)onLocalDisplayviewReady:(UIView *)displayView;在代理方法就能拿到画面了
这里面拿的view没有frame,你要给他一个frame
美颜效果也是家在这里面实现的(官方美颜),如果需要自定义的美颜,需要在
需要在[[NIMAVChatSDK sharedSDK].netCallManager sendVideoSampleBuffer:sampleBuffer];前面,渲染好再发给出去;
下面预定会议和加入会议
创建会议
主播和连麦着必须 actor=yes,否则无法推流
主要说一下这3个
第一个是推流,直播和连麦着都需要设置,第二个是推流地址,只要主播设置,第三个是用户看到的展示类型,
这个样子比人拿到地址 就可以看到你的画面了
连麦者加入会议,和离开会议,主播也是这个方法离开会议,
那么如何看到连麦人的画面那
这个代理就可以拿到yuvData,然后用opengl渲染出来,不会opengl没关系,我也只会法线,光线和纹理这些,
直接拿来用就可以,到此位置,就已经现实了连麦功能,这个2个拿到视频的文件的代理,展示样式是可以自己随意摆放的,不应想用户那边的观看,用户的观看模式可以自定义,也可以在option中设置,但是要在开播之前就选定样式,其他就是个自的业务逻辑问题了,网易直播的ui 不要集成,否则自己去体会.
ok就写到这里