0

シンプルな WAV 16 ビットから 8 ビットへの (そして可能であれば元に戻す) コンバーターのソース コード (できれば C/C++) へのリンクを教えてもらえますか? C++ の基本的な知識があり、新しいプロジェクトの wav の書き込みと値の変換を理解するためのリソースが必要です。現在、RIFF チャンク構造につ​​いて講義を行っています。

また、異なるビット深度間で値を変換するための式(これらも標準外)は高く評価されています...

メモ帳で編集して簡単にコンパイルできるように、シンプルでコマンドラインを好むでしょう。

前もって感謝します!

4

1 に答える 1

2

WAV ファイルの読み書きについては、仕様を参照してください:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

8 ビットと 16 ビットの間で変換するには、256 で除算または乗算するだけです
。たとえば (C で 16 ビットから 8 ビットに変換する場合):

  • を使用して、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);
  • ファイルを閉じることを忘れないでください。

より具体的な情報が必要な場合は、お問い合わせください。

于 2011-07-31T17:51:40.837 に答える