как сохранить аудиоданные в памяти как wav-файл?

Когда приложение вызывает waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh) в windowsх, я сохраняю копию аудиоданных (на которые указывает pwh-> lpData), отправленных на звуковую карту в память.

Теперь я хочу сохранить аудиоданные в формате WAV на диске, как мне это сделать?

У меня есть указатель на блок аудиоданных и размер аудио данных.

Формат wav довольно тривиален , и легко написать свою собственную реализацию. Кроме того, вы можете использовать библиотеку, такую ​​как libsndfile .

Используя устаревший мультимедийный API, вы будете использовать mmioOpen , mmioCreateChunk , mmioWrite . Вот fragment кода: сохранение WAV? , API позволяет вам записывать эти RIFF-файлы, однако структура не так сложна, и вы можете напрямую записывать их в двоичный файл.

Тем не менее WinAPI, хотя и не очень хорошо соответствует вашему waveOutWrite :

  • С DirectShow API вам нужен WavDest Sample и граф фильтров, который использует его для записи входящих данных в файл.
  • В последнем случае Media Foundation API WavSink Sample будет полезен.