Как воспроизвести файлы .wav в C ++ в Linux?

У меня есть вопрос о воспроизведении файлов .wav в C ++. Я ищу способ воспроизвести его в Linux и Windows, и я хочу разбить его, пока функция не завершена, знаете ли вы образец для этого?

Спасибо за любой ответ :)!

Я из Германии, пожалуйста, не сердитесь на мою грамматику или орфографию: D.

3

Решение

Есть несколько способов сделать это.

Самый простой, уродливый и самый хакерский способ сделать это — написать прямо на ваше звуковое устройство, расположенное в /dev/snd/, Однако это действительно зависит от вашего дистрибутива Linux, и некоторые современные больше не позволяют вам делать это. В общем, прямое чтение / запись на /dev/ устройства исчезают. Вот вопрос, отвечающий на это.

В течение очень долгого времени «официальным» способом было использование библиотеки alsa, которая использует интерфейс в стиле C. Обычно это довольно сложно, полно подводных камней и «обходных путей», которые зависят от вашего точного аудиооборудования.

Я думаю, что Альса постепенно заменяется Джек, который, я надеюсь, проще в использовании. У меня нет никакого опыта с этим.

Последний метод, который я знаю, с Portaudio, который, как следует из названия, является несколько переносимым по крайней мере между Windows, Linux и OSX.

Все эти библиотеки позволят вам контролировать ваше аудио оборудование, init / setup / play. Что просто в файлах wav, так это то, что содержимое является необработанным pcm, который обычно является форматом, используемым этими библиотеками. Формат WAV обычно выглядит так:

[wav header] 

Если вы можете управлять несколькими миллисекундами мусора в начале воспроизведения, вы также можете «безопасно» отправить заголовок для воспроизведения и избежать его разбора. Вы должны будете понимать форматы PCM и должны принести некоторые дополнительные чтения.

В качестве дополнительной «хитрости», которая не имеет прямого отношения к C ++, я настоятельно рекомендую использовать Audacity. Это небольшая программа, которую я вижу как блокнот / VIM аудио файлов. Он небольшой, быстро загружается, позволяет копировать / вставлять сегменты аудио и определять форматы PCM. (На самом деле, вы просто изменяете настройки PCM, пока звук не «звучит» правильно, но все же полезно

2

Другие решения

В названии упоминается Linux, но затем вы упомянули Windows и Linux в этом посте.

  • Для Linux лучше всего использовать gstreamer, если вы настаиваете на C ++. Посмотрите код gstreamer для gst-launch. Он запускается, как показано ниже, на машине с Linux.

    $ gst-launch filesrc location = «местоположение файла»! wavparse! alsasink

От, http://sanchayanmaity.github.io/beagleboard-xm/linux/programming/software/2014/08/07/playing-wavmp3-file-using-gstreamer-in-code.html

  • Для окон, или если вы хотите использовать независимый от ОС код в Windows и Linux, вы можете использовать SDL,

http://lazyfoo.net/SDL_tutorials/lesson11/

  • Другой альтернативой (кроссплатформенный, объектно-ориентированный) является SFML. Проверьте пример воспроизведения аудио файла wav по адресу,

    http://www.sfml-dev.org/tutorials/2.0/audio-sounds.php

1

По вопросам рекламы [email protected]