为了方便查阅,把RTMP协议的包头记录下来,以便参考:

RTMP协议在握手完成以后,服务器与客户端通过包(chunk)来进行信令交换。

包(thunk)格式如下

每个包有包头与数据组成。而包头自身是由三部分组成:
       包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。
       包体最大长度默认为128字节,通过chunkSize可改变包体最大长度,通常当一段AFM数据超过128字节后,超过128的部分就放到了其他的RTMP封包中,包头为一个字节. 
完整的12字节RTMP包头每个字节的含义: 
用途                     大小(Byte)            含义 
Head_Type               1                      包头 
TiMMER                    3                      时间戳 
AMFSize                   3                      数据大小 
AMFType                  1                      数据类型 
StreamID                  4                      流ID 
一、Head_Type 
第一个字节Head_Type的前两个Bit决定了包头的长度.它可以用掩码0xC0进行"与"计算: 
Head_Type的前两个Bit和长度对应关系: 
Bits        Header  Length 
00         12 bytes 
01          8 bytes 
10          4 bytes 
11          1 byte 
Head_Type的后面6个Bit和StreamID决定了ChannelID。
StreamID和ChannelID对应关系:StreamID=(ChannelID-4)/5+1 参考red5 
ChannelID     用途
02                  Ping 和ByteRead通道 
03                  Invoke通道 我们的connect() publish()和自字写的NetConnection.Call() 数据都是在这个通道的 
04                  Audio和Vidio通道 
05 06 07        服务器保留,经观察FMS2用这些Channel也用来发送音频或视频数据 
例如:在rtmp包里面经常看到的0xC2, 就表示一字节的包头,channelID=2.。

RTMP 协议包头参考相关推荐

  1. RTMP协议中文翻译(首发)(转)

    Adobe公司的实时消息传输协议 摘要 此备忘录描述了 Adobe公司的实时消息传输协议(RTMP),此协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和 ...

  2. 通过 wireshark 抓包了解直播流媒体 RTMP 协议基本过程

    作者:Elias Zhang 声网资深工程师,拥有从Iaas层的基础信息存储服务到paas层的云服务的职业经历,喜欢python语言,习惯使用C#,熟悉基于和结合CDN的业务产品架构,点播.直播.云导 ...

  3. 音视频 RTMP协议分析

    理解字节序 大小端模式 理解字节序 Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端:Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的 ...

  4. MediaCodec 、x264、faac 实现音视频编码并通过 rtmp 协议实现推流

    前言 咱们回顾一下前面 2 篇文章,主要讲解了如何搭建 rtmp 直播服务器,和如何开发一款具有拉流功能的 Android 播放器.那么现在有了播放端和直播服务器还缺少推流端.该篇文章我们就一起来实现 ...

  5. RTMP协议解析(一) —— 基本了解

    版本记录 版本号 时间 V1.0 2017.09.04 前言 大家都知道很多视频应用的app中都是使用RTMP格式的协议,这个是国际上共同使用的协议,我自己虽然做过了直播类型的app,但是从没时间深入 ...

  6. RTMP协议之AMF数据

    一.RTMP组成 1.RTMP包头 RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4,  1 byte(s).完整的RTMP包头应该是12bytes,包含了时 ...

  7. nginx搭建rtmp协议流媒体服务器总结

    最近在 ubuntu12.04+wdlinux(centos)上搭建了一个rtmp服务器,感觉还挺麻烦的,所以记录下. 大部分都是参考网络上的资料. 前提: 在linux下某个目录中新建一个nginx ...

  8. C++实现RTMP协议发送H.264编码及AAC编码的音视频

    C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司 ...

  9. (转)RTMP协议从入门到放弃

    转载自:  http://blog.csdn.net/shangmingyang/article/details/50837852 RTMP协议是Real Time Message Protocol( ...

最新文章

  1. 更改zabbix-server的端口
  2. shell 获取文件最后一行
  3. jQuery.extend与jQuery.fn.extend的区别
  4. Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
  5. 免费下载 | 超全算法题精解,一本能“在线”编程的面试宝典
  6. redis分布式缓存(二)
  7. db2 创建样本数据库_db2创建数据库
  8. python写接口测试代码_python写运单接口测试(增改查)完整代码
  9. java实现123n_java三线程交替打印123……n
  10. 嫌Python太慢了?让Cython带你飙车吧
  11. 江苏省计算机考试Python用书,【关注】Python列入高考内容以及全国计算机等级考试!...
  12. JSP Include 文件方式
  13. vga焊接线顺序_VGA线的焊接方法,15线与7线分别如何焊接?
  14. r语言如何计算t分布临界值_「SPSS数据分析」SPSS差异分析(3)独立样本T检验操作步骤及解读...
  15. c++语言计算2的n次方,2的N次方
  16. 非结构化数据分析技术是忽悠
  17. 光线追踪学习:GPU端光线追踪学习
  18. 五款最佳VMware vSphere免费管理工具
  19. HtmlUnit的入门教程整理
  20. 互联网+智能化实验室建设将成发展趋势

热门文章

  1. INDEX建立方式对SQL的影响
  2. iOS从零开始学习直播之音频4.歌词
  3. KeyMob聚合平台:为开发者塑造广告变现形式
  4. VMware vSphere 5.1 vCenter安装
  5. 开源大数据:MLSQL
  6. Android开源库集合(UI效果)
  7. ViT (Vision Transformer) ---- Transformer Model(2)
  8. linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解
  9. 数据库树形结构,EasyUI Tree 树
  10. Android 12原生设计曝光,Android 12原生设计曝光 网友看了惊呼神似iOS