simple wav 16-bit / 8-bit converter source code?

拜拜、爱过 提交于 2019-12-13 07:00:51

问题


could someone provide me a link to source code (preferably C/C++) of a simple WAV 16-bit to 8-bit (and back if possible) converter? I have basic knowledge of C++ and I need to have a resource to understand wav writing and converting values for my new project. At this moment I have a lecture about RIFF chunks structure.

Also any formulas for converting values between different bit depths (also these un standard) appreciated...

I'll prefer it to be simple and command line so I can edit it with notepad and easily compile.

Thanks in advance!


回答1:


For reading and writing WAV files have a look at the specification:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

For converting between 8 and 16 bit you just need to divide or multiply by 256.
For example (converting from 16 to 8 bit in C):

  • You open the 16 bit file and the (not yet existent) 8 bit file using fopen().
  • You read the beginning of the 16 bit file and write the beginning of the 8 bit file according to the specification.
  • Then you do the following for each sample:
    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);
  • Don't forget to close your files.

If you need more specific information please ask.



来源:https://stackoverflow.com/questions/6494505/simple-wav-16-bit-8-bit-converter-source-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!