音频基础理论
个人简介
📦个人主页:一二三o-0-O的博客
🏆技术方向:C/C++客户端(直播+音视频剪辑)
📣专栏目标:务实的掌握音视频相关专业知识
🧡如果对您有帮助的话辛苦点赞支持。👍👍👍
音视频基础专栏系列
(一)【音视频基础】音频基础理论
(二)【音视频基础】视频基础理论
(三)【音视频基础】封装格式与编码数据
ffmpeg专栏系列
(一)【ffmpeg】ffmpeg命令工具的使用
(二)【ffmpeg】视频解码器
(三)【ffmpeg】SDL视频显示
(四)【ffmpeg】ffmpeg+SDL实现播放器
声音是如何被听到的
声音的产生
- 声音是由物体振动产生的
- 它可以通过空气、固体、液体等进行传输
- 震动耳膜
- 经过大脑神经识别
人类听觉范围
如上图所示:人类的听觉范围是20Hz~20kHz
声音的三要素
- 音调:音频的快慢
由上图的波形图可知:红线绿线代表的音频的频率大于红线代表的音频的频率,因此绿线代表的音频的音调大于红线代表的音频的音调 - 音量:震动的幅度
由上图的波形图可知:红线右侧的音量震动的幅度大于红线左侧的音量震动幅度,因此右侧的音量高于左侧的音量 - 音色:谐波
不同的音色由不同的谐波组成的:(绿色为基频主频)基频+一次谐波(黄)+二次谐波(蓝)
模数转换
将音频模拟信号转化为数字信号的流程图如下:
PCM裸流
关键采样概念
现在已经将模拟信号转化为了数字信号。在对声音进行量化的过程有一些关键采样概念:
- 采样大小:一个采样用多少bit存放。常用的是16bit
- 采样率:采样频率8k、16k、32k、44.1k、48k
- 声道数:单声道、双声道、多声道
音频采样数据
作用与特点
音频采样数据的作用是:保存了音频中每个采样点的值。 数据特点是体积会很大,一般情况加一首4分钟的PCM格式的歌曲体积为:4604410022 = 42.3MByte(假定采样率为44.1KHz,采样大小为16bit,双声道)。
码率
那么如何计算一个PCM音频流的码率呢?
同理:采样率为44.1KHz,采样大小为16bit,双声道采集的PCM裸流的码率是:44100 * 2 * 2 = 176400Byte/s = 176.4KB/s = 1411.2Kb/s
PCM格式存储
PCM格式的存储方式是单声道的情况下按照顺序存储每个采样点的数据。 双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据。
音频采样数据查看工具:Adobe Audition
如图所示:你可以导入一个PCM音频裸流文件,输入PCM的采样大小、采样率与声道数就可以直接播放PCM音频文件。可以看到音频的波形图、播放电平等关键信息。
ffplay播放PCM
最后大家可以尝试使用ffplay直接播放PCM音频文件。
ffplay命令:ffplay -ar 44100 -ac 2 -f s16le -i 00NocturneNo2inEflat_44.1k_s16le.pcm
- -ar:采样率
- -ac:声道数
- -f:采样大小
- -i:PCM音频文件
播放效果如下图:
参考资料
【1】雷神博客
【2】李超:音视频基础+ffmpeg原理