一、背景目标
视频会议系统与微信小程序的live-pusher和live-player标签互通,而底层需求是webrtc与rtmp进行互通。
二、业务流程架构
微信信令sdk
live-pusher ---> ---> --->
媒体接入网关 视频会议SFU RTC客户端
live-player <--- <--- <---
- 媒体接入网关实现rtmp和rtc协议的转换
- rtmp需要独立的信令sdk
其中rtmp和webrtc系统互通,核心依赖的是媒体接入网关方案。
三、媒体接入网关方案
实现功能依次如下:
- rtmp协议接入
- rtmp进行mux和demux,解析出音视频的ES数据
- 音频aac和opus转换---主要性能消耗
- 视频avcc和AnnexB格式转换
- 视频时间戳同步到音频上
- webrtc协议接入
其中微信sdk需要通过url记录rtc的room房间信息,媒体接入网关维护url和webrtc媒体流的映射关系,信令sdk支持双向通信,可以接收rtc新加入用户的sfu消息通知。
3.1 音频编码转换
微信小程序推上来的rtmp解析的音频aac流,无adts头
ffmpeg的aac三方库libfdk_aac无adts头
ffmpeg的aac自带库有adts头
3.2 视频封装转换
rtmp的h264格式是