地方资讯
主页 > 地方资讯 >

技术分享 如何做一款容纳百人的视频会议?

发布日期:2021-11-22 22:22   来源:未知   阅读:

在多人音视频通信过程中,设备的网络流量会出现间接性的波动(突发流量、网络信号问题),影响通话质量,开发者需要对当前通话的质量指标做统计分析,经过分析结果,自行调用API结果进行问题解决,但业务频繁的进行切换或者API调用不当会导致通话异常等现象。anyRTC 从实际出发,根据内部多个指标对订阅用户的音视频质量进行分析,开发了功能。用户只需调用方法,监听状态回调,在视频的窗口中给予友好提醒即可。

在使用音视频流回退功能之前,先调用 enableDualStreamMode 方法开启[双流模式](。下方的每种方式都需提前开启双流模式(小窗口拉取小流,大窗口拉取大流,可节省流量)

在调用远端音视频流回退功能后,只需要监听对应的回调,通过回调的信息对通话的窗口做页面提示。

进入会议前,根据自身的喜好进入会议,该配置项有效的保护了用户隐私,如果同时取消选中摄像头和麦克风,会议中的流量也会减小很多。

在进入频道前或者进入频道后都可以进行方法调用,调用该方法后,本地的采集还在继续,只是不对外传输音视频数据,当打开发送的时候,速度比较快,建议使用该方法进行音视频开关操作。

为了节省带宽,语音激励模式是最好的模式,只显示一路视频,即当前说话声音最大的用户,其他人只接收音频。在实际开发过程中,开发者也可以手动接管画面,当该用户在语音激励时,大画面显示该用户视频图像,在页面中加入按钮“锁定”,此时只看该用户画面,满足小带宽多人通信场景。

除了监听说话者声音回调,同时也要监听对方视频的发布状态,本地调用接收该用户视频的时候,需要先判断该用户是否发布了视频,如果没有发布则不进行接收方法设定。

当通话人数过多的时候,对视频数据分页显示也是一种优化方式,传统的每页显示4路画面,人数多进行分页显示。

1、监听didJoinedOfUid,有回调来向本地数组中插入该用户,并设置前3个用户不做操作,后续的用户对其调用muteRemoteVideoStream方法不接收后续用户的视频流,这样一屏加上自己和另外三个用户正好一屏数据,人数增加后根据逻辑每页显示4个做页数提示。

2、监听didOfflineOfUid,有回调向本地数组中删除该用户,同时更新显示画面,如果该用户在显示的画面里,需要去除该画面,后面的数据向前补位,补位的用户调用muteRemoteVideoStream来拉取该用户的视频流;如果该用户不在显示的画面里,在显示当前窗口的数组后方,不做操作,只需要在数组中删除该用户即可,如果该用户在线上窗口的数组前方,需要对当前画面的做位移,显示页前方的用户向前移动,并调用muteRemoteVideoStream不在订阅该用户的视频流,当前页后面的数组中的用户补在线上区域中,并调用muteRemoteVideoStream订阅该用户的视频流。

3、翻页:翻页的时候,翻到页面显示的区域的用户调用muteRemoteVideoStream订阅视频流,翻走的页面用户调用muteRemoteVideoStream取消订阅视频流。

5、监听networkQuality回到,最每个画面上的用户做网络好坏提示。

视频会议的玩法基本都是上述场景描述,通过一些上列手段来打破流量以及设备性能问题带来的通信不顺畅问题。随着技术的发展,设备性能的提高,**超分辨率**、**AI编解码**等技术也会融入到多人视频会议当中,当然5G的普及以及6G的应用,流量问题也会被基础设施攻破。守清源护清流 合肥庐阳区众志成城守护生态之源