AAC高级音频编码技术

news2024/11/15 22:45:30

一、什么是AAC

        AAC的中文名称是高级音频编码技术,它是基于MPEG-2的一种全新的音频编码技术。随着时代的发展,目前AAC的技术升级到MPEG-4表准。AAC广泛的应用在网络传输、高清录制等领域,而AAC技术的出现就是为了取代之前的MP3格式。

二、为什么需要进行AAC进行音频压缩处理

        一帧普通的PCM数据的比特率是很高的,以采样率48000,双声道、采样深度S16的PCM数据传输,假设视频文件是10分钟,那么视频大小就是100多M,这样的大小在网络传输中是不可取的,引入AAC后原来100多M的音频数据被压缩后只有几M

三、AAC的特点和优势

        1.高压缩率:AAC的压缩比为1:20,远比MP3的1:10高,相同时长的音频大小远远小于MP3大小

        2.音质更好:AAC的音频还原度很高,音质相比于其他格式更加的优秀

        3.更高的解码效率:解码播放AAC音频文件时,所占用的资源更少,解码时CPU使用率更低

四、AAC格式详解

        AAC有两种不同的表现形式,一个是ADIF形式,另一种是ADTS形式。

        ADIF形式:可以确认音频数据的开始位置,不能从中间解码,无法随机访问,无法跳播,适合存储在磁盘中

        ADTS形式的AAC文件,可以在任何一帧开始解码,因为ADTS格式的每一帧都有头信息

        4.1ADIF的数据结构

        

        adif_header:adif的头部,一个adif形式的AAC文件只有一个头部

        

        byte_alignment:用于字节对齐

        因为每帧不是固定大小,故只能按照顺序进行解码,也无法跳播或快进快退。除非自己解码遍历整个文件建立每帧位置表。

      4.2ADTS的结构

      

 由上图可知一个ADTS的AAC一帧数据由两个部分组成,ADTS头部和AAC ES,AAC ES是AAC的裸流数据

ADTS Header由两部分组成,一部分是adts_fixed_header,另一部分是adts_variable_header

下面就详细的说一下这两部分。

  1.1adts_fixed_header

        

syncword:固定是0xFFF,代表一个ADTS帧的开始

ID:MPEG标识符,0代表MPEG-4   1代表MPEG-2

layer:默认为0b00(二进制)

protection_absent:表示是否误码校验

profile:表示使用哪个级别的AAC,下面这个表格是profile的索引

Sample Frequence index:代表的时使用采样率下标,通过这个下标找到对应的采样率,如下图

private bit:私有位,编码的时候设置为0,解码的时候忽略这一位

channel configuration:声道数的配置,下面是声道数的配置表格

1单声道
2双声道
3三声道
4四声道
5五声道
6六声道
7八声道

copy:编码的时候设置为0,解码的时候忽略这一位

home:编码的时候设置成0,解码的时候忽略这一位

 1.2adts_varibale_header的表格如下

copyright_identificaion_bit:编码的时候设置为0

copyright_identifiction_start:编码的时候设置为0

aac_frame_length:ADTS帧的长度,包含ADTS头部和AAC es数据的长度,如果包含crc校验的话,ADTS头部的长度是9字节,不包含crc校验的话ADTS头部的长度就是7字节,所以aac_frame_length = (protection_absent == 0 ? 9:7) + audio_data_length

adts_buffer_fulness:固定为0x7FF,这个标识符是指可变码流

number_of_raw_data_blocks_in_frame:表示当前的帧有number_of_raw_data_blocks_in_frame+1个原始帧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2108060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类的加载过程与初始化小记

//部分内容来自“狂神说java” 代码验证 解释 1.加载类的信息,加载到内存中,如例子,将Test05和A类的信息加载到方法区, 2.加载完成后,立马生成一个class对象,如例 java.lang.class对象代表Test05类..., 3…

畅捷通ERP远程访问:使用巴比达内网穿透的体验

ERP系统的应用越来越普遍。畅捷通ERP作为一款优秀的企业资源管理工具,帮助企业整合资源,提高运营效率。然而,很多企业在使用畅捷通ERP时,面临着远程访问的问题。为了有效解决这一问题,我尝试了巴比达内网穿透&#xff…

2024高教社杯全国大学生数学建模竞赛C题保姆级分析完整思路+代码+数据教学

2024高教社杯全国大学生数学建模竞赛C题保姆级分析完整思路代码数据教学 C题题目:农作物的种植策略 今年的题目很有意思,和去年C题题目相关联了,接下来我们将按照题目总体分析-背景分析-各小问分析的形式来 1 总体分析 1.1 问题背景&…

[算法]单调栈解法

目录 739. 每日温度 - 力扣(LeetCode) 42. 接雨水 - 力扣(LeetCode) 84. 柱状图中最大的矩形 - 力扣(LeetCode) 739. 每日温度 - 力扣(LeetCode) 解法: 通常是一维数…

Ubuntu: 配置OpenCV环境

从从Ubuntu系统安装opencv_ubuntu安装opencv-CSDN博客文章浏览阅读2.3k次,点赞4次,收藏14次。开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、…

2024 高教社杯 数学建模国赛 (C题)深度剖析|农作物的种植策略|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题! CS团队倾注了大量时间和心血,深入挖掘解…

数学专题.

数论 1.判断质数 定义:在大于1的整数中,如果只包含1和本身这两个约数,就称为质数or素数 Acwing 866.试除法判断质数 2.预处理质数(筛质数) Acwing 868.筛质数 3.质因数分解 Acwing 867.分解质因数 4.阶乘分解 5.因…

2024最新软件测试面试题(附答案)来测试下你的水平

1、软件测试的目的是( ) A、试验性运行软件 B、发现软件错误 C、证明软件正确 D、找出软件中全部错误 【答案】B 2、下面说法正确的是( ) A、经过测试没有发现错误说明程序正确 B、测试的目标是为了证明程序没有错误 C、成功的测试是发现了迄今…

数字货币是怎么回事什么是数字货币

数字货币的定义 数字货币是一种基于密码学原理的数字形式表示的货币,通过特定的加密算法和分布式账本技术实现安全交易和流通。它不像传统货币那样具有实体形态,而是以电子方式存在。数字货币可以通过互联网进行转账和交易,通常依赖区块链等分…

OPC DA

默认端口号: TCP 135 参考https://wenku.baidu.com/view/8f2b18a229f90242a8956bec0975f46527d3a7e4.html?_wkts_1725526157944&bdQuery%E6%9F%A5%E7%9C%8B%E8%A5%BF%E9%97%A8%E5%AD%90opcDA%E7%AB%AF%E5%8F%A3%E5%8F%B7 OPC DA ,OPC UA简介https://www.cnblogs.com/mi…

Qt 应用程序主界面

主要窗口类的概述 这些类提供了典型现代主应用程序窗口所需的一切,如主窗口本身、菜单和工具栏、状态栏等。 QAction 可以插入小部件的抽象用户界面操作 QActionGroup 将动作组合在一起 QDockWidget 小部件,可以停靠在QMainWindow中,也可以作…

springboot+vue+mybatis计算机毕业设计音乐播放系统+PPT+论文+讲解+售后

音乐播放系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,音乐…

【JVM】JVM简介|运行流程|内存划分

目录 一、JVM简介 二、JVM运行流程 三、JVM运⾏时数据区(内存划分) 3.1 堆(线程共享) 3.2 栈 3.3 元数据区(方法区)(线程共享) 3.4 程序计数器(线程私有&#xff0…

【学习笔记】5G-A时代物联网应用及策略研究

摘要 海量物联网通信是5G典型应用场景之一,为了实现蜂窝网的全场景物联能力,需要更多的场景化技术,5G-A引入了RedCap(5G Reduced Capability)和Passive IoT。其中,RedCap降低了设备复杂性及成本&#xff0…

js混淆保护在线工具开源项目大全

具体前往:js代码混淆加密保护工具&开源项目大全

指针复习--(笔记整理)

之前出的有指针合集在博客,最近要备考计算机二级,所以复习了一下,有一些容易遗忘的点整理了一下,大家可以有针对性的看一看,后续刷二级真题的时候也会进行题目代练,可以下收藏起来。记得先赞,祝…

力扣96-不同的二叉搜索树(Java详细题解)

题目链接:96. 不同的二叉搜索树 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 …

高并发内存池(一):项目介绍与定长内存池的实现

目录​​​​​​​ 项目介绍 池化技术 内存池 内存碎片 malloc工作原理 定长内存池 申请内存 释放内存 定位new VirtualAlloc函数 封装VirtualAlloc 定长内存池的最终代码 项目介绍 项目原型:goole的开源项目tcmalloc(Thread-Caching Mal…

一种极简的余弦定理证明方法

余弦定理的证明方法有很多种,这里介绍一种极简的证明方法。该方法是本人在工作中推导公式,无意中发现的。证明非常简单,下面简单做下记录。   如上图为任意三角形ABC,以点C为原点,建立直角坐标系(x轴方向…

【网络编程通关之路】 Udp 基础回显服务器(Java实现)及你不知道知识原理详解 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…