跳转到主内容
极星编程网:以代码为星,赴技术山海!

FLV、AAC、AVC封装格式,怎么分析?

大家好,我是苏承栈。今天我们来聊聊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),了解更多编程知识。

相关文章