2017-01-05 4 views
0

Я запись звука через WasapiLoopbackCapture и записать его в MP3-файл через NAudio.Lame Lib:NAudio Loopback Запись Crackle Звук Ошибка

LAMEPreset quality = LAMEPreset.ABR_320; 

audiostream = new WasapiLoopbackCapture(); 
audiostream.DataAvailable += stream_DataAvailable; 
audiostream.RecordingStopped += stream_RecordingStopped; 

mp3writer = new LameMP3FileWriter(Environment.GetEnvironmentVariable("USERPROFILE") + @"\Music\record_temp.mp3", 
    audiostream.WaveFormat, quality); 

audiostream.StartRecording(); 

Когда пользователь нажимает ЗАПИСЬ кнопку остановки, за исключением I MP3-и остановить запись:

mp3writer.Flush(); 
audiostream.Dispose(); 
mp3writer.Dispose(); 

Все работает отлично, за исключением что выходной файл имеет некоторые тревожные CRACKLE шумы в нем. (См., Например, here). Я думаю, что это может быть так, что мой компьютер немного замедляет процесс сжатия и записи аудиоданных в реальном времени, поэтому некоторые из значений теряются, но это только моя догадка.

Редактировать: При записи на WAVE ошибки не отображаются.

В чем может быть проблема, и как я могу ее решить или обойти?

ответ

0

начните с сохранения аудио в WAV-файле. У этого есть трещины? Если так, то из звуковой карты поступают трещины. Если нет, они поступают из кодировки в MP3-код.

+0

Как я понял в вопросе, трещины не появляются при записи на волну –

+1

Итак, следующий шаг - это преобразовать WAV-файл и преобразовать его в автономный режим в MP3 с помощью LameMp3FileWriter. Посмотрите, куда входят трещины. –

+0

Я предполагаю, что моя машина слишком медленная, чтобы делать кодировку в реальном времени. Я попробую это –