Когда приложение вызывает waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
в windowsх, я сохраняю копию аудиоданных (на которые указывает pwh-> lpData), отправленных на звуковую карту в память.
Теперь я хочу сохранить аудиоданные в формате WAV на диске, как мне это сделать?
У меня есть указатель на блок аудиоданных и размер аудио данных.
Формат wav довольно тривиален , и легко написать свою собственную реализацию. Кроме того, вы можете использовать библиотеку, такую как libsndfile .
Используя устаревший мультимедийный API, вы будете использовать mmioOpen
, mmioCreateChunk
, mmioWrite
. Вот fragment кода: сохранение WAV? , API позволяет вам записывать эти RIFF-файлы, однако структура не так сложна, и вы можете напрямую записывать их в двоичный файл.
Тем не менее WinAPI, хотя и не очень хорошо соответствует вашему waveOutWrite
: