rtmp中flv和flv文件的区别

本文详细解析了RTMP与FLV两种流媒体协议的格式差异,包括RTMP包头长度、timestamp表达方式及body内容的区别,以及FLV文件tag头长度固定性与额外长度信息的特性。

rtmp中flv:

ecb88fb10c4973eefb3f540cd4ba32bf3ea.jpg

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

03508469354f0d9783101d03286ebdcb0d2.jpg

* 当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文件:

a25b0fe59511ad2c9c2967444c6778740e4.jpg

* 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。

 

转载于:https://my.oschina.net/u/2326611/blog/3072777

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值