我寫了一個程序,打開wav文件並通過控制檯播放它們,然後修改聲音並重播它...如何用修改的聲音保存新的wav文件?所以基本上我想創建一個wav文件並將修改後的結果寫入它。我使用WAVEFORMATEX
作爲音頻數據。如何使用WAVEFORMATEX編寫.WAV文件?
我的工作就可以了多一些,我得到的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);
}
C++和我一直在嘗試不同的東西,我在網上找到的,但我不能讓他們的工作,所以我一直不得不重新開始,所以我沒有任何的代碼,但爲節約部分的程序 – 2013-04-29 19:20:38
好吧,所以我工作了一些,我得到了創建的wav文件,但它不會播放 – 2013-04-30 01:39:49
我的項目是由於明天我的決賽和我唯一離開這麼做的,我真的很感激幫助我希望我能做更多的研究,但明天我還有其他2場決賽,所以我沒有時間浪費時間做研究,就像我昨天整天不做研究一樣,任何援助都會很棒 – 2013-04-30 01:55:02