系统框架
SDT多方互动解决方案
::: highlight red 💡
SDT多方互动解决方案包括:基于抗弱网低延迟传输协议SDT的MediaServer流媒体服务器以及客户端SDK。
方案以极简的API接口大幅降低RTC实时音视频通信的接入门槛,支持私有化部署,已经成功应用到:军工单兵设备、视频会议、在线教育、直播互动等领域。
1分钟部署服务,30分钟集成SDK。化繁为简,高度稳定。
:::
方案具备以下特点:
- 1、基于抗弱网、低延迟SDT传输方案开发(QosFecNack传输内核),提供极低延迟的互动体验。
- 2、基于房间/会议模式,支持1对1、1对多、多对多音视频低延迟互通。
- 2、支持SFU视频转发模式,该模式下视频转发、音频混音,同一房间支持多达32路音视频。
- 3、支持MCU多画面合成模式,支持创建会议时指定画面布局模板、会议过程中动态调整布局模板。
- 4、支持客户端登录服务器时,服务器对外请求鉴权(通过nanomsg+json)。
- 5、支持旁路直播推送RTMP协议到第三方流媒体服务器(SRS、ZLM等),后者提供单向直播流服务。
- 6、支持终端录制与服务端录制,采用TS录制离线转MP4方式,具有较强抗异常能力。
- 7、支持视频流双流能力。
- 8、完全自主知识产品,不依赖于webrtc等开源项目。抗弱网能力、定制化、灵活性均超过webrtc开源方案。
- 9、服务器和客户端SDK均基于C++开发,高性能,高稳定性,低依赖,1分钟部署服务,30分钟集成SDK。
- 10、客户端支持Windows\Andorid\海思瑞芯微等嵌入式平台,核心接口在10个以内。
::: highlight red 💡
重要术语说明
:::
**房间(也称为会议、教室)**:服务器上一个虚拟的概念,进入同一个房间的客户端才允许数据交互,不同房间之间的客户端并无交集。一个房间内客户端的最大数目理论不限,具体根据服务器端设置。服务器允许最大的房间数目同样依据服务端设置而定。最简单的模型是一个房间内一个发布者,一个接收者。
客户端UID:用于标识每个客户端的唯一ID,在系统中不允许有相同UID的客户端同时在线,否则新登录的客户端会将之前的客户端“顶下去”。
音视频发布者:具备上行音视频到服务器(房间)能力的客户端类型,同时也能接收来自服务器(房间)的音视频数据。
音视频接收者:只从服务器(房间)接收音视频的客户端类型,不具备上行能力,比如直播业务中的普通观众。
音视频位置:一个房间内允许同时多个音视频发布者,它们发布音视频到不同的“位置”上,接收者可选择接收某个或某些位置的音视频。目前单个房间允许32个“位置”。发布者登录后可以选择由服务器自动分配空闲的“位置”供其发布,也可以指定“位置”发布,若当前该“位置”上已有其他发布者,后者将顶替前者以保证同一位置上同时只有一个发布者。
音视频接收掩码:客户端可以根据业务需要选择接收房间内某个或某几个位置的音频或视频数据,可以通过设置自己期望接收的掩码到服务器。音频和视频使用各自独立的掩码,每个掩码32bit对应房间内的32个位置。
传输参数:本文传输参数是指视频通道的FEC上行冗余度、上行FEC Group组大小、JitterBuff初始值等参数,音频通道在内部已经根据经验数据配置好了合适的值且不对外开放。对于纯接收端(纯下行)同样也可以设置FEC上行冗余度、上行FEC Group组大小,内部将忽略该参数。具体传输参数含义可见QosFecNack传输内核介绍。
::: highlight red 💡
视频会议场景下的房间位置规划举例
:::
本系统基于房间、位置两要素开发,通用性强,可以满足绝大部分音视频通信领域的RTC需求。
为了方便用户理解掌握,我们以一款视频会议产品为例,展示房间、位置的设计方法。
1. 会议号=房间号
服务器通过房间实现了业务的虚拟隔离,在同一个房间中的客户端才能互通,会议号等于房间号使得终端能通过同一个会议号加入同一个房间中。
2. 位置设计(以系统最大12个位置为例)
我们使用0号位置作为服务器混音、多画面合成后的音视频流的下发位置。客户端通过设置接收掩模的最低比特位为1,即接收0号位置的音视频流,实现会场多方音频、画面的接收播放。
使用1~10号位置作为音视频发布者上行位置。业务自行设计哪一个终端使用哪一个位置,应避免位置冲突。
使用11号位置作为辅视频流的上下行位置。辅视频流在视频会议场景下仅一路,一般不参与多画面合成。
3. 画面布局
位置决定了哪一些流可以上行,画面布局则规定了哪一个位置的画面显示到合成画面中的哪一个位置。在MCU模式下,服务器通过nano msg接口接收远端会议控制系统发送过来的画面布局指令,按指令要求进行多画面合成。比如一种四分屏布局如下所示:
布局可以在会议过程中动态变更,实时生效。未出于布局中的视频流将不会合成显示。