среда, 18 марта 2009 г.

Столпы KDE4. Phonon.

welinux.ru/KDE → Столпы KDE4. Phonon.

Столпы KDE4. Phonon.
Второй столп, на котором держится KDE4, не менее грандиозен и величественнен. Phonon - это мультимедиа API. Так же как и его побратим Solid, Phonon абстрагируется от конкретного звукового движка, будь то Xine, PulseAudio, GStreamer, DirectShow или QuickTime. Phonon, кстати, не является частью KDE, хотя KDE4 очень активно использует его. Знаменитый фрэймворк для создания кроссплатформенных приложений Qt (читается как [кьют], а не [кути]!) начиная с версии 4.4 имеет встроенную поддержку Phonon.

Зачем придумывать велосипед?


С незапамятных времен KDE2.0 использовал aRts в качестве медиа фрэймворка и обеспечивая мультимедиа API. Однако времена идут и все меняется, и, к счастью или сожалению, aRts не выдержал эту гонку и более не разрабатывается. То, что на его место придут другие было лишь вопросом времени, а времени оставалось все меньше - ведь разрабатывался такой большой проект, и все близился момент его первого релиза. И какой же из всех существующих вариантов выбрать? Чтобы был современный, чтобы поддерживал необходимые функции и чтобы не произошло того же, что было с aRts?
Ответ прост - не подстраиваться под один движок, а быть готовыми работать если не со всеми, то со многими.

Что Phonon даст простым пользователям?


Phonon опять же избавит вас от головной боли о том, как и через что воспроизводить звук. Для наглядности представим себе такой расклад:
Необходимо чтобы системные уведомления озвучивались в ваши двухсотваттные колонки (привет соседям :D), чтобы скайп бубнил в вашу беспроводную BlueTooth гарнитуру, а родители слушали Queen в соседней комнате на отдельной стереосистеме. При наличии необходимого количества девайсов вывода звука, Phonon в связке с уже рассмотренным Solid'ом позволит настроить все буквально в несколько щелчков мышью.
Для наглядности приведу скриншот, конечно, не относящийся к примеру что я описал, но все же помогающий вам увидеть типичный интерфейс настройки Phonon в KDE4.
Интерфейс настройки Phonon в KDE4 с множеством доступных устройств
Причем, переключение производится "на лету", и в идеале не нужна не только перезагрузка, но и перезапуск приложений! Конечно, пока что все может ьыть не так гладко, то есть изменение сейчас вступает в силу после перезапуска приложений воспроизведения звука (в случае с системными уведомлениями - перезапуск KDE4), но это только пока.
А чтобы не было особых сомнений в том, что это действительно универсальное и кроссплатформенное решение - вот скриншот с моей Windows XP:
Настройка Phonon в Windows через интерфейс KDE4
Как видите, в данном случае Phonon использует DirectShow9 движок. На Mac OS X на его месте был бы QuickTime. В этом еще один плюс - Phonon использует уже установленные в системе движки и адаптируется к ним.

Что Phonon даст разработчикам?


Очень многое! Как воспроизвести звуковой файл, поддерживаемый вашей звуковой подсистемой? Всего 4 строки кода - и готово!
1
2
3
4
5
6

media = new MediaObject(this);
connect(media, SIGNAL(finished()), SLOT(slotFinished()));
media->setCurrentSource("/home/username/music/filename.ogg");
media->play();

Вообще, Phonon предоставляет не только базовые функции воспроизведения, но также предоставляет интерфейс для создания спецэффектов. Для работы с Phonon вам, как разработчику, необходимо будет знать только API фронтэнда. Основными объектами Phonon являются MediaObject и AudioOutput. Данные, добытые через MediaObject должны передаваться в звуковой вывод. Для этого используется функция Phonon::createPath, которая возвращает объект Path (путь), в который далее можно вводить спецэффекты, которые будут влиять на звуковой сигнал.
Взаимосвязь основных элементов в реаизации проигрывания звука через Phonon
Если кроме звука используется еще и видео, то соответственно в схему добавляется дополнительное ответвление. В итоге получаем что-то вроде вот этого:

Как вы видите, работать со звуком становится так же легко и непринужденно, как и написание любого другого кода в Qt и с использованием kdelibs.
Я затронул только краешек того, что становится доступным разработчику, более серъезное погружение вас ждет при прочтении API документации на сайте проекта KDE, а также соответствующие разделы справки Qt, доступные также через программу Qt Assistant.
Для пользователей же остается только радость использования всех этих благ человечества, легко изменяя настройки вывода звука при малейшей необходимости.
На этом, пожалуй, пост завершаю. Если кому-то показалось мало, или возникли вопросы - пишите комментарии, пишите в личку, пишите на мыло - мой_ник[на]mail.ru. Буду рад услышать отзывы и пожелания.

Информация взята с официального сайта проекта Phonon, из офицальной справки Qt. Как всегда помог собственный опыт общения с Phonon'ом - на KDE-apps можно найти приложение trayplayer. Оно не мое, но в нем довольно легко разобраться. Я же прикрутил к нему повтор, опцию листания назад, а также чисто из любопытства перевел этот проект на CMake, разделил классы по разным файлам и начал реализовывать базовый плейлист.

Автор:Kraplax

Комментариев нет: