1、RTMP传输基本流程
RTMP 视音频数据流程
发送端
-
Step 1: 把数据封装成消息(Message)。
-
Step 2: 把消息分割成消息块(Chunk, 网络中实际传输的内容)。
-
Step 3: 将分割后的消息块(Chunk)通过TCP协议发送出去。
接收端:
-
Step 1: 在通过TCP协议收到数据后, 先将消息块重新组合成消息(Message)。
-
Step 2: 通过对消息进行解封装处理就可以恢复出数据。
RTMP的突出优点是: 延时低,正常延时1~3秒,理想的话直播可控制在1秒之内。 它是怎么做到的? 有什么好的设计思想?
2、RTMP设计思想
RTMP设计思想
2.1 大而化小 轻车简行
RTMP协议中基本的数据单元称为消息(Message)。 在互联网中传输数据时, 消息(Message)会被拆分成更小的单元, 称为消息块(Chunk). 大的Message被切割成利于在网络上传输的小Chunk,个人认为这是RTMP之所以延时低的核心原因。
Message被拆分成Chunk
切成小块, 还可防止大的数据块(如视频数据)阻塞小的数据块(如音频数据或控制信息)。
2.2 本是天涯同路人 你方唱罢我登场
RTMP基于TCP协议,包括控制信息、视频数据、音频数据都共用同一个TCP Connection。 也就是说路只有一条。而且同一时间只允许一辆车通过。 生成好的视频Chunk和音频Chunk,依次上路。
Video Chunk和Audio Chunk在网络上的传输顺序 示意图
这就涉及到RTMP中一个非常重要的概念: 复用。 RTMP协议开篇是这么介绍的:
Abstract This memo describes Adobe’s Real Time Messaging Protocol (RTMP), an application-level protocol designed for multiplexing and packetizing multimedia transport streams (such as audio, video, and interactive content) over a suitable transport protocol (such as TCP).
其中multiplexing就是复用的意思,指的就是将独立的音视频数据整合到一个数据流,让音视频流可以同步传输的过程。 RTMP直播中,实时生成视频Chunk和音频Chunk&