4

wav ファイルを開いてコンソールで再生し、サウンドを変更して再生するプログラムを作成しました...変更されたサウンドで新しい wav ファイルを保存するにはどうすればよいですか? したがって、本質的にはwavファイルを作成し、変更された結果をそれに書き込みたいと考えています。WAVEFORMATEXオーディオのデータに使用しました。

私はそれにもう少し取り組み、wavファイルを作成しましたが、再生されません

ここに私のコードがあります:

// writes the modified audio data into a .WAV file
void writeWaveFile(char* filename,WAVEFORMATEX& wfx)
{   
    FILE* file = fopen(filename, "wb");

    if (file)
    {
        // write wave header 
        unsigned short formatType = wfx.wFormatTag;
        unsigned short numChannels = wfx.nChannels;
        unsigned long  sampleRate = wfx.nSamplesPerSec;
        unsigned short bitsPerChannel = wfx.wBitsPerSample;
        unsigned short bytesPerSample = wfx.nAvgBytesPerSec;
        unsigned long  bytesPerSecond = wfx.nAvgBytesPerSec;
        unsigned long  dataLen = wfx.nBlockAlign;

        const int fmtChunkLen = 16;
        const int waveHeaderLen = 4 + 8 + fmtChunkLen + 8;

        unsigned long totalLen = waveHeaderLen + dataLen;

        fwrite("RIFF", 4, 1, file);
        fwrite(&totalLen, 4, 1, file);
        fwrite("WAVE", 4, 1, file);
        fwrite("fmt ", 4, 1, file);
        fwrite(&fmtChunkLen, 4, 1, file);
        fwrite(&formatType, 2, 1, file);
        fwrite(&numChannels, 2, 1, file);
        fwrite(&sampleRate, 4, 1, file);
        fwrite(&bytesPerSecond, 4, 1, file);
        fwrite(&bytesPerSample, 2, 1, file);
        fwrite(&bitsPerChannel, 2, 1, file);

        // write data

        fwrite("data", 4, 1, file);
        fwrite(&dataLen, 4, 1, file);
        //fwrite(data, dataLen, 1, file);

        // finish

        printf("Saved audio as %s\n", filename);
        fclose(file);
    }
    else
        printf("Could not open %s to write audio data\n", filename);
}
4

2 に答える 2

0

ファイルを完全に自分で作成することもできますが、これにはヘルパー API を使用することをお勧めします。コード リファレンスと詳細については、「waveInOpen を使用して wave ファイルを保存する」を参照してください。

于 2013-05-20T11:41:08.277 に答える
-4

いくつかのコードを組み合わせて、次のリンクのソースを作成しました。10 秒間録音し、バッファを .wav ファイルに保存します。それはそれが得られるのと同じくらい簡単です。申し訳ありませんが、ここにコードを投稿できません。

http://concon.comule.com/wero/mainsound.cpp

于 2015-08-30T17:20:24.770 に答える