RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。
1 消息
消息是RTMP协议中基本的数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分别发挥着不同的作用。例如,Message Type ID在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据。Message Type ID为8,9的消息分别用于传输音频和视频数据。Message Type ID为15-20的消息用于发送AMF编码的命令,负责用户与服务器之间的交互,比如播放,暂停等等。消息首部(Message Header)有四部分组成:标志消息类型的Message Type ID,标志消息长度的Payload Length,标识时间戳的Timestamp,标识消息所属媒体流的Stream ID。消息的报文结构如图3所示。
消息
2 消息块
在网络上传输数据时,消息需要被拆分成较小的数据块,才适合在相应的网络环境上传输。RTMP协议中规定,消息在网络上传输时被拆分成消息块(Chunk)。消息块首部(Chunk Header)有三部分组成:用于标识本块的Chunk Basic Header,用于标识本块负载所属消息的Chunk Message Header,以及当时间戳溢出时才出现的Extended Timestamp。消息块的报文结构如图4所示。
消息块
3 消息分块
在消息被分割成几个消息块的过程中,消息负载部分(Message Body)被分割成大小固定的数据块(默认是128字节,最后一个数据块可以小于该固定长度),并在其首部加上消息块首部(Chunk Header),就组成了相应的消息块。消息分块过程如图5所示,一个大小为307字节的消息被分割成128字节的消息块(除了最后一个)。
RTMP分块
RTMP传输媒体数据的过程中,发送端首先把媒体数据封装成消息,然后把消息分割成消息块,最后将分割后的消息块通过TCP协议发送出去。接收端在通过TCP协议收到数据后,首先把消息块重新组合成消息,然后通过对消息进行解封装处理就可以恢复出媒体数据。
RTMP协议规范(中文翻译):http://download.csdn.net/detail/leixiaohua1020/6563059
相关推荐
- **版权与许可**:文档中明确指出,RTMP规范的版权归属于Adobe Systems Incorporated,用户需接受协议中的条款才能获取实施RTMP规范的许可。 - **实施限制**:文档规定了用户不得擅自复制、复印、翻译或转换RTMP...
ffplay 是一个简单的媒体播放器,基于FFmpeg库构建。它可以直接播放音频和视频文件,支持多种格式,包括网络流。ffplay通过解码音频和视频流,并将其显示在屏幕上,为用户提供了直观的媒体播放体验。此外,它还允许...
1. **直播技术**:直播系统的核心技术涉及音视频编码、传输协议(如RTMP、HLS、DASH)、流媒体服务器(如Nginx-RTMP模块、Wowza、Adobe Media Server)等。 2. **Java后端开发**:Java Spring Boot、Spring MVC等...
七牛云提供了SDK,支持RTMP、HLS等传输协议,开发者需要理解这些协议的工作原理,并能正确集成到小程序中。 4. **后端开发**:虽然描述中提到包含简单的后端代码,这通常指的是处理认证、权限控制、推拉流凭证生成...
作者以专家的洞察力分析了网络的运作过程和工作机理,并深入到技术背后的概念和原理,帮助读者获得对可用的解决方案的更深理解。本书适用于作为大专院校计算机专业本科生网络课程的教材,也适用于从事网络研究的技术...