RMTP消息格式

Posted 顾文繁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RMTP消息格式相关的知识,希望对你有一定的参考价值。

先放一张网络资源的图。

这里的RTMP Header和RTMP Body是把传输层的外壳剥掉之后的内容,其实就是TCP建立连接以后的数据,这些头再经过RTMP服务端和客户端解析这些数据。

RTMP Header

Basic Header

Basic Header中format和Chunk Stream ID一共占用1个字节。
format占用2位,Chunk Stream占用6位。
如果Chunk Stream在2~63之间,则不再扩展Basic Header。如果为0或者1分别进行扩展Basic Header ID一个和3个。

Message Header

Message Header最大包括4部分。当format(2位最大能表示3个数)为10(binary)是Message Header只分配Timestamp,当format为01(binary)时,分配Body Size和Type ID,当format为11(binary)时候,出了分配Timestamp、Body Size和Type ID还有Stream ID

Extended Timestamp

当TimeStamp为十六进制数0xFFFF时候,分配Extended Timestamp

RTMP Body

Control(1byte)

Control(8位)前4位在Video Data中存放那种类型的GOP帧(keyframe、interframe或者p帧),在后四位中表示Video Data 的格式(属于什么编码器数据)
Control 在音频中,前四位表示音频编码格式,后两位表示音频采样率,其余后两位分别表示采样大小,通道。

Video/Audio/Body

这里才是真正的音视频编码后的数据。

RTMP控制消息

以上是关于RMTP消息格式的主要内容,如果未能解决你的问题,请参考以下文章

window 下搭建流媒体服务器ffmpeg nginx-rmtp-module

SIP消息的SIP消息格式

RocketMQ 自定义消息与延迟消息

如何使用 celery worker 从 SQS 轮询消息,消息为 JSON 格式,并且 worker 无法解码该格式

MIDI 消息的 OSC 消息格式

Android:接收消息时出现 XMPP 消息格式问题