Воспроизведение звука в C ++ с использованием системных вызовов? - PullRequest
6 голосов
/ 19 февраля 2012

Таким образом, в Windows вы можете использовать функцию PlaySound для воспроизведения файла MP3 в приложении C ++. Какие функции будут доступны для использования в Mac OS X / Linux? Я также был бы признателен, если бы вы могли дать ссылку на несколько примеров программ типа Hello-World, демонстрирующих это.

Ответы [ 3 ]

4 голосов
/ 19 февраля 2012

Вы можете просто open("/dev/dsp") и написать в него. Я полагаю, что это "родной системный вызов", который вы можете получить.

3 голосов
/ 19 февраля 2012

Относительно аудио: Linux! = Mac, поэтому я отвечу на оба вопроса отдельно.

MacOS использует ядро ​​ core для низкоуровневого звука. Основываясь на этом, есть несколько API более высокого уровня. Если вы просто хотите воспроизвести звуковой файл, скорее всего, вам подойдет AV Foundation Framework . Здесь вы найдете пример создания простого приложения для iOS, которое можно легко перенести на MacOS.

Для Linux вся ситуация довольно деликатная. Существует много различных фреймворков и библиотек, и очень непонятно, какой низкий, а какой высокий, поскольку некоторые из них подражают другим. В основном есть ALSA и OSS для аудио низкого уровня. Они оба дерьмо. Джек стремится обеспечить основу для профессионального аудио, но она не очень портативна (по крайней мере, если вы заинтересованы во встроенных устройствах). Большинство ОС Linux в настоящее время используют PulseAudio в качестве своего аудиосервера, который также имеет простой API для простого воспроизведения одного звука и очень сложный API для низкоуровневых программ. Кроме того, есть библиотека gstreamer, которая является довольно переносимой, имеет API-интерфейс снижения на полпути и специально разработана для воспроизведения аудио- и видеофайлов и потоков, и поэтому, вероятно, подходит для Linux.

Я лично рекомендую использовать PortAudio , библиотеку, которая, как следует из названия, предоставляет звуковую инфраструктуру, которая переносима на несколько операционных систем и звуковые платформы . PortAudio также хорошо спроектирован и имеет простой, но гибкий API.

1 голос
/ 19 февраля 2012

Ну, я не уверен, есть ли на современных настольных компьютерах более продвинутые сервисы / библиотеки, которые воспроизводят аудиофайлы, но если вы действительно хотите сделать какой-нибудь низкоуровневый аудиовыход ОС, начните искать здесь .Может быть, это слишком низкий уровень для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...