技术编程,网易|网易云信流媒体服务端架构设计与实现( 四 )


其次 , 需要制定一个合理的同步方案 , 即在白板录制文件和MP4文件里增加同步字段(NTP时间) 。每一个白板数据和视频帧都增加NTP时间 , 也就是基于NTP时间进行相应的同步 。但要解决NTP存放的问题 , 对于白板录制而言 , 因为白板录制文件是私有录制文件 , 只需要在TAG-HEADER字段里每个隔一个字段存放NTP这个时间的字段即可 。
对于实时音视频录制而言 , MP4或者FLV要基于H246一帧插入一个NAL-SEI , NAL-SEI的payload type要设置为5 , 在用户自定义数据里同样插入一个NTP字段 。MP4播放时间是基于MP4player的 , 无法控制其播放进度 , 所以整体的同步方案是基于白板播放时 , 实时的用位于同步时间轴上下的两个NTP进行校准 , 进行白板的加速播放或者慢播放 , 这样就可以做到音视频录制文件和白板录制文件同步回放的效果 。
视频会议传输质量控制
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

对于视频会议传输质量控制要从三个模块分析:一是第一公里接入;二是多流发布订阅机制;三是传输层上下行QoS策略 。
3.1 第一公里接入
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

第一公里接入主要采取两种方法:一是边缘加速代理和传输层路由策略结合 。二是进行网络探测和智能选路 。
3.1.1 边缘加速代理和传输层路由策略结合
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

第一公里接入模块的具体操作是 , 首先在基于现有的中转分发服务器集群覆盖的场景下 , 无法做到覆盖所有的地域、运营商 , 一些偏远地域或者运营商还是依赖于其他的云服务器厂商 , 并利用他们的节点进行就近接入 。
就近接入就是在云厂商的云主机上部署我们的代理服务器 , 代理服务器监管传输层的数据和PaaS传输层的协议 , 并获取下一跳地址 , 也就是用户就近把数据发送到第一跳加速节点上 , 加速节点进程接管传输层 , 由传输层的头部获取下一跳地址 , 再把数据抛给下一跳加速节点上 , 然后推送到中转分发服务器集群 , 并最终推送到实际的接收端 。
3.1.2 网络探测和智能选路
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

网络探测和智能选路方法的具体操作是:当用户发起接入时 , 会调度给它一组就近接入的节点 。节点的选取是在会话开始前和开始过程中都进行网络探测 , 并按一定频率的机制去发送探测数据包 。当节点接收探测数据包时会进行接收信息反馈 , 基于这些信息反馈将这次探测结果的丢包率、RTT、jitter、BW指标计算出来 , 基于这些指标进行评分 , 最终从调度基础的就近接入节点选取最佳的接入节点 。
3.2 多流发布订阅机制
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

多流发布订阅机制可以解决两个问题:一是用户可以根据自己的意愿或者能力进行下行接收;二是媒体处理服务器在进行下行QoS控制时会基于探测到的网络真实的带宽 , 帮助用户智能的选取可以接受的码流 。所以基于发布订阅机制可以做到两件事情:一是满足用户需求;二是做好传输质量 。
具体实现是在媒体服务器上有两个模块:一是媒体处理模块 , 二是Pub/Sub管理器 。用户发布流时会基于可靠信道 , 发布一条想要Pub流的信令给发布订阅管理器 , 发布订阅管理器会将所有用户的Pub列表广播到所有接收端 , 由所有的接收端根据需要通知发布订阅管理器订阅哪一条流 , 然后发布订阅管理器会将所有消息同步到媒体线程并进行下行转发的管理 , 这样就实现了发布订阅功能 。


推荐阅读