Запись содержимого DirectSound CaptureBuffer в файл WAV на C#
Я записал звук в CaptureBuffer, но не могу понять, как сохранить его в файл WAV. Я пробовал это ( http://www.tek-tips.com/faqs.cfm?fid=4782), но это не сработало, или я не использовал его должным образом. Кто-нибудь знает, как это решить? Пример кода будет очень признателен.
1 ответ
Файл WAV - это файл RIFF, состоящий из двух основных "кусков". Первый - это форматный блок, описывающий формат аудио. Это будет та частота дискретизации, которую вы записали (например, 44,1 кГц), какая битовая глубина (например, 16 бит) и сколько каналов (моно или стерео). WAV также поддерживает сжатые форматы, но маловероятно, что вы записали сжатый звук, поэтому ваш буфер записи будет содержать звук PCM.
Тогда есть блок данных. Это часть файла WAV, которая содержит фактические аудиоданные в буфере захвата. Это должно быть в формате, описанном в формате чанка.
В рамках проекта NAudio я создал класс WaveFileWriter, чтобы упростить создание файлов WAV. Вы передаете WaveFormat, который описывает формат захваченного аудио. Затем вы можете просто записать необработанные данные в.
Вот простой пример кода, как вы можете использовать WaveFileWriter:
WaveFormat format = new WaveFormat(16000, 16, 1); // for mono 16 bit audio captured at 16kHz
using (var writer = new WaveFileWriter("out.wav", format)
{
writer.WriteData(captureBuffer, 0, captureBuffer.Length);
}