zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ffmpeg 音频概念的详解

概念 详解 FFMPEG 音频
2023-09-14 09:14:22 时间

引言
在用ffmpeg进行音视频开发的时候,往往会涉及到一些音频的专业名词。初看的时候感觉好像是懂的,但是在进行开发的时候,有好些参数却不知道为什么这么设置。
下面就好好的看看,他们的具体含义。

重要参数
采样频率:每秒采集数据的次数
采样位数:每次采集数据的位数
语音编码(format):语音编码指语音数据存储和传输的方式
声道(sound chanel):声音在录制时在不同空间位置采集的相互独立的音频信号
帧:音频帧跟编码格式相关,它是各个编码标准自己实现的
周期:音频设备一次处理所需要的帧数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。
通道数: 即声音的通道的数目。常有单声道和立体声之分
采样频率
正常人听觉的频率范围大约在20Hz~20kHz之间,
根据奈奎斯特采样理论(2倍),为了保证声音不失真,采样频率应该在40kHz左右。(采样频率必须大于等于音频信号的最大频率的两倍,记住,是最大频率。)
目前语音识别服务只支持16000Hz和8000Hz两种采样率,其中8000Hz一般是电话业务使用,其余都使用16000Hz。
22050 的采样频率是常用的,44100已是CD音质。

44100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD,SVCD,MP3)所用采样率
48000 Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
8000 Hz - 电话所用采样率, 对于人的说话已经足够
22050 Hz - 无线电广播所用采样率
采样位数
即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。
每个采样数据记录的是振幅, 采样精度取决于采样位数的大小:

1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;
2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;
4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.
我们首先要知道:电脑中的声音文件是用数字0和1来表示的。
连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样位数,也称为量化精度。

我们定义0dB为峰值,通过计算 CD音频可的动态范围就是"-96dB~0dB。"
每一个比特大约可以记录6分贝的声音。
我们常见的16Bit(16比特),可以记录大概96分贝的动态范围(有计算公式)。

  • Bit意为"位"或"比特",是计算机运算的基础;
  • Byte意为"字节",是计算机文件大小的基本计算单位;
  • 1byte=8bits,两者换算是1:8的关系。
  • 两个字节一个汉字,16bit=1个汉字
    1
    2
    3
    4
    位深度较高时,精度就越高,可以记录更宽的音域


帧记录了一个声音单元,其长度为样本长度(采样位数)和通道数的乘积。

假设音频采样率 = 8000,采样通道 = 2,位深度 = 16,采样间隔 = 20ms

首先我们计算一秒钟总的数据量,采样间隔采用20ms的话,说明每秒钟需采集50次,这个计算大家应该都懂,那么总的数据量计算为

一秒钟总的数据量 =8000 * 2*16/8 = 32000
所以每帧音频数据大小 = 32000/50 = 640
每个通道样本数 = 640/2 = 320

比特率
每秒的传输速率(位速, 也叫比特率)。如705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒的意思,表示每秒705600bit的容量。

非交错模式
首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本。

通道数
通道数的增加,音频大小会将近翻倍。