有人可以给我一个简单的WAV 16位到8位(如果可能的话)转换器的源代码(最好是C / C ++)的链接吗?我有C ++的基本知识,我需要有一个资源来理解为我的新项目编写和转换值的wav。此刻,我有一个关于RIFF块结构的演讲。
任何用于在不同位深度之间转换值的公式(也是这些非标准的)都赞赏......
我更喜欢简单和命令行,所以我可以用记事本编辑它并轻松编译。
提前致谢!
答案 0 :(得分:1)
对于读写WAV文件,请查看规范:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
对于8到16位之间的转换,您只需要除以256即可 例如(在C中从16位转换为8位):
fopen()
打开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);
如果您需要更具体的信息,请询问。