Что такое легкая кроссплатформенная библиотека WAV?
===================================================

Я ищу легкий способ сделать так, чтобы моя программа (написанная на C) могла воспроизводить аудиофайлы в Windows или Linux. В настоящее время я использую родные вызовы Windows, которые по сути являются просто одним вызовом, которому передается имя файла. Я хотел бы что-то подобное, что работает на Linux.

Аудио файлы: Microsoft PCM, одноканальный, 22 кГц

Какие-либо предложения?

 я провел небольшое исследование и не нашел простого (простого, например, вызова одной функции) способа воспроизведения аудиофайла. Но с некоторыми строками кода это возможно даже переносимым способом с использованием уже упомянутых portaudio и libsndfile (LGPL).

Вот небольшой тестовый пример, который я написал для тестирования обеих библиотек:

Некоторые примечания к примеру. Не рекомендуется выполнять загрузку данных внутри обратного вызова потока, но внутри собственного потока загрузки. Если вам нужно воспроизвести несколько аудиофайлов, это становится еще сложнее, потому что не все бэкэнды portaudio поддерживают несколько потоков для одного устройства, например, бэкэнд OSS - нет, а бэкэнд ALSA это делает. Я не знаю, как обстоят дела с окнами. Поскольку все ваши входные файлы имеют одинаковый тип, вы можете смешивать их самостоятельно, что немного усложняет код, но тогда у вас также будет поддержка OSS. Если бы у вас также были разные частоты дискретизации или количество каналов, это стало бы очень сложно.

Так что, если вы не хотите воспроизводить несколько файлов одновременно, это может быть решением или, по крайней мере, началом для вас.



[SDL\_Mixer](http://gpwiki.org/index.php/SDL_mixer:Tutorials:Playing_a_WAV_Sound_File)Хотя и не очень легкий, он имеет простой интерфейс для воспроизведения файлов WAV. Я верю, как[SDL](https://www.libsdl.org/), SDL\_Mixer также является LGPL.

[OpenAL](http://connect.creativelabs.com/openal/default.aspx) это еще одна кроссплатформенная библиотека аудио, которая больше ориентирована на 3D аудио.

Еще одна аудио библиотека с открытым исходным кодом, которую вы можете попробовать[Portaudio](http://www.portaudio.com/)