acc之ADTS解说一

news/2024/11/29 21:45:06/

AAC概述
AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。

AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码,LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率(>=80Kbps),HE-AAC(相当于AAC+SBR)主要用于中低码(<=80Kbps),而新近推出的HE-AACv2(相当于AAC+SBR+PS)主要用于低码率(<=48Kbps),事实上大部分编码器设成<=48Kbps自动启用PS技术,而>48Kbps就不加PS,就相当于普通的HE-AAC。

AAC特点
(1)AAC是一种高压缩比的音频压缩算法,但它的压缩比要远超过较老的音频压缩算法,如AC-3、MP3等。并且其质量可以同未压缩的CD音质相媲美。
(2)同其他类似的音频编码算法一样,AAC也是采用了变换编码算法,但AAC使用了分辨率更高的滤波器组,因此它可以达到更高的压缩比。
(3)AAC使用了临时噪声重整、后向自适应线性预测、联合立体声技术和量化哈夫曼编码等最新技术,这些新技术的使用都使压缩比得到进一步的提高
(4)AAC支持更多种采样率和比特率、支持1个到48个音轨、支持多达15个低频音轨、具有多种语言的兼容能力、还有多达15个内嵌数据流。
(5)AAC支持更宽的声音频率范围,最高可达到96kHz,最低可达8KHz,远宽于MP3的16KHz-48kHz的范围。
(6)不同于MP3及WMA,AAC几乎不损失声音频率中的甚高、甚低频率成分,并且比WMA在频谱结构上更接近于原始音频,因而声音的保真度更好。专业评测中表明,AAC比WMA声音更清晰,而且更接近原音。
(7)AAC采用优化的算法达到了更高的解码效率,解码时只需较少的处理能力。

AAC音频文件格式
ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。
简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。

这里主要介绍AAC的ADTS格式
AAC音频文件的每一帧都由一个ADTS头和AAC ES(AAC音频数据)组成。
在这里插入图片描述
ADTS头包含了AAC文件的采样率、通道数、帧数据长度等信息。ADTS头分为固定头信息和可变头信息两个部分,固定头信息在每个帧中的是一样的,可变头信息在各个帧中并不是固定值。ADTS头一般是7个字节((28+28)/ 8)长度,如果需要对数据进行CRC校验,则会有2个Byte的校验码,所以ADTS头的实际长度是7个字节或9个字节。

固定头信息:adts_fixed_header()
ADTS头的固定头信息在每个帧中都是一样的。
在这里插入图片描述
syncword:帧同步标识一个帧的开始,固定为0xFFF
ID:MPEG 标示符。0表示MPEG-4,1表示MPEG-2
layer:固定为’00’
protection_absent:标识是否进行误码校验。0表示有CRC校验,1表示没有CRC校验
profile:标识使用哪个级别的AAC。1: AAC Main 2:AAC LC (Low Complexity) 3:AAC SSR (Scalable Sample Rate) 4:AAC LTP (Long Term Prediction)
sampling_frequency_index:标识使用的采样率的下标
private_bit:私有位,编码时设置为0,解码时忽略
channel_configuration:标识声道数
original_copy:编码时设置为0,解码时忽略
home:编码时设置为0,解码时忽略
在这里插入图片描述
2.2 可变头信息:adts_variable_header()
在这里插入图片描述
copyrighted_id_bit:编码时设置为0,解码时忽略
copyrighted_id_start:编码时设置为0,解码时忽略
aac_frame_length:ADTS帧长度包括ADTS长度和AAC声音数据长度的和。即 aac_frame_length = (protection_absent == 0 ? 9 : 7) + audio_data_length
adts_buffer_fullness:固定为0x7FF。表示是码率可变的码流
number_of_raw_data_blocks_in_frame:表示当前帧有number_of_raw_data_blocks_in_frame + 1 个原始帧(一个AAC原始帧包含一段时间内1024个采样及相关数据)。


http://www.ppmy.cn/news/805877.html

相关文章

Java借助ffmpeg进行音视频的格式转换(如m4a转mp3)

FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用 LGPL 或GPL 许可证(依据你选择的组件) FFmpeg 官网: FFMPEG分为3个版本:Static,Shared,Dev。 前两个版本可以直接在命令行中使用,他们的区别在于: Static里面只有3个应用程序:ffmpeg.exe,ffp…

MediaCodec AudioTrack 硬解AAC格式音频(二)

在上一篇文章介绍了 MediaCodec AudioRecord 硬编 AAC 格式音频&#xff0c;这篇介绍如何用 MediaCodec 硬解码 AAC 文件&#xff0c;并使用 AudioTrack 播放&#xff0c;总体相对而言遇到的坑比硬编要少一些。 介绍 MediaCodec MediaCodec 是 Android 用于音视频编解码的一…

计算机硬件acc作用,累加器A的主要作用是什么_一文解析累加器a和acc的区别

累加器简介 在中央处理器中,累加器(accumulator) 是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算 (加法,乘法,移位等等) 后就必须要把结果写回到内存,也许马上就得读回来。然而存取主存的速度是比从算术逻辑单元到有直接路径的累…

ACC编码

AAC是新一代的音频有损压缩技术&#xff0c;它通过一些附加的编码技术&#xff08;比如PS,SBR等&#xff09;&#xff0c;衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码&#xff0c;LC-AAC就是比较传统的AAC&#xff0c;相对而言&#xff0c;主要用于中高码率(>80Kbps)&…

java解码acc音频文件_(JAVA)将(acc/m4a)音频转换成Mp3格式

实际工作中有一个需求&#xff0c;就是上传到微信的音频(格式为m4a)在PC浏览器无法播放&#xff0c;需要转码成mp3&#xff0c;然后在PC端播放(其实后来发现HTML5的audio可以播放...)&#xff0c;该工具依赖jave-1.0.2.2.jar(http://download.csdn.net/download/tinnkenn/93944…

请问android如何录制acc格式音频

问题描述 我这边要即时通讯。acc跟ios可以互通。但是录制的时候选项没有acc是要转换么 解决方案1 AudioRecord 获取 sample 然后用 ffmpeg 转成 AAC 转载于:https://www.cnblogs.com/yiguobei99/p/4002004.html

FFMPEG编码实现:pcm编码为acc

本程序流程&#xff1a; 1、创建输出码流的上下文AVFormatContext&#xff0c;并初始化 2、打开输出文件&#xff1a;avio_open2() 3、创建新流&#xff1a;avformat_new_stream() //用于保存音频流信息&#xff0c;一个完整的视频文件包含多个流信息&#xff1a;视频流、音频…

java解码acc音频文件_g711a音频文件转aac格式

实现g711a音频文件转换成aac文件的控件 编译成exe可执行文件 传入两个参数,第一个为g711a格式的源文件,第二个为目标文件 readme 控制台应用程序&#xff1a;Convert2ACC 项目概述 应用程序向导已为您创建了此 Convert2ACC 应用程序。 本文件概要介绍组成 Convert2ACC 应用程…