RTMP规范协议

本文参照rtmp协议英文版,进行简单的协议分析

1、什么是RTMP

关于 Adobe 的实时消息协议(Real Time Messaging Protocol,RTMP),是一种多媒体的复用和分组的应用层协议,通过某种可靠的传输协议(例如 TCP)传输数据流(例如音频,视频和交互数据)。

2、字节序、对齐和时间戳

字节序:所有整数字段的表示都使用网络字节序,零字节在最前面显示,同时零位是字或字段的最重要的位(注:零位是符号位)。这种字节序通常被称为大端(big-endian)。

对齐:除了其它指定外,所有的 RTMP 协议都是单字节对齐的;比如说,一个 16 位的字段起始位置可能是一个奇数偏移。如果需要填充,填充字节应该(SHOULD)是 0。

时间戳:RTMP 中给定的时间戳是从一个未指定的时间点开始的相对时间的整数毫秒数。通常,每个流都将从时间戳为 0 为起始时间。

注:因为时间戳是 32 位长,它们将在 49 天,17 小时,2 分 47.296 秒后重新开始。由于流被要求持续不断的传输,可能要运行几年后才结束,所以 RTMP 应用程序在处理时间戳时应该(SHOULD)使用序列号算法(Serial NumberArithmetic),应该(SHOULD)能处理这个环绕的情形。比如

,应用程序应该认为所有相邻的时间戳之差都在 2^31-1 之内(译者注:2^31 表示 2 的 31 次方,32 位的无符号数最大能表示 2^32 - 1=4294967295),所 1000 应该在 4000000000 之后,而 3000000000 在 4000000000 之前。

3、消息

消息是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。消息的报文结构如图所示。

4、消息块

在网络上传输数据时,消息需要被拆分成较小的数据块,才适合在相应的网络环境上传输。RTMP协议中规定,消息在网络上传输时被拆分成消息块(Chunk)。消息块首部(Chunk Header)有三部分组成:用于标识本块的Chunk Basic Header,用于标识本块负载所属消息的Chunk Message Header,以及当时间戳溢出时才出现的Extended Timestamp。消息块的报文结构如图所示。

在消息被分割成几个消息块的过程中,消息负载部分(Message Body)被分割成大小固定的数据块(默认是128字节,最后一个数据块可以小于该固定长度),并在其首部加上消息块首部(Chunk Header),就组成了相应的消息块。消息分块过程如图5所示,一个大小为307字节的消息被分割成128字节的消息块(除了最后一个)。

RTMP传输媒体数据的过程中,发送端首先把媒体数据封装成消息,然后把消息分割成消息块,最后将分割后的消息块通过TCP协议发送出去。接收端在通过TCP协议收到数据后,首先把消息块重新组合成消息,然后通过对消息进行解封装处理就可以恢复出媒体数据。

原文地址:https://www.cnblogs.com/alvin2010/p/8571078.html

时间: 2024-08-02 16:03:37

RTMP规范协议的相关文章

Adobe 官方公布的 RTMP 规范

原文:  http://blog.csdn.net/defonds/article/details/17534903 RTMP 规范中文版 PDF 下载地址 译序:本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文包含 RTMP 规范的全部内容.是第一个比较全面的 RTMP 规范的中译本.由于成文时间仓促,加上作者知识面所限,翻译错误之处在所难免,恳请各位朋友热心指出,可以直接在博客后面留言,先行谢过.rtmp_specification_1.0.pdf 官方下载地址http

CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源      [[email protected] ~]# wget -c http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm      [[email protected] ~]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt      [[email 

rtmp官方协议详解

标准规范学习: rtmp消息结构,包括几个部分: 时戳:4  byte,单位毫秒.超过最大值后会翻转. 长度:消息负载的长度. 类型ID:Type Id 一部分ID范围用于rtmp的控制信令.还有一部分可以供上层使用,rtmp只是透传.这样可以方便的在rtmp上进行扩展. 消息流ID:Message Stream ID,用于区分不同流的消息. 两个ID的区别: Message stream:传输消息的逻辑通道. Message stream ID:每个消息都有一个流id,用于指明属于哪个流. C

rtmp/rtsp协议转GB/T28181电脑信号转网络信号解决方案

国标GB/T28181由公安部科技信息化局提出,该标准规定了城市监控报警联网系统中信息传输.交换.控制的互联结构.通信协议结构,传输.交换.控制的基本要求和安全性要求,以及控制.传输流程和协议接口等技术要求. GB/T28181不仅包括设备间的级联,也包含系统的级联,故并不矛盾.如网络摄像机通过ONVIF协议接入NVR,NVR在通过GB/T28181标准接入平台,或者网络摄像机通过ONVIF协议接入平台,平台间的级联通过GB/T28181规范进行.故ONVIF/PSIA.与GB/T28181往往

rtmp流媒体协议分析(h264、aac)

sound format:10, rate:3, size:1, type:1, pkt type:0audio obj type:2,sample frequency index:3,channel configuration:2bg57iv3Nal length 28 start code 4 bytes ,0.001 ref 3 type 7 Sequence parameter set   profile: 100   constaint_set0_flag: 0   constaint

调试libRTMP代码来分析RTMP协议

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写.该协议基于TCP,是一个协议族,常用在视频直播领域.RTMP协议的默认端口是1935. 学习一个协议最好的方法就是调试其通信过程,期间还可以使用wireshark抓包分析.本人在libRTMP的基础上添加了推流部分,并且使得整个过程变得可调试,学习其协议就变得简单多了.配置好的VS2010可调试的libRTMP工程:https://github.com/jiayayao/librtmp.该工程可以

实时消息传输协议 RTMP(Real Time Messaging Protocol)

原文: http://blog.csdn.net/defonds/article/details/17403225 译序:本文是维基百科关于 RTMP 的解释, 关于 RTMP 官方规范参见 RTMP 规范,关于 RTMP 官方规范的中文版,参见<Adobe 官方公布的 RTMP 规范>.以下是维基百科原文: 实时消息传输协议(RTMP)最初是由 Macromedia 为互联网上 Flash player 和服务器之间传输音频.视频以及数据流而开发的一个私有协议.Adobe 收购 Macrom

直播协议的选择:RTMP vs. HLS

前言 随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟人打招呼.想要做一个直播业务,主要包括三个部分:采集推流端.流媒体服务端.播放端.这里不多说,就主要结合 iOS 平台,从观看端出发,介绍一下对直播协议的选择. 通常在 iOS 平台做直播业务,会有两种协议可供选择:HLS 和 RMTP. HLS,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系

常用应用层协议HTTP、RTSP、RTMP比较

HTTP(超文本传输协议).RTSP(Real Time Streaming Protocol实时流传输协议).RTMP(Routing Table Maintenance Protocol路由选择表维护协议)是应用层协议,理论上都可以做直播.点播,实际上直播多采用RTMP和RTSP.点播则多用RTSP和HTTP. 一.常用领域: HTTP(HTTPS)所有数据都作为文本处理,广泛应用于网络访问,是公有协议,有专门机构维护. RTSP流媒体协议,多用在监控领域视频直播点播:是公有协议,有专门机构