🎬 第二章 音视频入门
📄 一句话概括

音频的数据量由采样率 × 位深 × 声道三个参数相乘决定——采样率管多密、位深管多细、声道管几路。

📝 本节和前面几节的关系

2.2.1 讲了画面,这一节讲声音。两者合起来才是完整的音视频。

一、声音是什么

声音是空气的振动——一条随时间连续变化的波形。 计算机只会存数字,所以第一步必须把这根连续的曲线切成一段段的离散值。 这个过程叫采样:每隔固定的时间量一次,把量到的值记下来。

二、三个决定数据量的参数

采样率:一秒量多少次。电话 8 kHz、CD 44.1 kHz、录音棚 48 kHz。 位深:每次量到什么精度。8 bit 只有 256 档,16 bit 有 65536 档。 声道数:单声道 1 路、立体声 2 路、环绕声更多。 每秒字节数 = 采样率 × (位深 / 8) × 声道数——三个一起乘,缺一不可。

三、采样定理给了一条底线

采样率不能随便定:要还原某个频率的声音,采样率至少是它的两倍。 人耳能听到的上限约 20 kHz,所以 CD 选了 44.1 kHz(略高于 40 kHz,留了余量)。 这解释了为什么电话听着闷——它只采到 8 kHz,4 kHz 以上的声音根本没被记下来。

四、位深决定什么

位深决定的不只是【精细度】,还有信噪比。 每多 1 位,可用的动态范围大约多 6 dB:16 bit 约 96 dB,24 bit 约 144 dB。 16 bit 对播放够用,24 bit 是给录音和后期留余量的——因为多次处理会累积误差。

五、动手 Demo:音频每秒要花多少字节

音频的数据量由三个参数决定:采样率、位深、声道数。

rows = [
    ("电话",   8000,  8, 1),
    ("CD 音质", 44100, 16, 2),
    ("录音棚", 48000, 24, 2),
]
for name, sr, bit, ch in rows:
    bps = sr * (bit / 8.0) * ch
    print("%-8s %5d Hz / %2d bit / %d 声道 -> %.0f 字节/秒" % (name, sr, bit, ch, bps))

实跑输出:

--------------------------------------------------------------------
音频每秒要花多少字节
--------------------------------------------------------------------

音频的数据量由三个参数决定:采样率、位深、声道数。

  场景        采样率       位深       声道     每秒字节
  ------------------------------------------------------
  电话        8000 Hz      8 bit      1        8000
  CD 音质     44100 Hz     16 bit     2        176400
  录音棚      48000 Hz     24 bit     2        288000

  三个参数相乘就是每秒字节数——**采样率管【多密】,位深管【多细】,声道管【几路】**。
  CD 音质一分钟 = 176400 x 60 = 10,584,000 字节 = 10.1 MB

三个参数相乘就是每秒字节数:采样率管【多密】、位深管【多细】、声道管【几路】。 CD 音质一分钟约 10.1 MB,比视频小两个数量级——这也是音频处理相对轻松的原因。

30 秒实验

  1. 在 Windows 的【声音设置 → 属性 → 高级】里看一眼你声卡的采样率与位深。
  2. 用 Demo 9 的公式算出它每秒多少字节。

常见误区

  1. 以为采样率越高就一定越好。超过两倍上限频率的部分,人耳听不出来。
  2. 把位深当成音质。它主要决定动态范围(信噪比)。
  3. 忽略声道数。立体声比单声道直接翻一倍数据量。
自测三问(点开对答案) 1. 音频每秒字节数由哪三个参数决定? —— 采样率、位深、声道数,三者相乘。 2. 采样定理说的是什么? —— 要还原某个频率的声音,采样率至少要达到它的两倍。 3. 位深主要影响什么? —— 可用的动态范围与信噪比,大约每多 1 位多 6 dB。

相关笔记