简单的wav 16位/ 8位转换器源代码?

时间:2011-06-27 14:32:49

标签: converter wav bits pcm

有人可以给我一个简单的WAV 16位到8位(如果可能的话)转换器的源代码(最好是C / C ++)的链接吗?我有C ++的基本知识,我需要有一个资源来理解为我的新项目编写和转换值的wav。此刻,我有一个关于RIFF块结构的演讲。

任何用于在不同位深度之间转换值的公式(也是这些非标准的)都赞赏......

我更喜欢简单和命令行,所以我可以用记事本编辑它并轻松编译。

提前致谢!

1 个答案:

答案 0 :(得分:1)

对于读写WAV文件,请查看规范:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

对于8到16位之间的转换,您只需要除以256即可 例如(在C中从16位转换为8位):

  • 使用fopen()打开16位文件和(尚不存在的)8位文件。
  • 您读取16位文件的开头并根据规范写入8位文件的开头。
  • 然后对每个样本执行以下操作:
    int sample = 0;
    // read 2 bytes (= 16 bits) from the 16 bit file into sample:
    fread (&sample, 2, 1, wav_file_16bit);
    sample /= 256; // divide sample by 256
    // write 1 byte (= 8 bits) to the 8 bit file:
    fwrite (&sample, 1, 1, wav_file_8bit);
  • 不要忘记关闭文件。

如果您需要更具体的信息,请询问。