rtmp中flv:

* 当format为0时,rtmp的header为12字节,其中3字节表示timestamp,3字节表示body size,即rtmp单个包的长度。

* 当format为1时,rtmp的header为8字节(没有4字节的stream id),其中3字节表示delta timestamp,3字节表示body size,即rtmp单个包的长度。
* 当format为2时,rtmp的header为4字节(没有4字节的stream id,没有1字节的type id,没有3字节的body size),只有1个字节的chunk basic header和3个个字节的delta timestamp。
* 当format为3时,只有1个字节的chunk basic header。
body体表示的是音频或者视频的数据。
flv文件:

* flv每个tag的头都是11字节,tag头中3字节表示data size,即每个音频或者视频包的长度。另外每个tag的结束会有4个字节表示tag 头 +tag体的长度
区别:
1. flv文件中每个tag的头长度固定,都是11字节,其中timestamp都是绝对值;另外在每个tag的结束会有4字节previous tag size表示该tag的头+tag的body的长度。
2. rtmp中flv数据,rtmp packet 头的长度不固定,可能的取值为12,8,4,1.当chunk basic header中format为0时,timestamp为绝对值;当chunk basic header中format为1,2时,timestamp为相对值。rtmp flv中body体的内容和flv文件中的body体内容相同,但是没有4字节的previous tag size。
本文详细解析了RTMP与FLV两种流媒体协议的格式差异,包括RTMP包头长度、timestamp表达方式及body内容的区别,以及FLV文件tag头长度固定性与额外长度信息的特性。
597

被折叠的 条评论
为什么被折叠?



