RTMP消息详细介绍
Posted 心之所向,素履以往
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RTMP消息详细介绍相关的知识,希望对你有一定的参考价值。
本文继上篇简单分析了RTMP协议如何进行通信进一步详细分析RTMP的消息都有哪些,以及这些消息有什么作用。
一、RMTP消息
由上一篇文章可知RTMP 消息有分成两个部分,一个是头部,一个是有效负载。服务器和客户端通过网络发送 RTMP 消息相互进行通讯。消息可以包括音频,视频,数据,甚至其它任何数据。
二、消息头
消息类型(Message Type):字段占用 1 字节来表示消息类型。类型的 ID 范围在(1-6)保留给协议控制消息。
长度(Length):字段占用 3 字节来表示有效负荷以字节为单位的长度。
时间戳(Timestamp):字段占用 4 字节来表示消息的时间戳。
消息流 ID(Message Stream Id):字段占用 3 字节来消息流的 ID。
三、有效负载
消息的其它部分就是有效负载,这是包含在消息中的实际数据。
四、消息分类
RTMP 消息可以是任意类型的,包括音频消息,视频消息,复合消息,命令消息,共享对象消息,数据消息、用户控制消息和协议控制消息。
用户控制消息:RTMP 使用类型 ID 为 4 的消息做为用户控制消息,用户控制消息应该(SHOULD)消息流 ID 0(称为控制流),并且通过 RTMP 块流发送,使用块流 ID 为 2。
协议控制消息:RTMP 块流使用类型为 1、2、3、5 和 6 的消息用于协议控制消息。这些消息包含 RTMP块流协议需要的信息。这个协议控制消息必须(MUST)使用 ID 为 0 消息流(称为控制流)并且用 ID 为 2 块流发送。协议控制消息在接收到时尽快处理。
命令消息:在客户端与服务器之间传递 AMF 编码的命令。消息类型 ID 为 20 用于表示AMF0 编码,消息类型 ID 为 17 用于 AMF3 编码。
音视频消息:客户端或服务器发送这个消息来向对象发送音频数据,类型为 8 的消息保留给音频消息,类型为 9 的消息保留给视频消息。
复合消息:复合消息是包含多个子消息的一个单独的消息,类型为 22 的消息用作复合消息。
元数据消息:客户端用这个消息向对端发送 Metadata 或者任意的用户数据。Metadata 包函了数据(音频、视频)的详细信息,像创建时间,时长,主题等等。这些消息使用消息类型 18 表示 AMF0,用消息类型 15 来表示 AMF3。
共享对象:共享对象是一个 Flash 对象(一个键值对的集合),用来同步多个客户端,应用实例等等。消息类型为 19 表示使用 AMF0,16 保留用作 AMF3 编码共享事件。
在以上类型中,协议控制消息被chunk流使用,其余类型消息都用来客户端和服务端通信。
关于各种类型的详细描述,请参考rmtp消息协议.pdf
以上是关于RTMP消息详细介绍的主要内容,如果未能解决你的问题,请参考以下文章
Android消息机制(HandlerMessageQueueLooper)详细介绍
RabbitMQ消息队列: Detailed Introduction 详细介绍