2016-05-17 4 views
0

Я использую NAudio для разделения 2-канального wav-файла, который также генерируется путем записи с использованием Wasapi, включенного в NAudio. Я использовал this в качестве примера для разбиения 2-канального wav-файла. Ниже приведен мой код:Искаженный звук при разбиении 2-канального wav-файла на файлы с моноканальным wav

WaveFileReader reader = new WaveFileReader(outputFileName + "ORIGINAL.WAV"); 
var buffer = new byte[2 * reader.WaveFormat.SampleRate * reader.WaveFormat.Channels]; 
var format = new WaveFormat(reader.WaveFormat.SampleRate, 32, 1); 

for (int i = 0; i < writers.Length; i++) 
{ 
    writers[i] = new WaveFileWriter(String.Format(outputFileName + "{0}.wav", i), format); 
    logevent.writeToLog(Convert.ToString(newWaveIn.WaveFormat.Channels)); 
} 

int bytesRead; 
while ((bytesRead = reader.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    int offset = 0; 
    while (offset < bytesRead) 
    { 
     for (int i = 0; i < writers.Length; i++) 
     { 
      writers[i].Write(buffer, offset, 2); 
      offset += 2; 
     } 
    } 
} 

Битрейт для записанного аудио составляет 2822 Кбит/с. Два выходных wav-файла составляют 1058 кбит/с каждый, и звук воспроизводится при дрожании или очень громком белом шуме.

ответ

1

Если это 32 бит аудио вы имеете дело с, то вам нужно написать четыре байта за раз, а не два в цикле

+0

Большое спасибо! Мне также пришлось изменить форму волны на IeeeWaveformat, поскольку кодировка не была pcm. – Samuel