Как изменить битрейт записи WASAPI с помощью NAudio?
Вопрос
Я использую NAudio для декодирования, воспроизведения и записи потока MP3.Для записи я использую WasapiLoopbackCapture
чтобы сохранить поток в WAV-файл:
if (waveIn == null) {
waveIn = new WasapiLoopbackCapture();
writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable);
waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
waveIn.StartRecording();
}
Сейчас я ищу решение, как сохранить wav-файл не со скоростью 3072 кбит/с (что вроде бы стандартно для wasApi).Поток mp3 обеспечивает скорость 128 кбит/с, так что это будет хороший битрейт для моего wav-файла.Я попытался изменить waveIn.WaveFormat
но я не нашел подходящих свойств.
Решение
К сожалению, WASAPI не позволяет изменять частоту дискретизации для обратной записи.После этого вам придется самостоятельно выполнить преобразование частоты дискретизации.А DmoResampler
или WaveFormatConversionStream
Для этого можно использовать классы в NAudio.
Другие советы
Я не знаком с абстракциями Naudio на васапи, но вы можете заставить Windows выдавать вам звук с определенным битрейтом/размером выборки, используя API C++ васапи.Если это поможет