连麦模块 UPLiveSDKDll.framework/RtcManager
作为一个直播组件(采集器、推流器、连麦模块、播放器)可以自由组合到直播 app 中。
连麦模块已经整合到动态库 UPLiveSDKDll.framework
(v4.0.0)
普通直播流程: 采集器(采集、音视频处理) - 推流器(编码、压缩)- 播放器(解码、播放)
直播连麦流程:
主播端: 采集器(采集、音视频处理)-连麦模块(视频对话、合图) - 推流器(编码、压缩)- 播放器(解码‘播放)
观众端: 采集器(采集、音视频处理)-连麦模块(视频对话)
连麦作为一个普通模块通过接口与直播 SDK 的其他模块衔接。直播模块与连麦模块的数据传递可以查看 UPAVCapturer.m
文件里面 RtcManager
的使用情况。这一部分都是源码实现的。
连麦功能相关接口只有三个:
UPLiveSDKDll.framework/RtcManager.h
- (void)setAppId:(NSString *)appid;//初始化rtc模块
- (void)setViewMode:(int)mode;//0:主播模式,1:观众连麦模式
- (void)startWithRtcChannel:(NSString *)channelId;//连麦到某一个频道(房间)
- (void)stop;//退出连麦
主播连麦和观众端连麦都是使用 UPAVCapturer
。
主播连麦和观众端连麦最大区别是:连麦模块回调出的数据是否需要压缩推流。主播客户端需要将连麦合图之后的数据压缩推流给观众看。而观众端连麦不需要。
所以具体的:
主播端使用 UPAVCapturer
的连麦接口时候不需要做任何特殊修改,具体使用代码参考 UPLiveSDKDemo/UPLiveStreamerLivingVC.m
中的连麦操作。
观众端连麦,因为不需要推流,所以在使用 UPAVCapturer
连麦时候需要注意两个地方:
//观众端连麦不需要 rtmp 推流,所以不要设置 outStreamPath。
//[UPAVCapturer sharedInstance].outStreamPath = rtmpPushUrl;
//同时关闭 UPAVCapturer 推流开关。
[UPAVCapturer sharedInstance].streamingOn = NO;
观众端连麦代码参考:UPLiveSDKDemo/UPLivePlayerVC.m
连麦功能需要协调和处理多个视频窗口,连麦视图的位置大小,隐藏显示等属性 app 可以自由控制。相关实践和代码示例请参考 UPLiveSDKDemo
- 1.连麦 AppID:可以对等理解为直播服务中的 bucket name。需要联系后台获取这个 AppID。
- 2.连麦 channelId 可以对等于直播流 id 或者房间号。加入同一个channelId 就是相互连麦。
- 3.如果连麦功需要其他设置,比如连麦窗口设置可以在
UPAVCapturer.m
自行修改。 - 4.暂时支持 3 人连麦设计。连麦的控制(发起、允许、选人、踢人、一对一限制等)需要 app 业务层自行控制。