Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 139 стр.

UptoLike

139
11. MeeGo API: мультимедиа, датчики, сообщения,
коммуникация между приложениями
MeeGo API: Media Services. Media Framework [GStreamer], Camera [Gstreamer
plug-in], Codecs [Gstreamer plug-in], Audio [PulseAudio], UPnP [UPnP]. Пример
подключения к IVI камеры видеонаблюдения, реализация сервисов по выявлению
движущихся объектов и передачи фотоизображений или видеопотока.
11.1. Введение
В этой лекции мы проведём обзор возможностей, предоставляемых
MeeGo SDK для работы с мультимедиа, сообщениями и аппаратными датчиками. Кроме того, кратко
будут рассмотрены основные способы коммуникации между приложениями.
11.2. Мультимедиа
В MeeGo реализован собственный фреймворк для раобты с мультимедиа даннымиQt
Multimedia Framework (Qt MMF). Этот фреймворк предоставляет разработчику удобные и гибкие
интерфейсы для воспроизведения медиа файлов, организации плейлистов и слайд-шоу, а также записи
аудио и работы с радио. К сожалению, на момент написания этого текста (релиз SDK версии 1.1)
работа с камерой была недоступна несмотря на наличие интерфейсов QCamera.
На уровне операционной системы, данные возможности реализуются по средствам
кроссплатформенного набора библиотек GStreamer, но пользователь волен реализовывать
недостающую функциональность самостоятельно.
GStreamer — мультимедийный фреймворк, написанный на языке программирования C и
использующий систему типов GObject. GStreamer является «ядром» мультимедийных приложений,
таких как видеоредакторы, потоковые серверы и медиаплееры. В изначальный дизайн заложена
кроссплатформенность; GStreamer работает на Unix-подобных системах, а также на Microsoft
Windows, OS/400 и Symbian OS. GStreamer предоставляет биндинги для других языков
программирования таких, как Python, C++, Perl, GNU Guile и Ruby. GStreamer является свободным
программным обеспечением, с лицензией GNU LGPL [11].
Фреймворк MMF пришёл на смену интерфейсам Phonon, которые, в свою очередь, тоже
использует в качестве драйвера библиотеку GStreamer.
В отличие от других интерфейсов Qt Mobility, MMF не является частью пространства имён
QtMobility, а значит, при его использовании нет необходимости объявлять пространство имён.
11.2.1. Аудио
Начнём с примера. Рассмотрим приложение, использующее класс Audio Recorder для записи
звука.
При записи источника звука есть ряд вещей, которые можно контролировать. Например, мы
можем выбрать формат кодирования файлов — MP3 или Ogg Vorbis, или, например, выбрать другой
источник входа. Пользователь может изменить битрейт, количество каналов, качество и частоту
дискретизации.
Итак, первым делом устанавим источник и рекордер объекта. Объект QAudioCaptureSource
создается и используется для инициализации объекта QMediaRecorder.
audiosource = new QAudioCaptureSource;
capture = new QMediaRecorder(audiosource);
capture->setOutputLocation(QUrl("test.raw"));
Далее найдём поддерживаемые кодеки: