【问题标题】:How is the WAV "data" sub-chunk structured?WAV“数据”子块是如何构成的?
【发布时间】:2018-10-27 04:51:36
【问题描述】:

我正在编写一个 C# 应用程序来处理 WAV 文件,并且我已经完成了足够的代码来读取任何文件的块(即读取格式化元数据和所有其他块,准备使用这些信息处理数据)。

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

我需要了解更多关于随着时间的推移样本是如何逐字节构造的。

谢谢!如果我的问题有问题,请发表评论,以便我可以改写/编辑帖子。

【问题讨论】:

    标签: audio wav chunks


    【解决方案1】:

    这当然取决于所使用的编解码器,但我们假设 PCM,因为这是迄今为止您在 WAV 文件中最常见的内容。

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

    来自维基百科:https://en.wikipedia.org/wiki/Pulse-code_modulation

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

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

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

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

    标题中还显示了通道计数,它告诉您采样了多少离散通道。单声道声音只有 1。立体声将有 2。5.1 环绕声将有 6。样本值本身是交错的,一个通道样本一个接一个,形成一个帧。如果我有一个带有左/右声道的立体声轨道,它看起来像这样:

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

    要实际读取这些数值,数据通常以 little-endian 形式写入。对于 16 位及更高位的样本,通常使用有符号整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2021-04-19
      • 2014-06-23
      • 1970-01-01
      相关资源
      最近更新 更多