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。