目录

  1. 概述

  2. 帧格式

  3. 算法简介

  4. 开源的软件

  5. AAC和MP3的关键性不同

  6. 参考阅读

1. 概述 AAC(Advanced Audio Coding),被认为是MP3的继任者,相对MP3有更高的压缩效率。由Fraunhofer IIS、杜比实验室、AT&T、Sony(索尼)等公司共同开发。1997年由MPEG正式宣布为国际标准,为MPEG-2标准的第7部分-ISO/IEC 13818-7:1997。MPEG-4标准中,AAC音频流部分在ISO/IEC 14496-3 (subpart 4)中规定。 AAC被iPhone、iTunes以及大多数便携式设备所使用。 AAC有很多的选项和profiles。 2. 帧格式 AAC音频格式有:

  • ADIF(Audio Data Interchage Format),音频数据交换格式:只有一个统一的头,必须得到所有数据后解码,适用于本地文件。

  • ADTS(Audio Data Transport Stream),音视数据传输流:每一帧都有头信息,任意帧解码,适用于传输流。

下面主要介绍ADTS。 ADTS的组成单元是ADTS Frame。

  • ADTS Frame由ADTS_Header和AAC ES组成。

  • ADTS_Header包含采样率、声道数、帧长度的信息。

  • ADTS头信息的长度是7个字节或9字节(有CRC的情况)。

ADTS_Header的可以分为以下三部分:

  • adts_fixed_header:每一帧的内容是不变的。

  • adts_variable_header:每一帧的内容是存在变化的。

  • crc:16bits,protection_absent字段为0时存在。

adts_fixed_header:

在MPEG-2 AAC中定义了3种profile:

  • MPEG-2 AAC Main

  • MPEG-2 AAC LC (Low Complexity)

  • MPEG-2 AAC SSR (Scalable Sampling Rate)

在MPEG-4 AAC中定义了6种profile:

  • MPEG-4 AAC Main

  • MPEG-4 AAC LC (Low Complexity)

  • MPEG-4 AAC SSR (Scalable Sample Rate)

  • MPEG-4 AAC LTP (Long Term Predicition)

  • MPEG-4 AAC LD (Low Delay)

  • MPEG-4 AAC HE (High Efficiency) AACPlusV1/V2(3GPP)

adts_variable_header:

​【免费分享】文章最后领取音视频资料

AAC ES部分说明

  1. 一个frame的原始数据包含1024个样本时间段的音频数据。

ffmpeg中添加ADTS头的代码,可以很清晰的了解ADTS头的结构:

static int adts_write_frame_header(ADTSContext *ctx,uint8_t *buf, int size, int pce_size)
{PutBitContext pb;unsigned full_frame_size = (unsigned)ADTS_HEADER_SIZE + size + pce_size;if (full_frame_size > ADTS_MAX_FRAME_BYTES) {av_log(NULL, AV_LOG_ERROR, "ADTS frame size too large: %u (max %d)\n",full_frame_size, ADTS_MAX_FRAME_BYTES);return AVERROR_INVALIDDATA;}init_put_bits(&pb, buf, ADTS_HEADER_SIZE);/* adts_fixed_header */put_bits(&pb, 12, 0xfff);   /* syncword */put_bits(&pb, 1, 0);        /* ID */put_bits(&pb, 2, 0);        /* layer */put_bits(&pb, 1, 1);        /* protection_absent */put_bits(&pb, 2, ctx->objecttype); /* profile_objecttype */put_bits(&pb, 4, ctx->sample_rate_index);put_bits(&pb, 1, 0);        /* private_bit */put_bits(&pb, 3, ctx->channel_conf); /* channel_configuration */put_bits(&pb, 1, 0);        /* original_copy */put_bits(&pb, 1, 0);        /* home *//* adts_variable_header */put_bits(&pb, 1, 0);        /* copyright_identification_bit */put_bits(&pb, 1, 0);        /* copyright_identification_start */put_bits(&pb, 13, full_frame_size); /* aac_frame_length */put_bits(&pb, 11, 0x7ff);   /* adts_buffer_fullness */put_bits(&pb, 2, 0);        /* number_of_raw_data_blocks_in_frame */flush_put_bits(&pb);return 0;
}

3. 算法简介 AAC是一种宽带音频编码算法,它利用两种主要的编码策略来大幅减少表示高质量数字音频所需的数据量:

  • 丢弃在感知上不相关的信号分量。

  • 消除了编码音频信号中的冗余。

实际的编码过程包括以下步骤:

  • 使用前向修改的离散余弦变换(MDCT)将信号从时域转换到频域。这是通过使用滤波器组来完成的,这些滤波器组采用适当数量的时间采样并将其转换为频率采样。

  • 基于心理声学模型量化频域信号并对其进行编码。

  • 添加内部纠错码。

  • 存储或传输信号。

  • 为了防止损坏的样本,将Luhn mod N算法的现代实现应用于每个帧。

算法部分更多介绍可参考[5]。 4. 开源软件

  • FAAD2:开源的MPEG-4和MPEG-2 AAC解码器。

  • fdk-aac:Fraunhofer IIS 开发的开源项目的aac编解码库,包含在android项目中。

5. AAC和MP3的关键性不同 AAC是在MP3基础上开发出来的,所以两者的编码系统有一些相同之处。但是对比一下两者的编码流程图,你会发现AAC的编码工序更为复杂。

  1. 滤波器组(Filter bank):

  2. 时域噪音修整(Temporal Noise Shaping,TNS):这项神奇的技术可以通过在频率域上的预测,来修整时域上的量化噪音的分布。在一些特殊的语音和剧烈变化信号的量化上,TNS技术对音质的提高贡献巨大!

  3. 预测(Prediction):对音频信号进行预测可以减少重复冗余信号的处理,提高效率。

  4. 量化(Quantization):AAC的量化过程是使用两个巢状循环进行反复运算。通过对量化分析的良好控制,比特率能够被更高效地利用。

  5. 比特流格式(Bit-stream format):在AAC中,信息的传输都要经过熵编码,以保证冗余尽可能少。此外AAC拥有一个弹性的比特流结构,使得编码效率进一步提高。

  6. 长时期预测(Long Term Prediction,LTP):这是一个MPEG-4 AAC中才有的工具,它用来减少连续两个编码音框之间的信号冗余,对于处理低码率的语音非常有效。

  7. 知觉噪音代替(Perceptual Noise Substitution,PNS):这也是MPEG-4 AAC中才有的工具,当编码器发现类似噪音的信号时,并不对其进行量化,而是作个标记就忽略过去,当解码时再还原出来,这样就提高了效率。

6. 参考

  • 雷霄华/视音频编解码学习工程:AAC格式分析器

音频编码格式介绍-AAC相关推荐

  1. AAC音频编码格式介绍

    一.概述及分类 AAC"Advanced Audio Coding"的缩写,中文称为"高级音频编码",被手机界称为"21世纪数据压缩方式", ...

  2. 转载 各种主流音频/视频编码格式介绍

    周会,老大发话了:作为一名多媒体软件工程师,总不能对音视频格式.对H263与H264之间区别一点都说不上来吧? 说来惭愧,本人的确对这些都了解不够,课下要多花点时间来补补相关知识了. 以下转自: ht ...

  3. aac fhg lc哪一个模式_AAC音频编码格式简介

    AAC音频编码格式,完整名称叫做"高级音频编码(Advanced Audio Codec)".这种先进而高级的编码规范,是由Fraunhofer IIS公司(前MP3标准的制定者) ...

  4. Unity 之 音频类型和编码格式介绍

    Unity 之 音频类型和编码格式介绍 一,加载音频文件 二,Load Type:加载类型 三,编码格式与品质级别 Inspector窗口显示多个导入设置.这些设置决定了:加载行为,压缩行为,质量,采 ...

  5. 19种音频格式介绍及音质压缩比的比较 1

    19种音频格式介绍及音质压缩比的比较 目录 前言............................................................................ ...

  6. 音、视频编码格式介绍

    前言 文章来源于如下两个连接,我只是编辑一下,方便查阅. 视频编码介绍:http://blog.csdn.net/wcl0715/article/details/676137 音频编码介绍:http: ...

  7. 音视频基础知识---音频编码格式

    音视频基础知识汇总: 音视频基础知识---协议相关RTSP RTMP HLS 音视频基础知识---封装格式 音视频基础知识---视频编码格式 音视频基础知识---音频编码格式 音视频基础知识---像素 ...

  8. 常用音频工具介绍与汇总

    音频cluster 常用音频工具介绍与汇总 音频文章 音频网站记录 python工具包 常用音频工具介绍与汇总 音频文章 来源 说明 链接 ESC-50 说明文档中有关于各种深度学习网络在数据集上的表 ...

  9. aac是什么音频格式?aac转化为mp3方法

    aac是什么音频格式?AAC是一种高级音频编码的音频文件,发布于1997年,基于MPEG-2的音频编码技术,aac采用了全新的算法进行编码,更加高效.与mp3格式相比,aac也是属于有损压缩的音频格式 ...

最新文章

  1. 这次的人工智能是“有用”的人工智能
  2. 如何给UI上可以接收focus事件的element动态注册onfocus处理函数
  3. C# ProgressBar用法:模拟进度条
  4. [JavaWeb-HTML]HTML标签_文件标签
  5. Windows Embedded CE 6.0开发初体验(二)CE开发环境
  6. 用lsb_release -a 查看linux版本
  7. C--计算求1+2!+3!+.......+n!
  8. 【转】CentOS7 yum方式配置LAMP环境
  9. [LeetCode] Spiral Matrix II
  10. 编程之美 裴波那楔数列
  11. 通过ToStringBuilder实现toString方法
  12. 计算机算法专业英语,计算机算法英语常用术语
  13. 用postman测试post接口的设置步骤,参数为json
  14. APS计划排程和生产排产系统,包含哪些排程算法?
  15. 小白怎么入行网络安全?看这一篇就够啦!
  16. excel两列数据对比找不同_眼睛的救星,Excel怎么快速找出两列数据的不同之处?...
  17. java实习面试题整理
  18. 关于topk accuracy
  19. 驼色的羊绒大衣怎么搭配好看
  20. 分享一个MySQL数据库表结构导出word文档最方便的方法

热门文章

  1. 浏览器HTTP协议请求头信息
  2. [C#] 编程控制笔记本蓝牙与外部蓝牙设备通信
  3. 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求...
  4. [数字图像处理]频域滤波(1)--基础与低通滤波器
  5. 全志F1C200S嵌入式驱动开发(触摸屏驱动)
  6. c#动态生成控件,并为控件注册事件
  7. 泛微OA-测试环境更新所有密码为1
  8. 淘宝云梯分布式计算平台整体架构
  9. target属性的值
  10. Spring Cloud初初初初初级教学