「音视频处理」音频编码AAC详解,低码率提高音质?

AAC(高级音频编码)

也称为 MPEG-4 音频。数码音频压缩和编码的标准方式。AAC 编码文件可与音乐光盘的质量相匹敌,且声音质量通常等同于或高于以相同或甚至更高的位速率编码的 MP3 文件。

我们按这样的顺序讨论 :

1、 封装格式的作用

2、 AAC的一些特殊限制

3、 AAC与其他编码格式的选择

封装格式的作用

一个视频或音频文件实际上是分三层的:封装、编码、基础数据。

编码的作用是为了压缩数据,限制最终文件的大小。

我们举个例子,音频是由一个个采样组成的,如果采样的位深度为16bit的话,一个采样的大小即为16bit。

如果音频长度1分钟,采样率为48KHz、双声道的话,则理论音频文件大小为10MB左右。

一般除了无损音频文件,是没这么大的,因为音频编码阶段会压缩数据

这里顺便一提,即使是无损音频文件,编码阶段也会压缩数据,只是压缩算法是无损的,保证能还原成原始数据。

另外,一般只有对音频文件大小产生影响的基础参数才会作用在编码阶段,如码率、最大码率等。

除去无损音频编码格式外,编码阶段会按这些参数限制文件大小,但同时也可能会产生有损压缩,影响声音质量。

其他参数如采样率、位深度等,都不是编码阶段处理的,需要转码程序对原始音频数据进行处理

关于音频相关参数的讲解以及推荐设置,如音频帧、采样、位深度、采样率、声道等,这里不作展开。

AAC的一些特殊限制

音频编码格式的不同,意味着压缩算法的区别。具体压缩算法是不需要搞清楚的,但是需要清楚具体编码格式的一些特殊限制

AAC编码的话,音频采样率限制在8KHz-96KHz之间。

另外,AAC编码一般以1024个采样为一个音频帧,如果是双通道、采样率为48KHz的话,则一个音频帧的长度大约为0.01秒。

如果每个音频帧的采样数不对,则可能会造成播放过快或过慢的问题。

这里需要注意的是,AAC实际上有多种规格的,不同规格可以理解为AAC编码的不同行为,以上介绍的一些特殊限制都是基于最常用的AAC-LC规格

不同规格下,支持的采样率、最大码率、每帧采样数都是有区别的。另外,在低码率,128Kbps以下,不同模式的主观音质会有所区别,AAC-HE会比常用的AAC-LC更加优秀

但一般音频码率都会在128Kbps以上,所以一般选用常规的AAC-LC即可。

AAC与其他编码格式的选择

AAC是很常用的编码格式,无论是视频文件、还是单纯的音频文件,采用AAC编码格式,都有很高的兼容性

如果是要求无损音质,则选择PCM等编码格式。

当然,音频编码格式的选择,更多是以实际情况为依据的,在明确音质要求前提下,需要考虑数据量/流量等成本问题。

但比这些都重要的是兼容目标用户群体的播放设备/软件,毕竟编码格式再优秀,用户播不了也是没用的。

本文福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓ 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 Zotero 导出所选条目的 PDF 文件

如何使用 Zotero 导出所选条目的 PDF 文件 Zotero 是一款强大的参考文献管理工具,但它并不直接提供将整个文件夹导出为 PDF 的选项。不过,您可以使用以下步骤来导出您所选的 Zotero 条目中的 PDF 文件,无需额外的插件。 选择所需的 Zotero 条…

2023年危险化学品生产单位安全生产管理人员证考试题库及危险化学品生产单位安全生产管理人员试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年危险化学品生产单位安全生产管理人员证考试题库及危险化学品生产单位安全生产管理人员试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局&a…

二叉树链式结构

1.前置说明 我们手动构建一棵二叉树: 注意:上述代码并不是创建二叉树的方式 从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的 2.二叉树的遍历 2.1前序、中序以及后序遍历 学习二叉树结构&a…

基于c++版本链队列改-Python版本链队列基础理解

##基于链表的队列实现 可以将链表的“头节点”和“尾节点”分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。 ##图解 ##基于链表的队列实现代码 class ListNode:"""定义链表"""def __init__(self)…

Nexus搭建npm私库(角色管理、上传脚本)

安装Nexus 官网下载 https://www.sonatype.com/products/sonatype-nexus-oss-download 进入官网下载,最新下载方式需要输入个人信息才能下载了 选择对应的系统进行下载 Windows 推荐也下载 UNIX 版本(Windows 版本配置比较难改) 如果没有下…

​LeetCode解法汇总2477. 到达首都的最少油耗

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一棵 …

org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource

DynamicDataSource-CSDN博客 /** Copyright 2002-2020 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the L…

排序算法基本原理及实现2

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 🌤️冒泡排序 &#x1…

解决mybatis-plus中,当属性为空的时候,update方法、updateById方法无法set null,直接忽略了

问题描述 当indexId set 22的时候是可以set的 我们发现sql语句也是正常的 表中数据也被更改了 但是当我们indexId为空的时候 sql语句中没有了set indexId这一属性。。 既然属性都没了,表是肯定没做修改的 问题解决 在实体类对应的字段上加注解TableField(strategy…

每日一练【有效三角形的个数】

一、题目描述 611. 有效三角形的个数 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2…

《WebGIS快速开发教程》第5版“惊喜”更新啦

我的书籍《WebGIS快速开发教程》第5版,经过忙碌的编写,终于发布啦! 先给大家看看新书的封面: 这次的封面我们经过了全新的设计,不同于以往的任何一个版本。从封面就可以看出第5版肯定有不小的更新。 那么我们话不多说…

ChatGPT,作为一种强大的自然语言处理模型,具备显著优势,能够帮助您在各个领域取得突破

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

Linux服务器部署XXL-JOB

参考文档及下载地址:分布式任务调度平台XXL-JOB 1 从git拉取XXL-JOB代码 我们的大部分变动,是发生在xxl-job-admin,最终将这个模块打包成jar包部署在linux服务器上。 2 执行数据库脚本 doc\db\tables_xxl_job.sql 3 修改pom文件&#xff0c…

【Linux】信号的保存和捕捉

文章目录 一、信号的保存——信号的三个表——block表,pending表,handler表sigset_t信号集操作函数——用户层sigprocmask和sigpending——内核层 二、信号的捕捉重谈进程地址空间(第三次)用户态和内核态sigaction可重入函数volat…

语义分割 LR-ASPP网络学习笔记 (附代码)

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_segmentation/lraspp 1.是什么? LR-ASPP是一个轻量级语义分割网络,它是在Mobil…

如何做好软文推广的选题?媒介盒子分享常见套路

选题是软文推广的重中之重,主题选得好,不仅能够戳到用户,提高转化率,还能让各位运营的写作效率大幅度提升,今天媒介盒子就来和大家分享软文选题的常见套路,助力各位品牌进行选题。 一、 根据产品选题 软文…

安卓开发APP应用程序和苹果iOS开发APP应用程序有什么区别?

随着智能手机和平板电脑在全球的普及,APP移动应用已成为日常生活中不可或缺的组成部分。从社交网络到电子商务平台,从个人理财到游戏娱乐,APP几乎渗透了人们所有的活动领域。在开发APP时,开发者通常要面对两大主流平台&#xff1a…

鸿蒙4.0开发笔记之ArkTS语法基础的UI描述、基础组件的使用与如何查看组件是否有参数(八)

文章目录 一、声明式UI描述1、无/有参数组件2、如何查看组件是否有参数 二、Image组件的使用三、组件的属性设置四、补充1、使用组件的成员函数配置组件的事件方法2、配置子组件3、多组件嵌套 一、声明式UI描述 在HarmonyOS的ArkTS语法中,万物皆组件。ArkTS以声明方…

Spring-Boot---配置文件

文章目录 配置文件的作用配置文件的格式PropertiesProperties基本语法读取Properties配置文件 ymlyml基本语法读取yml配置文件 Properties VS Yml 配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置的,具有非常重要的作用。比如: 数据库的…

【TiDB理论知识09】TiFlash

一 TiFlash架构 二 TiFlash 核心特性 TiFlash 主要有 异步复制、一致性、智能选择、计算加速 等几个核心特性。 1 异步复制 TiFlash 中的副本以特殊角色 (Raft Learner) 进行异步的数据复制,这表示当 TiFlash 节点宕机或者网络高延迟等状况发生时,Ti…