5_2-手机开播场景-连麦推流
1 功能概述
推流和连麦模块是手机开播场景中的基础功能,支持摄像头开关、摄像头前置后置切换、麦克风开关功能,推流同时支持清晰度设置和摄像头镜像的功能。推流可以用于讲师上课,连麦支持音频连麦、视频连麦可自由选择,并支持多人连麦,丰富课堂内容。
推流流程:初始化推流引擎->设置推流配置参数->开始推流。
连麦流程:讲师端发起连麦->学员举手申请连麦->讲师端允许学员连麦->学员正式加入连麦。
2 实现介绍
2.1 PLVStreamerPresenter
该类是手机开播场景下,针对推流和连麦进行封装的推流管理器,支持旁路CDN推流、支持课程管理、支持RTC连麦、连麦用户管理。
2.1.1 初始化方法
在demo项目PLVLSStreamerViewController中需对管理器实现初始化处理:
同时 PLVLSStreamerViewController 需遵循协议 PLVStreamerPresenterDelegate,并实现其中代理方法。更多内容可以参考demo项目中PLVLSStreamerViewController 的演示。
2.1.2 设置默认配置
根据具体的业务场景可以进行麦克风、摄像头、流属性、混流布局模式以及其他属性的默认配置:
2.1.3 推流画面的预览
以demo项目中 PLVLSStreamerViewController演示为例,socket 登录成功回调后加入RTC频道:
此时房间状态发生改变,在下方示例的代理方法中设置本地画面预览的载体视图:
2.1.4 开始上课方法
PLVStreamerPresenter的startClass方法是用于开始上课的方法,内部调用startPushStream方法。startPushStream方法仅负责推流,而startClass方法将开始推流,且发送请求修改频道状态为“开始上课”。建议业务场景使用startClass方法。
在demo项目中PLVLSStreamerViewController 演示了倒计时结束时开始上课:
2.1.5 结束上课方法
PLVStreamerPresenter的finishClass方法是用于结束上课的方法,内部调用stopPushStream方法。startPushStream方法仅停止推流,而finishClass方法停止推流,且发送请求修改频道状态为“结束上课”。建议业务场景使用finishClass方法:
2.1.6 允许用户上麦
PLVStreamerPresenter的allowRemoteUserJoinLinkMic方法是用于允许用户上麦的方法:
在PLVStreamerPresenter的addLinkMicWaitUserWithDict内部方法中实现对用户上麦。
当RTC房间在线用户数组‘发生改变时,会调用PLVLSLinkMicAreaView 的reloadLinkMicUserWindows方法刷新连麦用户的画面:
2.1.7 挂断用户连麦
PLVStreamerPresenter的closeAllLinkMicUser方法是用于挂断全部连麦用户的方法:
PLVStreamerPresenter的closeRemoteUserLinkMic方法是用于挂断某位远端用户的连麦的方法,在PLVStreamerPresenter内部使用,closeAllLinkMicUser方法应用closeRemoteUserLinkMic方法实现挂断全部连麦用户的方法。
更多实现可以参考demo项目中 PLVLSStreamerViewController。
2.2 PLVLSLinkMicAreaView
PLVLSLinkMicAreaView用于承载PLVStreamerPresenter推流管理器提供的数据。
在demo项目中PLVLSStreamerViewController 演示了如何添加 PLVLSLinkMicAreaView 控件:
同时 PLVLSStreamerViewController 需遵循协议 PLVLSLinkMicAreaViewDelegate,并实现以下代理方法:
并在 -viewWillLayoutSubviews 方法中,对 PLVLSLinkMicAreaView 进行布局:
上述内容的具体实现可以在demo项目中 PLVLSStreamerViewController找到。
Last updated
Was this helpful?