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


录制服务方案设计
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

以下部分我将介绍了录制服务的搭建 , 很多人认为云端录制比较容易 , 但是由于2B业务的用户场景的多样化 , 使得录制服务会面临很多挑战 。
首先是录制服务方案如何选取 。如果采用实时录制 , 全量通话进行MCU处理 , 性能无法满足 。
如果采用离线处理 , 会遇到一些用户需求问题 , 比如用户要马上看到文件 , 但录制还未开始 。
另外 , 有些用户想要有录制的功能 , 但是媒体数据他们自己加密了 , 我们的服务器没法进行解密 , 所以也无法进行录制 。以上都是一些客观存在的问题 , 为了应对各种用户场景 , 我们设计了一套融合录制方案 。
2.1 融合录制方案
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

这张图向大家展示了融合录制方案的内容 。对于即时点播需求很高的用户 , 我们提供了实时MCU服务器 , 实时通话时会把通话内容转给MCU服务器进行数据的混合编码 , 以H264单帧的方式投递到MP4/FLV协议封装服务器上 , 并将封装后的MP4/FLV数据上传到云存储 , 这样用户就可以进行相应的点播 。
另外 , 对于录制功能有要求但对即时点播要求不高的客户 , 需要选择离线处理的方案 , 网络码流Dump服务器实时地将需要录制的会话Dump下来 , 并转成私有Dump文件 , 离线MCU处理器将私有Dump文件进行调度处理 , 最终上传到MP4/FLV协议封装服务器上 , 用户就可以进行相应的点播操作 。以上就是实时录制方案和离线录制方案 。
针对于用户想要将媒体数据加密并且保留录制功能的需求 , 我们开发了录制SDK 。用户可以基于录制SDK开发用户自建录制服务器 , 这套录制方案可以解决大多数用户的录制场景 。
2.2 离线录制实现
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

这部分细致介绍一下离线录制方案 , 用户基于RESTful Api向房间管理中心发送录制请求 , 房间管理中心基于调度中心就近调度到一个实时网络码流Dump服务器 , 同时将录制请求和录制参数(用户录制如何布局、是否进行音频能量的选取等)下发到选中的网络码流Dump服务器 。网络码流Dump服务器收到请求通知后会和中转分发服务器建立拉流链路并获取媒体数据 , 之后进行私有协议文件的封装 , 这相当于进行一个离线处理 , 将实时数据封装到离线文件里 , 然后经过离线MCU服务器进行离线文件处理并录制 , 再将录制好的码流投递到文件封装上传服务再到存储点播服务器 , 这样从录制的发起到上传、存储的离线录制就完成了 。
其中私有协议文件格式设计非常重要 , 离线处理要处理好音频和视频的同步以及画面中所有人的音频和视频的同步 , 就需要建立一个合适的同步机制以适配私有协议文件 。
2.3 实时音视频录制与白板录制同步回放机制
技术编程,网易|网易云信流媒体服务端架构设计与实现
文章图片

文章图片

教育场景下 , 如何进行实时音视频录制和白板录制同步回放?
由于白板通讯基于TCP , 实时音视频基于UDP , 两者相互独立 。用户基于白板SDK进行白板数据的传输 , 基于音视频SDK进行音视频通话 , 这就要解决如何进行跨系统之间的录制文件的同步回放问题 。
首先 , 白板服务器集群和音视频服务器集群要基于NTP同步服务器进行时间同步操作 , 即做到离散服务器之间的系统时间一致 。


推荐阅读