代码之家  ›  专栏  ›  技术社区  ›  Gabriel Pizarro

WAV“data”子块是如何构造的?

  •  1
  • Gabriel Pizarro  · 技术社区  · 6 年前

    我现在必须处理数据块,但我不知道/没有资源来学习如何将样本拼凑在一起。如果可能的话,你能回答与链接/信息上 数据块,而不是一般WAV文件的结构。

    我需要更多地了解样本是如何逐字节构造的。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Brad    6 年前

    这当然取决于使用的编解码器,但我们将假设PCM,因为这是迄今为止最常见的东西,你会发现在WAV文件。

    PCM是一种对特定时刻的压力测量进行编码的方法。如果我测量压力水平足够快,有足够的分辨率,我可以准确地近似原始波形。

    Sampling

    https://en.wikipedia.org/wiki/Pulse-code_modulation

    因为您已经在分析标头,所以您知道采样率。这是每秒采集的样本数。每秒44100个采样(或44.1 kHz采样率)是典型的CD音频。对于视频,48 kHz的采样率更常用。

    从标题中,还可以知道每个样本的位。这表示每个采样的分辨率。16位样本自然每个样本占用2个字节。

    在音频数据中,样本只是一个接一个的数值。

    [sample 0][sample 1][sample 2][...]
    

    [L][R][L][R][L][R][L][R][...]
    

    要真正读取这些数值,数据通常以小尾数形式写入。对于16位及更高的样本,通常使用有符号整数。