06 RTMP Message Formats

RTMP 消息格式

本节指定使用较低级别的传输层(如RTMP区块流)在网络上的实体之间传输的RTMP消息的格式。

虽然RTMP设计用于处理RTMP区块流,但它可以使用任何其他传输协议发送消息。RTMP块流 和 RTMP 一起适用于各种音频视频应用,从一对一和一对多直播到视频点播服务再到交互式会议应用。

RTMP 消息格式

服务器和客户端通过网络发送RTMP消息以相互通信。这些消息可以包括音频、视频、数据或任何其他消息。

RTMP消息有两部分,一个头部和它的有效负载。

消息头部(Message Header)

消息头包含以下内容:

  • Message Type : 表示消息类型的单字节字段。为协议控制消息(protocol control messages)保留了一系列类型ID(1-6)。
  • Length : 以字节为单位表示有效负载大小的三字节字段。它是以大端格式设置的。
  • Timestamp : 包含消息时间戳的四字节字段。4个字节按大端顺序打包。
  • Message Stream Id : 标识消息流的三字节字段。这些字节以大端格式设置。
                  0               1               2               3
                  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                 |  Message Type |                 Payload length                |
                 |     (1 byte)  |                   (3 bytes)                   |
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                 |                             Timestamp                         |
                 |                             (4 bytes)                         |
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                 |                   Stream ID                   |
                 |                   (3 bytes)                   |
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                         Message Header

消息负载(Message Payload)

消息的另一部分是有效负载,它是消息中包含的实际数据。例如,它可能是一些音频样本或压缩视频数据。有效载荷格式和解释超出了本文件的范围。

用户控制信息(User Control Messages 4)

RTMP将消息类型ID 4用于用户控制消息(User Control messages)。这些消息包含RTMP流媒体层使用的信息。RTMP区块流协议使用ID为1、2、3、5和6的协议消息。

用户控制消息应使用消息流(message stream)ID 0(称为控制流),当通过RTMP块流(Chunk Stream)发送时,应在块流ID 2上发送。用户控制消息在流中接收时有效;它们的时间戳被忽略。

客户端或服务器发送此消息以通知对等方用户控制事件。此消息包含事件类型和事件数据。

                 +------------------------------+-------------------------
                 |     Event Type (16 bits)     | Event Data
                 +------------------------------+-------------------------
                     Payload for the ‘User Control’ protocol message

消息数据的前2个字节用于标识事件类型。事件类型后跟事件数据。事件数据字段的大小是可变的。但是,在消息必须通过RTMP块流层的情况下,最大块的大小应足够大,以允许这些消息适合单个块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值