AAC编解码(一)

避开AACS授权陷阱:Hi3798MV200+Android7.0蓝光播放的合规开源方案 本文为使用海思Hi3798MV200芯片和Android 7.0系统的硬件团队,提供了一套规避AACS商业授权风险的蓝光播放开源方案。通过精简libbluray库、禁用BD-J和AACS模块,并深度利用Android原生MediaCodec框架,实现了对未加密蓝光文件结构解析、主片播放及静态菜单导航的核心功能,完全符合开源合规要求。 阅读详情

一、ADTS格式:

ADTS的全称是Audio Data Transport Stream。是AAC音频的传输流格式。

1. adts_sequence()

{

 while (nextbits() == syncword) {

 adts_frame();

 }

}

2. adts_frame()

{
 adts_fixed_header();

 adts_variable_header();

 if (number_of_raw_data_blocks_in_frame == 0) {

 adts_error_check();

 raw_data_block();

 }

 else {

 adts_header_error_check();

 for (i = 0; i <= number_of_raw_data_blocks_in_frame; i++) {

 raw_data_block();

 adts_raw_data_block_error_check();

 }

 }

}

3.

adts_fixed_header()

{
 syncword; 12 bslbf

 ID; 1 bslbf

 layer; 2 uimsbf

 protection_absent; 1 bslbf

 profile; 2 uimsbf

 sampling_frequency_index; 4 uimsbf

 private_bit; 1 bslbf

 channel_configuration; 3 uimsbf

 original/copy; 1 bslbf

 home; 1 bslbf

}

adts_variable_header()

{
 copyright_identification_bit; 1 bslbf

 copyright_identification_start; 1 bslbf

 frame_length; 13 bslbf

 adts_buffer_fullness; 11 bslbf

 number_of_raw_data_blocks_in_frame; 2 uimsfb

}

详细说明下ADTS头的重要数据部分:

syncword 同步字The bit string ‘1111 1111 1111’,说明一个ADTS帧的开始。

ID MPEG 标示符, 设置为1.

layer Indicates which layer is used. Set to ‘00’

protection_absent 表示是否误码校验

profile 表示使用哪个级别的AAC,如01 Low Complexity(LC)--- AACLC

sampling_frequency_index 表示使用的采样率下标

sampling_frequency_index sampling frequeny [Hz]

0x0 96000

0x1 88200

0x2 64000

0x3 48000

0x4 44100

0x5 32000

0x6 24000

0x7 22050

0x8 16000

0x9 2000

0xa 11025

0xb 8000

0xc reserved

0xd reserved

0xe reserved

0xf reserved

channel_configuration 表示声道数

frame_length 一个ADTS帧的长度包括ADTS头和raw data block.

adts_buffer_fullness 0x7FF 说明是码率可变的码流

number_of_raw_data_blocks_in_frame

表示ADTS帧中有number_of_raw_data_blocks_in_frame + 1个AAC原始帧.

所以说number_of_raw_data_blocks_in_frame == 0 表示说ADTS帧中有一个AAC数据块并不是说没有。


二、编码算法处理流程

   首先对输入的PCM信号分段,每帧每声道1024个样本,采用1/2重叠,组合得到2048个样本。加窗后,进行离散余弦变化(MDCT),输出1024个频谱分量,依据不同采样率和变换块类型划分成10个不同带宽的比例因子频带。其中变化块类型由 心理声学模型 计算分析得到,该模型还将输出 信掩比,用于后续模块的处理。

    AAC 还使用了一种新的称为时域噪声整形的技术,简称为 TNS。 TNS 的作用机理在于利用了时域和频域信号的对偶性。在立体声编码方面, AAC 既支持 M/S,又支持L/R,两者的选择准则是看比特数的消耗。基于人耳对高频的定位主要取决于能量的特点,采用了增强立体声(IS)技术,对耦合声道只传一路包络。经过前述多个模块的预处理后,在量化和编码阶段才真正降低了数据量使用非均匀量化来改善小信号的信噪比,把比例因子频带合并成分区后再对频谱分量进行霍夫曼编码。量化和编码使用一种两层嵌套循环算法,以权衡码率和失真之间的矛盾。最后,进行比特流封装,得到压缩后的码流


AAC各个模块计算量的比重

                   

   由此可见,量化编码、心理声学模型以及滤波器组模块是编码算法中复杂度、计算量较高的模块。


从零到一:WebRTC中AAC编解码器的集成与优化实战 本文详细介绍了如何在WebRTC框架中集成FAAC编码器和FAAD2解码器,实现AAC音频流的完整处理能力。通过对比不同编解码器方案,选择FAAC/FAAD2作为最佳开源组合,并分享跨平台编译、性能优化及问题解决的实战经验,帮助开发者高效实现高质量音频通信。 阅读详情

相关推荐

利用ffmpeg库实现音频AAC编解码

AAC‌(Advanced Audio Coding)是一种音频编码技术,出现于1997年,基于MPEG-2的音频编码技术。AAC具有高效的数据压缩能力和较高的音质,适用于各种音频应用场景。例如,在智能设备中,AAC技术被广泛应用于提升用户体验,提供高质量的音频体验。

深之JohnChen的专栏 2358

编解码标准-AAC

AAC是音视频编解码中最常见的一种格式,比较简单,最好直接把他结构背出来

键盘敲的劈啪响 1352

Red Hat Enterprise Linux 9.2

安装Red Hat Enterprise Linux 9.2

zhurobert的博客 943

AAC音视频编码详解

一、AAC编码概述 AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代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-AA

爱片闲串,爱钓鱼,爱中医,爱分享 1万+

2025年情感分析(SA)综述——论文阅读报告

2025年情感分析(SA)综述——论文阅读报告

Samdy_L的博客 2088

【Qt笔记】1.VSCode搭建Qt运行环境

Qt6之后已经抛弃qmake,使用cmake。cmake相对qmake来说只有优点没有缺点。使用VSCode搭建完Qt的运行环境就能开开心心debug了.vscode需要使用的插件:2.Qt tools3.CMakec++插件可以不关注,缺啥都会提醒你.正常安装即可。

没有手牌的博客 2万+

使用C++调用MediaCodec进行音频硬编码(PCM->AAC)

直接帖代码,主要分三个步骤。 1、初始化编码器并启动编码 mLooper = new ALooper; mLooper->setName("AudioEncoder_looper"); mLooper->start(false); mCodec = MediaCodec::CreateByType(mLooper, "audio/mp4a-latm", true); mLooper->registerHandler(this); sp<AMessage> format .

XiaoKing2008的专栏 1890

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码 S30新框架适合多种奥顺插件。

xl1407的博客 1754

AAC文件格式与解码流程(未完待续)

1 文件格式 1.1 概述及分类 AAC“Advanced Audio Coding”的缩写,中文称为“高级音频编码”,被手机界称为“21世纪数据压缩方式”,AAC所采用的运算方式是与MP3的运算有所不同,AAC同时可以支持多达48个音轨,15个低频音轨,更多种取样率和比特率与及有多种言语的兼容能力,更高的译码效率,总括来说,AAC可以在对比MP3文件缩小30%的前题下提供更好的音质。 AAC帧与帧之间编码完全独立,所以其广泛运用于流媒体。 由于对AAC有重要贡献的公司比较多,如Fraunhofer

水龙吟的备忘录 7906

桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)

桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)

Molly 的博客 1万+

Harness设计——Anthropic实战:规划器、生成器、评估器三角色协作详解

本文探讨了如何通过多智能体架构突破AI编码的瓶颈问题。文章首先分析了当前AI编码面临的两大核心挑战:上下文窗口限制导致的连贯性丧失,以及自我评估机制缺失引发的质量判断偏差。针对这些问题,作者提出了基于生成对抗网络(GAN)灵感的解决方案,设计了三智能体系统:规划器负责需求分析,生成器执行编码任务,评估器进行质量审查。 实验表明,在前端设计任务中,通过制定可量化的评分标准(设计质量、原创性、工艺、功能性)并建立生成-评估反馈循环,能显著提升输出质量。这种架构随后被扩展到全栈开发领域,采用类似敏捷开发的&quo

oe1019的专栏 871

各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式(一)

编解码学习笔记(一):基本概念 媒 体业务是网络的主要业务之间。尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析、应用开发、释放 license收费等等。最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很

yansen_2010的专栏 2153

地理空间智能体(GI Agent)

地理空间智能体(Geospatial Intelligence Agent, GI Agent)是AI Agent技术与地理信息系统(GIS)深度融合的产物。其核心是以大型语言模型(LLM)为驱动,通过自然语言理解、任务分解和工具调用能力,实现地理空间任务的自动化执行。​关键特性​自主性​:独立规划任务流程(如空间数据检索、分析、可视化);​交互性​:支持自然语言对话交互,替代传统图形界面操作;​扩展性​:灵活集成第三方工具和API,支持跨平台协作。

百态·数智思维 | 聚焦大数据、量化与未来AI 2035

[aac @ ...] Specified sample format s16 is invalid or not supported

在使用FFmpeg打开编码器的时候出现以下错误: [aac @ 000001da19fd7200] Specified sample format s16 is invalid or not supported 其实是由于版本更新所导致的问题。 在之前的FFmpeg版本中,是使用 AV_SAMPLE_FMT_S16格式的,更新库文件之后,就不行了,只支持 AV_SAMPL...

weixin_30915275的博客 712

ovs实现lb负载均衡

负载均衡器的实现原理是通过硬件或软件设备将客户端访问流量根据转发策略分发到多个服务器或设备上,以确保系统的负载均衡。二层负载均衡‌:使用虚拟MAC地址方式,根据OSI模型的二层进行负载均衡。‌四层负载均衡‌:基于IP+端口的负载均衡,主要分析IP层及TCP/UDP层,实现四层负载均衡。‌七层负载均衡‌:从应用层开始,根据虚拟的URL或IP、主机名接收请求,再转向相应的处理服务器。

bobi的博客 956

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日

https://www.cnblogs.com/zhujiabin/p/6645551.html https://mp.youkuaiyun.com/postedit/70213469 https://www.cnblogs.com/liaojie970/p/5730803.html   https://blog.youkuaiyun.com/hehongdan/article/details/51914287 ...

code_dream_wq的博客 3236

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

servlet cookie 和 session 作用

https://www.javazhiyin.com/12950.htmlhttps://www.cnblogs.com/shoru/archive/2010/02/19/1669395.html

weixin_42226343的博客 94

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vue-x

https://segmentfault.com/a/1190000005015164#articleHeader2 https://www.cnblogs.com/fozero/p/8094265.html

qq_37642495的博客 156

serdes相关资料

https://www.cnblogs.com/yhsy1002/p/6872876.html https://blog.youkuaiyun.com/zzsfqiuyigui/article/details/47065153

yedushu的博客 412

Qwen3-TTS-Tokenizer-12Hz vs 传统编解码器:性能对比实测

本文介绍了如何在星图GPU平台自动化部署Qwen3-TTS-Tokenizer-12Hz镜像,实现高效的音频编解码处理。该镜像通过神经网络技术将音频压缩为超低采样率tokens,显著提升压缩效率,适用于低带宽语音通信、嵌入式设备音频存储等场景,为实时音频传输提供高质量解决方案。

weixin_31597759的博客 173

浅聊几种主流Docker网络的实现原理

原文:https://mp.weixin.qq.com/s/Jdxct8qHrBUtkUq-hnxSRw 参考:https://blog.youkuaiyun.com/yarntime/article/details/51258824 转载于:https://www.cnblogs.com/robinunix/p/11526276.html

weixin_30700099的博客 218

音频格式之AAC:(3)AAC编解码原理详解

本文主要讲解aac编解码原理

littlezls的博客 1万+

libfdk-aac编解码代码示例

背景 前面几篇文章介绍了AAC的几种封装标准及libfdk-aac的一些使用细节,这篇文章就给出libfdk-aac编解码代码示例。 示例 编码 编码封装类CAACEncoder适用于RTP流媒体应用,设置的AAC编码规格为AAC-LD,封装格式为LATM,设置编码输入的采样点数为480(适用于采样率为48000),包复用个数为2(适用于采样周期为20ms) 编码接口 int EncodeFram...

mo4776的博客 4780

音频编解码工具 FDK_AAC简介

FDK-AAC(Fraunhofer Development Kit for Advanced Audio Coding)是一个用于音频编码和解码的软件开发工具包。该工具包基于 MPEG-2 和 MPEG-4 AAC 标准,并在各种设备和平台上实现了高效、高质量的音频编码和解码。FDK-AAC 支持多种音频编解码格式,包括 SBR、PS、HE-AAC、AAC-ELD 等。这些格式提供了更高的压缩率和更好的音质,使您可以为您的应用提供出色的音频体验。

dengfuma的专栏 2299

七、通过libfdk_aac编解码器实现aac音频和pcm的编解码

AAC编码是MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。由于libfdk_aac最好,但是网上下载好的ffmpeg编译好的版本不带libfdk_aac编解码器。自己手动编译FFmpeg源码,将libfdk_aac集成到FFmpeg中,这种方式最好,但在windows环境下较为麻烦。pcm与aac的转换需要AAC编解码器(如下列举几种常用的AAC编解码器)fdk-aac对需要编解码的pcm音频有一定的格式要求。

小土同学的博客 2693

AAC编解码

AAC 的编解码流程核心是 “基于心理声学的选择性保留”:编码通过频域变换、量化和熵编码去除冗余,解码通过逆过程恢复信号。其高效性源于多种技术的结合(MDCT、TNS、LTP、SBR 等),使其在相同比特率下音质优于 MP3,成为主流音频编码标准之一。

qq_25218777的博客 1323
上一篇: 各类滤波器比较 &amp;&amp;卷积理解
下一篇: Win7搭建HTK语音识别平台
audiocool
博客等级 码龄9年 335粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值