音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析

一、ADTS格式的AAC裸流实例分析

在《音视频入门基础:AAC专题(3)------AAC的ADTS格式简介》中对AAC的ADTS格式进行了简介。下面用一个具体的例子来对ADTS格式的AAC裸流进行分析。

通过《音视频入门基础:AAC专题(2)------使用FFmpeg命令生成AAC裸流文件》生成的AAC裸流文件就是ADTS格式的。用notepad++打开该文件,下图红框中的数据为文件头(header),可以看到Header为:0xFF F1 50 80 03 9F FC,也就是二进制的0b11111111 11110001 01010000 10000000 00000011 10011111 11111100(注:这里是因为先知道了Header里面没有CRC校验,所以才确定它为7个字节):

(一)adts_fixed_header

syncword:占12位,每个位都必须被设置为1,也就是0b111111111111,用于标识ADTS帧的起始位置:

ID:占1位,值为0表示音频数据是MPEG-4 AAC:

**layer:**占2位,总被设置为00:

protection_absent:占1位,值为1表示CRC校验不存在:

profile_ObjectType:占2位。值为1表示规格是AAC LC。该版本是AAC标准的基本部分,其中"LC"代表"Low Complexity",意味着该编码器使用较少的计算资源来实现高质量的音频压缩:

samplingFrequencyIndex:占4位。值为0b0100,也就是十进制的4表示音频采样频率为44100Hz:

private_bit:占1位,没用:

channel_configuration:占3位。值为0b010,也就是十进制的2表示是双声道:

original_copy:占1位。值为0表示编码的比特流没有版权:

home:占1位。值为0表示比特流是一个拷贝:

(二)adts_variable_header

copyright_identification_bit:占1位。为72位版权标识字段中的一位:

copyright_identification_start:占1位。值为0表示没有版权标识传输:

aac_frame_length:占13位。值为0b11100,也就是十进制的28表示整个ADTS音频帧的长度为28字节:

adts_buffer_fullness:占11位。值为0b11111111111,也就是0x7FF,表示比特流是可变速率比特流:

number_of_raw_data_blocks_in_frame:占2位。值为0表示该ADTS音频帧中只有一个AAC原始数据块:

二、使用工具分析AAC裸流文件

实际开发中我们一般都是使用工具去分析AAC的Header。比如AAC Audio ES Viewer(在Download - Jongbel Media Solutions 可以下载):

用Elecard Stream Analyzer工具也可以分析AAC的Header:

相关推荐
summerkissyou198713 小时前
Android-Audio-为啥不移到packages/module
android·音视频
骄傲的心别枯萎14 小时前
RV1126 NO.56:ROCKX+RV1126人脸识别推流项目之VI模块和VENC模块讲解
人工智能·opencv·计算机视觉·音视频·rv1126
骄傲的心别枯萎14 小时前
RV1126 NO.55:ROCKX+RV1126人脸识别推流项目讲解
opencv·计算机视觉·音视频·rv1126
ACP广源盛1392462567314 小时前
GSV1015@ACP#1015/2015产品规格详解及产品应用分享
单片机·嵌入式硬件·音视频
昨日之日200615 小时前
Fun-ASR - 多语言多方言的高精度语音识别软件 支持50系显卡 一键整合包下载
人工智能·音视频·语音识别
猫天意17 小时前
【即插即用模块】AAAI2025 | 高频 + 空间感知!新 HS-FPN 让“极小目标”不再消失!SCI保二区争一区!彻底疯狂!!!
网络·人工智能·深度学习·学习·音视频
小曾同学.com19 小时前
音视频中的“透传”与“DTS音频”
ffmpeg·音视频·透传·dts
Yutengii20 小时前
如何下载抖音视频到本地(全攻略)
音视频
八八在线工具20 小时前
高效安全的M3U8 TS分片合并利器:88在线工具TS Merge深度解析
安全·音视频
EasyCVR21 小时前
视频融合平台EasyCVR网络不稳定的情况下如何让服务正常运行
音视频