2013-03-24 2 views
1

Я записываю аудио в wav-файл, а также передаю тот же звук в колонки (c++, vs2010, win7). , когда я слышу это в динамиках, я слышу звук, но когда я пишу его в wav-файл, я получаю странный тиканье/шум электричества, добавленный к звуку, я пытаюсь открыть файл с помощью смелости, и я могу ясно видеть что существует пик каждые 0,05 сек. Я не знаю, откуда был добавлен шум, вы можете мне помочь?странный тикающий шум в wav-файле

я добавил запись в файл из моего кода:

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).

+0

Я получаю его из приемника в UdP нить приема пакетов аудио. Я отправляю те же данные в колонки и в файл. Я уверен, что это то, что я написал, данные хорошие. – David

ответ

1

Похоже, что ваш цикл неправильный.

Для обработки 1024 пунктов должно быть:

for (int i = 0; i < 1024; i++) 
+0

Извините, что я ошибся здесь. В моем коде это написано как 1024. Теперь я отредактировал код – David

+0

Это также почему параметр writeLE называется «данные», но называемый «словом» в теле? –

+0

Это просто имя var. Что еще это могло означать? – David