0x00 背景说明
媒体接入服务用来实现媒体资源(resource)的接收和发送,在有限范围内实现不同接入协议的转换。
0x01 一般模型
媒体传输通道的建立步骤通常分为两个阶段:
- 握手/协商
- 媒体传输
其中,握手/协商操作通常包含:
- 媒体通道描述
- 鉴权描述
- URI
- 动作,等
对应两个阶段,媒体接入服务通常需要提供两个接入点(Access Point):Stream AP 和 Session AP。简化后的系统模型如下:
上图所示为一般模型,根据不同的接入协议和系统结构可以衍化出一些变种:
变种 ①:协议层面,只有一个接入点。
Stream AP 融入到 Session AP 中,使用会话通道直接传输媒体数据,RTMP/SRT/HDL/HLS/DASH 都属于这种模式。简化后的系统结构如下所示:
虽然媒体通道复用了会话通道,但是握手/协商的过程仍然存在。
变种 ②:系统结构层面,一个 Session AP 对应多个 Stream AP
Session AP 与 Stream AP 为一对多关系,一个 Session AP 管理和维护一个或多个 Stream AP Group。简化后的系统结构如下所示:
0x02 媒体接入服务的操作对象
类比与 HTTP 中的 URI,媒体接入服务中的 Stream (为了讨论方便,这里暂不考虑 Stream 和 Track 的区别) 是一种资源对象 (resource)。
媒体服务对于资源的操作可以包括:
- Publish: 由 endpoint 创建 resource 并推送媒体;
- Ingest:由 server 创建 resource 并接收媒体;
- Subscribe:由 endpoint 创建 resource 并接收媒体;
- Forward:由 server 创建资源并发送媒体;
其中:
- Publish 操作比较典型的实例: RTMP publish;
- Subscribe 操作比较典型的实例: RTMP play,HLS;
- Ingest 操作比较典型的实例:摄像头接入场景的 ONVIF/RTSP;
- Forward 操作比较典型的实例:媒体垮节点分发;推送到第三方平台;
- 基于以上 4 种操作的叠加可以衍生出新的操作:
- Publish + Forward;
- Ingest + Forward;
参考文档
- What is RTMP Ingest and Why is it Important for Live Streaming