赞
踩
可以使用UltraEdit 分析。 将 flv 文件直接拖入到 UE 中。
使用 mediainfo 工具进行分析。
然后将flv 文件拖入 mediainfo工具中
我们这里使用 believe.flv文件做为标准分析结果如下:
Tag Body 对于tag type = 18,对应16进制为0X12来说:表示的是Script Tag Data,script tag data 的数据结构会在后面的具体讲解,这里只是对于一个简单的描述。
从data size 中看到,tag data的大小是 0x0000 01 8C,十进制是396.
那么从下图开始位置到下下图截止为止,就都是这个data 的数据,我们要做的是分析这个数据
第一个AMF包分析。
第⼀个AMF包: 第1个字节表示AMF包类型,⼀般总是0x02,表示字符串。
第2-3个字节为UI16类型值,标识字符串的⻓度,⼀般总是0x000A(“onMetaData”⻓度)。
后⾯字节为具体的字符串,⼀般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。
第二个AMF包分析。
第⼆个AMF包: 第1个字节表示AMF包类型,⼀般总是0x08,表示数组。
第2-5个字节为UI32类型值,表示数组元素的个数。
后⾯即为各数组元素的封装,数组元素为元素名称和值组成的对。常⻅的数组元素如下表所示
第⼆个AMF包: 第1个字节表示AMF包类型,⼀般总是0x08,表示数组。
第2-5个字节为UI32类型值,表示数组元素的个数。
后⾯即为各数组元素的封装,数组元素为元素名称和值组成的对。常⻅的数组元素如下表所示
If the SoundFormat indicates AAC, the SoundType should be set to 1 (stereo) and the SoundRate should be set to 3 (44 kHz).
However, this does not mean that AAC audio in FLV is always stereo, 44 kHz data.
Instead, the Flash Player ignores these values and extracts the channel and sample rate data is encoded in the AAC bitstream.
如果SoundFormat指示AAC,则SoundType应设置为1(立体声),SoundRate应设置为3(44 kHz)。
然而,这并不意味着FLV中的AAC音频总是立体声的,44kHz的数据。
相反,Flash Player会忽略这些值,并提取信道和采样率数据被编码在AAC比特流中。
AudioTagHeader如上图所示,占1个字节,包含audio的各种信息。其后就是audio tag的data部分。
这里有一个特例,如果音频格式(SoundFormat)是10 = AAC,AudioTagHeader中会多出1个字节的数据AACPacketType,这个字段来表示AACAUDIODATA的类型:0 = AAC sequence header,1 = AAC raw。
AAC sequence header也就是包含了AudioSpecificConfig,AudioSpecificConfig包含着一些更加详细音频的信息,AudioSpecificConfig的定义在ISO14496-3中1.6.2.1 AudioSpecificConfig。在FLV的文件中,一般情况下 AAC sequence header 这种包只出现1次,而且是第一个audio tag。
AAC raw 这种包含的就是音频ES流了,也就是audio payload。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。