2011-06-27 52 views
0

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

还可以理解为不同的位深度之间进行转换的值的任何式(也未这些标准)...

我喜欢它是简单的和命令行这样就可以与记事本编辑和容易编译。

在此先感谢!

回答

1

用于读取和写入WAV文件看看规格:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

用于转换8位和16之间,你只需要分或256
乘以例如(从16转换成C: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); 
  • 不要忘记关闭文件。

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