QSound и Phonon: Звук в Qt-приложениях

QSound и Phonon: Звук в Qt-приложениях

Если вы разрабатываете Qt-приложение и хотите украсить его звуковыми эффектами, то вы попали по адресу, поскольку эта статья именно об этом. Однако рассматриваемая техника может быть обобщена и для более сложных мультимедийных приложений, но с некоторыми усовершенствованиями, которых мы в этот раз касаться не будем.

РЕКОМЕНДУЕМ: Создание гибкого программного кода

QSound: Воспроизводим звуки

Разработаем простую библиотеку SoundPlayer с использованием QSound. Заголовочный файл soundplayer.h:

Идея довольно проста. Объект SoundPlayer принимает в конструкторе имя звукового файла. Воспроизведение файла происходит после вызова play(). Посмотрим на реализацию в soundplayer.cpp:

Все сводится к вызову функции-члена QSound::play(), если QSound поддерживается в текущей конфигурации системы.

Посмотрим на возможный вариант использования нашей библиотеки:

Я поместил wav-файл в ресурсы приложения. Однако QSound не умеет работать с ресурсами напрямую. Поэтому нам приходится сохранять звуковой файл из ресурсов в некоторый каталог. Для простоты я делаю сохранение в текущий рабочий каталог, однако можно было бы воспользоваться каталогом temp. Или вовсе хранить звуковые файлы в заранее заготовленном месте без использования ресурсов.

Представленный код хорошо работает Windows, но не все так хорошо под Linux (в других системах я тестирование не проводил, хотя в Mac OS пример должен работать, если верить документации). В Linux для работы QSound требуется наличие Network Audio System (NAS). Типичный совет в этой ситуации сводится не к настройке NAS, а к использованию Phonon.

Phonon и Qt: Звуки в Linux

Расширим реализацию нашей библиотеки SoundPlayer, добавив нужный код в блоках #ifdef Q_OS_LINUX ... #endif:

И реализация:

Обратите внимание, что для успешной сборки и работы этого кода в системе должны быть установлены библиотеки phonon, а также в pro- файле проекта должно быть прописано:

Использование Phonon чуть более многословно, чем QSound, но и возможности этой библиотеки намного обширней. Тем временем наш тестовый пример начал отлично работать как под Windows, так и под Linux. Теперь вы должны отчетливо слышать звуковой сигнал после запуска приложения.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий