Точная кроссплатформенная обработка звука - PullRequest
1 голос
/ 12 мая 2011

Как я могу воспроизвести и приостановить волновой файл в C ++ и получить длительность и продолжительность его воспроизведения в миллисекундах.Желательно, чтобы он был кроссплатформенным, но не Qt, поскольку QSound прост, а фонон требует DirectX и не работает с mingw.Спасибо

Ответы [ 4 ]

2 голосов
/ 12 мая 2011

Я бы использовал низкоуровневую библиотеку, такую ​​как libAO . Вы контролируете, сколько разыгрывается, и, таким образом, для «паузы» вы просто перестанете звонить на ao_play() и посчитаете количество отправленных сэмплов.

Простое воспроизведение звука на самом деле не такая сложная задача, для которой требуются сложные API.

1 голос
/ 12 мая 2011

Взгляните на http://www.portaudio.com/. Также в SFML есть аудио модуль: http://www.sfml -dev.org / index.php .Кроме того, существуют коммерческие (но бесплатные в зависимости от проекта) альтернативы, такие как http://www.fmod.org/ и BASS (Win, Mac).

0 голосов
/ 12 мая 2011

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

0 голосов
/ 12 мая 2011

Если вы посмотрите исходный код Audacity , вы можете найти несколько полезных советов.

...