双向音视频通信系统的客户端是一个复杂的子系统,
它比起单向直播系统的推流客户端,播放客户端都要复杂,
因为它需要在采集本地音视频推送到服务端的同时,还要从服务端接收音视频数据进行播放。
而对于真正的实际生产用的客户端来说,
它还需要有完整的业务逻辑实现,良好的健壮性,并适配各种平台,这更增加它的复杂度。
本文介绍了一个完整的客户端的媒体引擎的基本框架,并对其核心工作原理做了介绍。
1. 客户端媒体引擎架构
下图是客户端媒体引擎的架构图:
平台接入层:是对整个SDK的封装,以API的形式,提供给各个平台客户端的业务层调用;
设备适配层:是根据不同的平台,对硬件采集、渲染设备的封装。
媒体引擎层:它包含有三种数据流(即媒体流,日志流,信令流) 的处理,
而媒体流又分成视频流和音频流。
网络传输层:它包含有三种协议的网络数据传输,
使用基于UDP的RTP/RTCP协议来传输媒体数据,
使用基于PB的TCP协议来传输信令数据,
使用基于HTTP协议来传输日