FLV文件格式(Z)(转载)

刚才在看一些关于demux的东西,在处理flv格式的文件的时候,由于自己对flv文件的格式不了解,所以就比较云头转向,正好看到了一篇讲述flv文件格式的文章,写的比较明白,所以就转过来了。O(∩_∩)O~
flv头文件比较简单,由9个字节组成.

0-3:前3个字节是文件格式标识(FLV 464C56).
4-4:第4个字节是版本(0x01)
5-5:第5个字节的前5个bit是保留的必须是0.
         第5个字节的第6个bit音频类型标志(TypeFlagsAudio)
         第5个字节的第7个bit也是保留的必须是0
         第5个字节的第8个bit视频类型标志(TypeFlagsVideo)
6-9:第6-9的四个字节还是保留的.其数据为 00000009 .

文件内容是由4字节的0 开始,它标志着前一个tag的size(因为前一个tag为空,所以size为0).然后就是flv文件内容的第1个tag。tag类型为1个字节,有:8音频;9视频;18(0x12) 脚本数据;其它保留。每种tag有其特定类型。
1:如下图为data tag


data tags被flash player中的NetStream调用.一个meta包的内容由两个amf包组成.第一个(amf类型0x02)是基本上总是由2个字节带字符串长度+ 字符串组成,第二个(amf类型0x08)是由一个数组组成,数组中的各个元素是由不同类型组成。(The SWF file format uses 8-bit, 16-bit, 32-bit, 64-bit, signed, and unsigned integer types. All integer values are stored in the SWF file by using little-endian byte order.FLV files, unlike SWF files, store multibyte integers in big-endian byte order.)
data tags基本格式:


data tag数据组成(名字+数据):

上图中的数据分析如下:
0x12 data tag的类型标志.
000152 data tag的长度
000000 时间戳
00 时间戳扩展
000000 流id

0x02 data object的类型标志
000A object name的长度
6F6E4D65746144617461 object name(onMetaData)
08 第二个amf. data array的类型标志
0000000E 数组的长度
000D object name的长度
617564696F6461746172617465 object name(audiodatarate)
00 double类型数据标志
404C354DDA204355 double类型的数据值

2:如下图为 视频tag
视频 tags基本格式:


视频tags的数据:
/*----------------------------

帧类型 4bit
1: 关键帧keyframe(视频中的关键帧,数据存储的是整个画面完整的数据,可以提取它来生成图片)
2: 中间帧inter frame(关键帧之间的状态,不完整的画面数据,需要依靠前面帧的数据生成)
3: 可任意使用的中间帧disposable inter frame(H.263 only)

视频编码id 4bit
2: Sorenson H.263(mencoder转换所使用的视频编码)
3: Screen video
4: On2 VP6
5: On2 VP6 with alpha channel
6: Screen video version 2

视频数据 
If CodecID = 2
H263VIDEOPACKET
If CodecID = 3
SCREENVIDEOPACKET
If CodecID = 4
VP6FLVVIDEOPACKET
If CodecID = 5
VP6FLVALPHAVIDEOPAC
KET
If CodecID = 6
SCREENV2VIDEOPACKET

3:如下图为音频tag
音频tags基本格式:
/*---------------------------
tag数据大小 3个字节的音频数据大小 
tag时间戳 3个字节tag数据应用的时间(毫秒)
tag时间戳扩展 1个字节的时间戳扩展,让时间戳变成4字节,本字节作为时间戳的高位.
streamID 3个字节的类id,总是0
//-----------------------------------------------------------------------------------------------------------
音频tags的数据:
音频格式的数据的组成如下:
音频格式 4bit 0是未压缩的,1是ADPCM,2是mp3,5是Nellymoser 8kHz,6是Nellymoser.
音频率 2bit 0 = 5.5 kHz
   1 = 11 kHz
   2 = 22 kHz
   3 = 44 kHz
音频大小 1bit 0 = snd8Bit
   1 = snd16Bit
音频类型 1bit 0 = sndMono
   1 = sndStereo
音频数据 1个字节的音频数据大小,不同的音频数据格式

Nellymoser 8kHz 是一个特殊的类型—8kHz取样率在其它格式中不被支持.当音频的格式是Nellymoser 8kHz mono的时候,声音率和声音类型被忽略了. 对于其它的 Nellymoser取样率,音频格式和音频率照常.
参考资料:
flv文件格式解读:www.roading.net/blog/post_102.html
flv相关资源:blog.csdn.net/everlastinging/archive/2007/12/15/1939117.aspx
SWF and FLV File Format Specification License Agreement(flv格式文档下载):www.adobe.com/licensing/developer/fileformat/license/

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值