【音视频处理】为什么MP3不是无损音乐?音频参数详解,码率、采样率、音频帧、位深度、声道、编码格式的关系

news2025/1/28 1:10:39

大家好,欢迎来到停止重构的频道。

上期我们讨论了视频的相关概念,本期我们讨论音频的相关概念

包括采样率、码率、单双声道、音频帧、编码格式等概念

这里先抛出一个关于无损音频的问题。

为什么48KHz采样率的.mp3不是无损音乐 ,而48KHz采样率的.wav、.flac音频是无损的呢?

音频相关概念我们按这样的顺序分类讨论:

1、 音频采样的概念

2、 单个音频帧的概念

3、 多个音频帧的概念

音频采样的概念

相关概念有:采样、位深度、声道、采样率

与视频不同的是,音频的最小单位不是一帧,而是一个采样

采样是当前一刻声音的声音样本,样本需要经过数字转换才能存储为样本数据。

数字转换时会根据位深度转换位深度就是存储单个样本数据的大小,位深度越大,记录的样本数据精度就越高。

网络视频、音频文件一般位深度为16bit,常用位深度还有8bit、24bit等。

这里需要一提的是,位深度越大虽然意味着声音还原度越高,但是过高的位深度,如32bit、64bit float或以上,可能需要特殊的软件和硬件设备才能播放。

接下来是声道,音频有单声道、双声道、立体声等。

每个声道的声音样本都会单独记录,一般双声道的采样数是单声道的两倍,多声道同理。

多个声道的样本数据一般会按声道排列顺序记录,播放时,程序会根据排列顺序将声音用不同的扬声器播放。

采样率是采样的频率,与视频的帧率类似,是一秒钟对声音的采样个数,如果是双声道,那么1秒采样的个数是采样率的两倍,多声道同理。

普遍认为,流畅且不失真的音频,要求采样率达到40KHz以上,这个采样率是人类听觉频率上限的两倍,一般CD品质音频的采样率是44.1KHz,网络视频、视频文件一般是48KHz。

不过,某些具体场景可能会降低采样率要求,如语音通话、监控摄像头等,这些场景下,音频采样率一般只有8KHz,这个频率虽然听音乐是一种折磨,会一卡一卡的,但是对听清别人说话倒是一点问题没有。

单个音频帧的概念

这里我们理解为什么存在音频帧就可以了。

理论上,音频并不需要音频帧的概念,因为音频采样数据和采样率已经可以把音频播放描述清楚了。

但是音视频文件播放时,为了保证音视频同步,程序需要根据每帧的播放时间戳进行有序播放。

但是每个音频采样数据太小了,如果每个采样数据都记录播放时间戳的话,那么就得不偿失了。毕竟一个时间戳数据的大小比一个音频采样数据都大,所以就有了音频帧的概念。

音频帧实际上就是把一小段时间的音频采样数据打包起来,如每20ms的音频采样数据合并成一帧。

这里的具体时间间隔是具体编码码格式决定的,一般不需要特别关心。

多个音频帧的概念

多个音频帧的概念有播放时间戳PTS、码率、编码格式。与

视频帧一样,每一帧音频帧也会记录播放时间戳PTS,程序播放时会根据播放时间戳PTS播放音频帧。

音频帧的播放是比较特别的,因为一帧音频包含的是一小段时间的音频采样,所以实际上音频帧的播放时间戳只是这一小段音频的开始播放时间里面的采样数据会根据采样频率连续播放

同时音频也有码率,也就是常听到的音频比特率,码率就是一秒钟的数据量大小

不压缩的情况下,音频码率的大小=采样率*位深度声*道数。

接下来是编码格式,编码格式实际上是压缩数据的方式,常用的编码格式有wav、mp3、aac等,音频编码格式有有损、无损压缩之分

这里可以解释开篇的问题了,为什么采样参数相同的mp3和wav文件会有不同的音质,这实际上是编码格式的问题。

mp3、aac这些编码格式是有损压缩,其中mp3支持的最大码率是320Kbps,而wav编码格式是无损压缩,虽然压缩后的码率可能会比降低,但是它在播放时能无损还原采样数据。

最后值得一提的是,在网络音频文件、音频直播时,需要考虑限制码率,限制码率的目的是为了限制数据量的大小,避免带宽、流量等问题。

音频编码格式一般采用aac,音频码率一般设置为128Kbps就可以了。

总结

以上是音频的基础概念,音频在很多介绍中都不会说到音频帧,因为普通的视频编辑场景是用不到的,但是在音视频处理中音频帧的概念是十分重要的,不然会出现很多问题,如音频重编码重采样后,出现卡顿、音频播放过快等问题。

介绍完了音频和视频的基础概念,后面我们会介绍关于音视频处理、识别的一些软件和框架。

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

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

相关文章

95后刚毕业2、3年就年薪50W,才发现,打败我们的不是年龄····

一刷朋友圈,一读公众号,一打开微博,甚至是一和朋友聊天,这些让人焦虑的话题总会铺天盖地的袭来: Ta刚毕业半年,就升职加薪当上了测试主管 (同样是一天24小时,为什么同龄人正在抛弃…

【Linux】编辑器——vim(最小集+指令集+自动化配置)

目录 1.vim最小集 1.1 vim的三种模式 1.2 vim的基本操作 2.vim指令集 2.1 命令模式指令集 移动光标 删除文字 复制 替换 撤销上一次操作 更改 跳至指定的行 2.2 底行模式指令集 列出行号 跳到文件中的某一行 查找字符 保存文件 多文件操作 3.如何配置vim 配…

网络编程之TCP 的介绍

TCP 的介绍学习目标能够说出TCP 的特点1. 网络应用程序之间的通信流程之前我们学习了 IP 地址和端口号,通过 IP 地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数…

科技 “新贵”ChatGPT 缘何 “昙花一现” ,仅低代码风靡至今

恍惚之间,ChatGPT红遍全网,元宇宙沉入深海…… 在科技圈,见证了太多“昙花一现”,“新贵” ChatGPT 的爆火几乎复制了元宇宙的路径,它会步元宇宙的后尘,成为下一个沉入深海的工具吗? 不可否认的…

小程序开发注意点

1.组件样式隔离注意点 2.methods方法 3.自定义组件的properties参数 4.自定义组件的事件监听 5.纯数据字段 6.插槽 单个插槽 启用多插槽 使用多个插槽 7.属性绑定实现父传子功能 例如在这里有一个组件为<one></one>&#xff0c;那么可以在组件当中传入参数 &l…

iOS上架及证书最新创建流程

目前使用uniapp框架开发app&#xff0c;大大节省了我们兼容多端应用的工作量和人手&#xff0c;所以目前非常缺乏ios上架和证书创建流程流程的文档假如你没有任何的打包或上架经验&#xff0c;参考本文有很大的收益。通常申请ios证书和上架ipa应用&#xff0c;是需要MAC电脑的&…

干货复试详细教程——从联系导师→自我介绍的复试教程

文章目录联系导师联系之前的准备联系导师注意自我介绍教育技术领域通用的复试准备其他补充联系导师 确定出分和自己能进复试以后联系。 分两类 科研技能型 低调&#xff0c;如实介绍&#xff0c;不吹不水。就算你很牛啥都会手握核心期刊论文也不太狂 学霸高分型 不要自卑&…

审计syslog设备活动

从交换机到路由器&#xff0c;几乎所有网络设备都会生成syslog。因为您的网络中有大量生成syslog的设备&#xff0c;所以审计过程&#xff08;包括跟踪、监控和分析所有syslog&#xff09;需要花费大量时间和精力。但是&#xff0c;无论这些任务需要多少精力去完成&#xff0c;…

Java:Java与Python — 编码大战

Java和Python是目前市场上最热门的两种编程语言&#xff0c;因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点&#xff0c;但主要区别在于Java 是静态类型的&#xff0c;Python是动态类型的。它们有相似之处&#xff0c;因为它们都采用了“一切都是对象”…

3、Maven安装

前言&#xff1a;工具下载地址阿里云盘&#xff1a;Maven&#xff1a;https://www.aliyundrive.com/s/SgHKjQ5doSp提取码: ml40一、什么是maven?Apache Maven是个项目管理和自动构建工具&#xff0c;基于项目对象模型&#xff08;POM&#xff09;的概念。作用&#xff1a;完成…

小白都能看懂的C语言入门教程

文章目录C语言入门教程1. 第一个C语言程序HelloWorld2. C语言的数据类型3. 常量变量的使用4. 自定义标识符#define5. 枚举的使用6. 字符串和转义字符7. 判断和循环8. 函数9. 数组的使用10. 操作符的使用11. 结构体12. 指针的简单使用C语言入门教程 1. 第一个C语言程序HelloWor…

Could not find resource jdbc.properties问题的解决

以如下开头的内容&#xff1a; Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in SQL Mapper Configuration 出现以上问题是没有在src/main/resources下创建jdbc.prop…

IDEA怎么自动生成serialVersionUID

序列化和反序列化Java是面向对象的语言&#xff0c;与其他语言进行交互&#xff08;比如与前端js进行http通信&#xff09;&#xff0c;需要把对象转化成一种通用的格式比如json&#xff08;前端显然不认识Java对象&#xff09;&#xff0c;从对象到json字符串的转换&#xff0…

CF707C Pythagorean Triples 题解

CF707C Pythagorean Triples 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3样例 #4样例输入 #4样例输出 #4样例 #5样例输入 #5样例输出 #5提示思路代码实现题目 链接 http…

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy GANs可以创造性地生成数据&#xff0c;这样就可以用在数据增强领域&#xff0c;在某些缺乏数据的行业认为地添加数据。此外&#xff0c;生成的数据如果用于神经网…

365天深度学习训练营-第J3周:DenseNet算法实战与解析

目录 一、前言 二、论文解读 1、DenseNet的优势 2、设计理念 3、网络结构 4、与其他算法进行对比 三、代码复现 1、使用Pytorch实现DenseNet 2、使用Tensorflow实现DenseNet网络 四、分析总结 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习…

如何使用 ESP-PROG 板的 Program 接口为 ESP32-S3-WROOM-1 系列的模组烧录固件?

ESP-PROG 是一款乐鑫推出的开发调试工具&#xff0c;具有自动下载固件、串口通信、JTAG 在线调试等功能。具体使用说明参见&#xff1a;ESP-Prog 下载与调试板介绍 。 ESP-Prog 采用 FTDI 公司的 FT2232HL 为 USB Bridge Controller 芯片&#xff0c;可通过配置将 USB 2.0 接口…

嵌入式开发:如何将嵌入式代码库从C转换为C++?

几十年来&#xff0c;嵌入式软件工程师们一直在争论是否应该使用C替代C语言进行开发工作。56%的嵌入式软件是用C语言编写的。然而&#xff0c;C已经逐渐普及&#xff0c;大约23%的新嵌入式软件项目都是用C编写的。那么&#xff0c;嵌入式开发人员要如何将嵌入式代码库从C转换为…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计

随着高科技技术在现代化战争中日益重要作用&#xff0c;飞行装备的研制亦从单元体制发展 到多元体制。航空装置系统在设计过程中&#xff0c;需要大量测试工作&#xff0c;尤其是需要把系统研制 和飞行试验中各部分工作状态参数实时记录&#xff0c;用以分析、改进设计。记录仪…

006 金融工具库funcat安装教程及异常处理

funcat库集合了同花顺、通达信等的常用公式&#xff0c;安装后可以直接使用公式制定策略。 funcat常用公式可参考github说明&#xff1a;GitHub - cedricporter/funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。 常见异常&#xff1a; 使用…