1

音声を wav ファイルに録音し、同じ音声をスピーカー ( c++vs2010win7) にストリーミングしています。スピーカーでそれを聞くと、オーディオはクリアに聞こえますが、wav ファイルに書き込むと、奇妙なカチカチ音/電気ノイズがオーディオに追加されます。Audacity を使用してファイルを開こうとすると、はっきりとわかります。 0.05 秒ごとにピークがあります。どこからノイズが追加されたのかわかりません。助けてもらえますか?

私は自分のコードからファイルに書き込みを追加しました:

writeWav(char *filename,short *data) 
{ 
     FILE *wav; 
     wav = fopen(filename,"ab+"); 
     for(int i=0;i<1024;i++) 
     { 
        writeLE(data[i],2,wav); 
     } 
     fclose(wav); 
} 

void writeLE(short data,int nBytes,FILE *wav) //write in little-endian
{ 
     unsigned buf; 
     while(nBytes > 0) 
     { 
         buf = word & 0xff; 
         fwrite(&buf,1,1,wav); 
         nBytes--; 
         word >>= 8; 
     } 
}

この関数writeWavは、パケットを受信するたびに呼び出されます (サイズ = 1024)。

4

1 に答える 1

1

for ループが間違っているようです。

1024 個のアイテムを処理するには、次のようにする必要があります。

for (int i = 0; i < 1024; i++)
于 2013-03-24T14:22:21.370 に答える