RTMP集合消息详解
来源:互联网 发布:淘宝药店七乐康 假 编辑:程序博客网 时间:2024/06/07 14:24
想了解rtmp的可以先看看这篇博客:RTMP协议中文翻译(首发)
1.rtmp集合消息介绍
集合消息是一个独立消息,包含了一系列的RTMP消息,格式描述见6.1章。此消息的类型为22。
集合消息由消息头和消息内容组成,更准确的说应该是由多个flv tag组成,这里的消息头并不是指rtmp消息头,而是指flv tag头。
FLV文件格式官方规范详解
消息内容由子消息组成,子消息由消息头,消息数据,回放指针组成。
+---------+-------------------------+ | Header | Aggregate Message body | +---------+-------------------------+ The Aggregate Message format +--------+-------+---------+--------+-------+---------+ - - - - |Header 0|Message|Back |Header 1|Message|Back | | |Data 0 |Pointer 0| |Data 1 |Pointer 1| +--------+-------+---------+--------+-------+---------+ - - - - The Aggregate Message body format
集合消息的消息流ID覆盖此消息内的子消息流的ID。
集合消息和第一个子消息的时间戳之间的偏移量,用来将子消息的时间戳处理为流的时间刻度。每个子消息的时间戳可以通过添加偏移量来处理为正常的流时间。第一个子消息的时间戳应该和集合消息的时间戳相同,因此偏移量应该为零。
反向指针包含了以前的消息的大小。集合消息包含此字段,一是为了适配FLV文件格式,二是为了回放定位。
使用集合消息有如下几个优势:
块流在一个块内至多可以携带一条完整的消息。使用集合消息之后,不仅可以增加块大小,同时还减少了发送的块数量。
集合消息的子消息可以连续的存储在内存中。当系统调用网络发送数据时更高效。
2.rtmp集合消息例子
下面是程序打印出来一段rtmp集合消息(已经去掉了消息头和块头):
08 00 00 FF AA 05 9C D8 00 00 01 AF
01 21 1A D4 A5 B2 0F 62 71 59 94 C2
73 0A A2 B7 74 3A 15 78 D9 A2 D8 6B
…
//08:消息类型为音频
//00 00 FF:消息长度255(不包括消息头)
//AA 05 9C D8:timestamp=0xD8AA059C
//00 00 01:Stream ID=1
//AF:A表示音频格式=10(AAC)
接下来跳过中间的音频数据直接看下一个消息:
…
60 FE 00 00 00 FF 09 00 05 BC AA 05
B9 D8 00 00 01 27 01 00 00 28 00 00
00 02 09 50 00 00 00 10 06 01 01 04
…
//00 00 00 FF:Back Pointer占4个字节值与上个消息长度相等
//09:消息类型为视频
//00 05 BC:消息长度=0x0005BC(1468)
//AA 05 B9 D8:timestamp=0xD8AA05B9
//00 00 01:Stream ID=1
//27:2表示h264的普通帧,7表示视频编码为AVC
- RTMP集合消息详解
- [AS3]RTMP协议(实时消息传送协议)详解(2)
- RTMP详解
- RTMP详解
- RTMP详解
- RTMP详解
- RTMP中的Ping消息
- RTMP中的Ping消息
- rtmp的消息类型
- RTMP-消息格式
- RTMP使用参数集合
- RTMP Commands Messages (RTMP命令消息)
- RTMP Message Formats (RTMP消息格式)
- rtmp协议消息体介绍
- RTMP协议详解(转)
- RTMP协议详解(转)
- RTMP协议详解
- rtmp协议详解
- 装箱P37
- restTemplate Not enough variable values availabel
- LeetCode OJ-513.Find Bottom Left Tree Value
- Swift 中的SDWebImage类似库Kingfisher
- C# 如何读取配置Web.config中的数据
- RTMP集合消息详解
- android studio--调试---断点调试
- Android系统的版本号与API的对应表
- size_t ssize_t socklen_t 关系
- 关于Android VideoView导致的内存泄漏的问题
- 35. Search Insert Position
- markdown使用
- 版本控制工具——git
- Bundle Version String和Bundle Version 区别