首页 > 其他分享 >ffmpeg简易播放器(2)--了解音频格式

ffmpeg简易播放器(2)--了解音频格式

时间:2025-01-17 16:53:56浏览次数:1  
标签:采样 声音 编码 ffmpeg 音频格式 -- 音频 采样率 幅值

声音是个啥

初中物理学过,声音是由物体振动产生的,声音是一种机械波,传播的介质是空气。声音的频率决定了声音的音调,频率越高,音调越高。声音的振幅决定了声音的大小,振幅越大,声音越大。

也就是说,声音实质上是一个连续的信号,他有着频率以及振幅这两个基本属性。而我们的音频文件无非就是记录这两个属性,然后再通过播放器还原出声音。

但是现实中的声音的波形是复杂多样的,他可能是不同频率不同幅值的正弦波的叠加,因此无法简单的用单一的频率和幅值来描述。

采样与采样率

一个简单的思想是将连续的波形离散化,也就是在一定的时间间隔里,取声音波形上的点。这样就可以用一系列的点来描述声音波形了,大概操作如下图。这个操作叫做采样,采样完后在进行量化将其转换为离散量,也就是将连续信号变为离散信号的过程(详见信号与系统,数字信号处理等课程)。
image

我们将采样的频率,也就是一秒钟取多少个样本点,称为采样率。不难看出,相同时间内取的样本点越多,也就是采样率越高,对波形的还原能力就越强。

根据奈奎斯特采样定理,一个信号的最高频率为\(f\),那么他的采样率至少要为\(2f\)时,可以无损失的还原出原信号。知道这个定理即可,若想知道原理也可参考上面两门课程。有奈奎斯特采样定理,以及人类的听觉范围大约为20 - 20000 Hz也就是20Hz - 20KHz之间,低于20Hz或者超过20KHz的声音人类是听不见的。也就是说,只要采样率为人类所能听到的最高频率的两倍就可以保证所有我们能听到的声音都被无损的记录下来也就是20KHz * 2 = 40 KHz,因此一般常见的采样率有44.1KHz,48KHz等,再者可能有更高级别的采样率,比下图网易云的分级有着96KHz甚至于192KHz。

image

量化与量化位数

根据数字信号的定义,时间以及数值上均为离散的信号为离散信号,因此需要采样后将采样点的幅值进行离散化。这个幅值离散化的过程即为量化。

对于音频信号,其频率决定了音调,而幅值决定的便是响度也就是声音的大小。由计算机存储单位可知,一个字节(Byte)拥有8位(bit)可存储的数值范围\(0到2^{8}-1 = 256\),也就是可将声音的幅值分为256个等级。显然使用的存储单元越多,幅值的分级也就越多,声音的还原也就越精确

一般采用2个字节也就是16位的存储空间去作为一个采样点的量化位数,这样可以将声音的幅值分为\(2^{16} = 65536\)个等级,这样的量化位数已经足够用来记录人类能听到的声音了。同时还有着更细的划分比如上图中网易云的24位(24bit)的量化位数。

声道

音频信号的声道数决定了声音的空间位置,也就是声音的立体感。一般常见的声道数有单声道(mono)和双声道(stereo),分别对应着单声道和立体声。双声道的音频文件可以通过左右声道的音量大小来模拟声音的位置。

一般来说,对于双声道的音频文件,假设位深为16bit,那么同一时间点上会有两个16bit的采样点,一个对应左声道,一个对应右声道。存储格式上也是按照(左右)(左右)....这样的顺序进行存储的。大体体现为下面图中interleaved的存储方式。当然也有着另一种存储方式,就是分开存储,可以类比与图片中的通道数,将左右声道单独存储在两个通道中,这种存储方式称为planar存储方式。

image

音频帧

对于音频来说,其一帧的概念起始并不明确。视频的一帧可以非常直观的理解为一张图片。而音频帧的规则指定是由各个标准实现的,比如常见的ACC格式的音频帧大小为1024个采样点,而MP3格式的音频帧大小为1152个采样点。这个音频帧的大小是由编码器决定的,不同的编码器有着不同的音频帧大小。

通过音频帧的规定,我们可以计算出一帧音频的时长。以MP3格式为例,其采样率为44.1KHz,音频帧大小为1152个采样点,那么一帧音频的时长为\(1152 * 1/44100 = 0.026\)秒,也就是26ms。

而一般最常用的格式组合便是44.1KHz,16bit,双声道,这样的音频格式也就是CD音质。可以计算出一秒钟的所需的存储空间为每秒采样数44.1K乘以字节数2乘以声道数2,\(44100 * 2 * 2 = 176400B\),换算一下就是约为172KB。

编码与解码

音频编码与视频编码类似,也是为了减小音频文件的大小。常见的音频编码格式有MP3,AAC,FLAC等。这些编码格式的原理与视频编码类似,都是通过对音频信号的压缩来减小文件的大小。

音频编码的方式有很多种,比如有损编码,无损编码等。有损编码是通过去除一些人耳听不到的声音来减小文件大小,而无损编码则是通过其他方式来减小文件大小,但是不会丢失任何声音信息。常见的有损编码格式有MP3,AAC等,而无损编码格式有FLAC,WAV等。

压缩或者编码后的音频常用码率衡量,码率即为每秒钟的比特数,显然码率是由采样率以及量化位数共同决定的,也就是说,码率越高,音质越好,文件也就越大。常见的码率有128Kbps(CD音质MP3),192Kbps,320Kbps等。也就是一秒钟传输的音频数据量为128Kb,192Kb,320Kb。注意这里的Kb是指Kilobit,数据传输意义上1kb = 1000kb。

标签:采样,声音,编码,ffmpeg,音频格式,--,音频,采样率,幅值
From: https://www.cnblogs.com/CrescentWind/p/18677316

相关文章

  • 【模板】 clang-format 模板
    {BasedOnStyle:Google,AccessModifierOffset:-2,AlignAfterOpenBracket:Align,AlignConsecutiveAssignments:false,AlignConsecutiveDeclarations:false,AlignEscapedNewlines:DontAlign,AlignOperands:true,AllowAllParametersOfDeclarationOnNextLine:true,......
  • Docker 容器之间通过名字相互访问
    目录docker网卡介绍创建自定义网络语法选项自定义网络示例示例创建容器默认网络和自定义网络区别docker网卡介绍docker安装好之后默认会创建三个虚拟网卡,可以使用 dockernetworkls 命令来查看,三个虚拟网卡和VMware的类似。[root@192~]dockernetworklsNETWORKID......
  • 【YashanDB知识库】YFS_修改AU_SIZE参数
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7080871.html?templateId=1718516基本信息场景:YAC数据库已经创建完毕,需要修改DG0的AU_SIZE,提高创建数据文件性能。DG0的AU_SIZE只能通过重建数据库来修改。本文说明修改方法。源库版本:YashanDB企业......
  • python 股票数据接口 python如何获取股票交易数据
    python股票数据接口python如何获取股票交易数据 转载风华绝代的java2023-08-0521:48:47文章标签python股票数据接口python数据库c#sqlH5文章分类Python后端开发阅读数387有备考软考的小伙伴,想积分落户,单位评职称?科目太多不知道怎么选?考试考点难点太多没有头绪?刚准......
  • 自主研发驱动程序不仅能为硬件设备提供定制化支持,提升性能和稳定性,还能够增强企业的技
    自主研发驱动程序是指由企业或组织自行设计、开发并实现的硬件设备驱动程序。驱动程序(DeviceDriver)是操作系统和硬件之间的桥梁,用于控制硬件设备的功能和提供操作系统与硬件设备间的通信接口。自主研发驱动程序通常是为了满足特定硬件或操作环境的需求,提升硬件的性能、兼容性和稳......
  • 用C++实现一个基于模板的观察者设计模式
    观察者模式定义观察者模式(ObserverPattern)是一种行为型设计模式,用于定义对象间的一对多依赖关系,使得当一个对象状态发生变化时,其所有依赖它的对象都会收到通知并自动更新。核心概念角色定义Subject(被观察者):持有观察者列表,维护观察者的注册和移除。状态改变时通知所有观......
  • Docker Compose 笔记
    目录Docker-Compose简介DockerCompose的定义和目的Docker-Compose用来实现Docker容器快速编排Docker-Compose模板文件简介eg:Docker-Compose的编排处出来的部署架构Docker-Compose的编排结构安装Docker-Compose验证Docker-compose是否安装成功卸载dockercompose:Dockerc......
  • 2025年春晚刘谦魔术揭密柳岩魔术蛇来运转解密
    刘谦与柳岩在2025年央视春晚上表演的魔术《蛇来运转》尚未播出,魔术的具体细节和揭秘内容暂无法得知。通常魔术师的魔术都涉及到严格的保密和专业技巧、揭秘刘谦魔术视频迅雷云盘https://pan.xunlei.com/s/VOEyiIBy85R5e4HRGrsi4hXRA1?pwd=eryx道具机关类特制道具:魔术中可能......
  • 折半搜索(Meet in the Middle)
    折半搜索(MeetintheMiddle)思想先搜索前一半的状态,再搜索后一半的状态,再记录两边状态相结合的答案。一般暴力搜索的时间复杂度是\(O(2^n)\)级别的,但是折半搜索可以将时间复杂度降到\(O(2^{\frac{n}{2}})\)。例题拿题说事儿。[LuoguP4799[CEOI2015Day2]世界冰球锦标赛......
  • 超高频算法——双指针思想的领悟 python
    目录问题引入1解决方案牛刀小试问题引入2解决方案举一反三实战演练(双指针)问题引入3Whatis滑动窗口关键要素实战演练(滑动窗口)总结问题引入1给你一个数组(按非递减顺序排列),假定为【2,4,5,6,7,9】请你在数组中找到两个数满足:相加等于10,返回它们的值。你是一个不知道双......