RTMP 协议包头参考
为了方便查阅,把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 协议包头参考相关推荐
- RTMP协议中文翻译(首发)(转)
Adobe公司的实时消息传输协议 摘要 此备忘录描述了 Adobe公司的实时消息传输协议(RTMP),此协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和 ...
- 通过 wireshark 抓包了解直播流媒体 RTMP 协议基本过程
作者:Elias Zhang 声网资深工程师,拥有从Iaas层的基础信息存储服务到paas层的云服务的职业经历,喜欢python语言,习惯使用C#,熟悉基于和结合CDN的业务产品架构,点播.直播.云导 ...
- 音视频 RTMP协议分析
理解字节序 大小端模式 理解字节序 Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端:Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的 ...
- MediaCodec 、x264、faac 实现音视频编码并通过 rtmp 协议实现推流
前言 咱们回顾一下前面 2 篇文章,主要讲解了如何搭建 rtmp 直播服务器,和如何开发一款具有拉流功能的 Android 播放器.那么现在有了播放端和直播服务器还缺少推流端.该篇文章我们就一起来实现 ...
- RTMP协议解析(一) —— 基本了解
版本记录 版本号 时间 V1.0 2017.09.04 前言 大家都知道很多视频应用的app中都是使用RTMP格式的协议,这个是国际上共同使用的协议,我自己虽然做过了直播类型的app,但是从没时间深入 ...
- RTMP协议之AMF数据
一.RTMP组成 1.RTMP包头 RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时 ...
- nginx搭建rtmp协议流媒体服务器总结
最近在 ubuntu12.04+wdlinux(centos)上搭建了一个rtmp服务器,感觉还挺麻烦的,所以记录下. 大部分都是参考网络上的资料. 前提: 在linux下某个目录中新建一个nginx ...
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司 ...
- (转)RTMP协议从入门到放弃
转载自: http://blog.csdn.net/shangmingyang/article/details/50837852 RTMP协议是Real Time Message Protocol( ...
最新文章
- 更改zabbix-server的端口
- shell 获取文件最后一行
- jQuery.extend与jQuery.fn.extend的区别
- Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
- 免费下载 | 超全算法题精解,一本能“在线”编程的面试宝典
- redis分布式缓存(二)
- db2 创建样本数据库_db2创建数据库
- python写接口测试代码_python写运单接口测试(增改查)完整代码
- java实现123n_java三线程交替打印123……n
- 嫌Python太慢了?让Cython带你飙车吧
- 江苏省计算机考试Python用书,【关注】Python列入高考内容以及全国计算机等级考试!...
- JSP Include 文件方式
- vga焊接线顺序_VGA线的焊接方法,15线与7线分别如何焊接?
- r语言如何计算t分布临界值_「SPSS数据分析」SPSS差异分析(3)独立样本T检验操作步骤及解读...
- c++语言计算2的n次方,2的N次方
- 非结构化数据分析技术是忽悠
- 光线追踪学习:GPU端光线追踪学习
- 五款最佳VMware vSphere免费管理工具
- HtmlUnit的入门教程整理
- 互联网+智能化实验室建设将成发展趋势
热门文章
- INDEX建立方式对SQL的影响
- iOS从零开始学习直播之音频4.歌词
- KeyMob聚合平台:为开发者塑造广告变现形式
- VMware vSphere 5.1 vCenter安装
- 开源大数据:MLSQL
- Android开源库集合(UI效果)
- ViT (Vision Transformer) ---- Transformer Model(2)
- linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解
- 数据库树形结构,EasyUI Tree 树
- Android 12原生设计曝光,Android 12原生设计曝光 网友看了惊呼神似iOS