大家好,我是苏承栈。今天我们来聊聊FLV、AAC、AVC这些常见的封装格式,怎么进行分析。
首先,我们得有个好工具,比如FLVAnalyser和WinHex。接下来,我们就来一步步拆解这些格式。
FLV格式分析
FLV格式的文件头是固定的9字节,包括文件标识、版本、标志和大小等信息。
FLV header (9 bytes)
Signature: FLV(3字节):文件标示
Version: 1 (0x01)(1字节):版本
Flags: 5 (0x05)(1字节):第六位标示音频,第七位保留,第八位标示视频
Video: Yes
Audio: Yes
Size: 9 (0x00000009)(4字节)
FLV文件体由多个Tag组成,每个Tag包含Tag头和Tag数据。
AAC格式分析
AAC格式有两种主要类型:ADIF和ADTS。ADIF格式适合在磁盘文件中使用,而ADTS格式则类似于mp3数据流格式。
ADTS格式的帧结构包括固定头部和可变头部,其中固定头部包含同步字、ID、层、保护缺失、配置等信息。
adts_frame - 0 (0x0) (378 bytes)
00000 adts_fixed_header (3 bytes) [28 bits]
00000 syncword: 4095 (0xFFF) - (12 bits)
00001 id: No - MPEG-4
00001 layer: 0 (0x0) - (2 bits)
00001 protection_absent: Yes
00002 profile_ObjectType: 1 (0x1) - (2 bits) - AAC LC
00002 sampling_frequency_index: 4 (0x4) - (4 bits) - 44100 (0xAC44) Hz
00002 private: No
00002 channel_configuration: 2 (0x2) - (3 bits)
00003 original: No :set to 0 when encoding, ignore when decoding
00003 home: No
00003 adts_variable_header (4 bytes)
00003 copyright_id: No
00003 copyright_id_start: No
00003 aac_frame_length: 378 (0x017A) - (13 bits)
00005 adts_buffer_fullness: 2047 (0x7FF) - (11 bits) - VBR
00006 num_raw_data_blocks: 0 (0x0) - (2 bits)
00007 raw_data_block (378 bytes)
00000 CPE - channel_pair_element (14 bytes)
00007 id_syn_ele: 1 (0x1) - (3 bits) - CPE - channel_pair_element
00003 FIL - fill_element (282 bytes)
0000E id_syn_ele: 这就是FLV、AAC、AVC封装格式的基本分析。希望对大家有所帮助。
我是苏承栈,关注极星编程网(www.jxgpc.com),了解更多编程知识。
