Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фреймворк GStreamer. Часто задаваемые вопросы. Использование фреймворка GStreamer

Оригинал: GStreamer FAQ
Авторы: Wim Taymans, Steve Baker, Andy Wingo, Ronald S. Bultje, Stefan Kost
Дата публикации: 27 августа 2014 г.
Перевод: А.Панин
Дата перевода: 4 сентября 2014 г.

4. Использование фреймворка GStreamer

Вопрос: Отлично, я установил GStreamer. Что делать дальше?

Ответ: В первую очередь убедитесь в том, что у вас в распоряжении имеется работоспособная копия реестра и вы имеете возможность ознакомления с параметрами элементов, введя команду:
$ gst-inspect-1.0 fakesrc

После ввода данной команды должен быть выведен большой объем информации о заданном элементе. В том случае, если вы получаете сообщение о том, что "модуль или элемент не найден", вы не установили GStreamer корректно. Пожалуйста, обратитесь к разделу "Получение исходного кода фреймворка GStreamer" еще раз. В том же случае, если данная команда приводит к выводу какой-либо другой ошибки, мы с удовольствием рассмотрим отправленное вами сообщение об ошибке.

Теперь настало время проверить несколько вещей. Начните с использования приложения gst-launch совместно с несколькими плагинами, которые должны быть установлены в любом случае: fakesrc и fakesink. Они не выполняют никакой полезной работы помимо передачи пустых буферов данных. Введите следующую команду в терминале:
$ gst-launch-1.0 -v fakesrc silent=0 num-buffers=3 ! fakesink silent=0
Вывод должен выглядеть аналогично следующему:
RUNNING pipeline ...
fakesrc0: last-message = "get      ******* (fakesrc0:src)gt; (0 bytes, 0) 0x8057510"
fakesink0: last-message = "chain   ******* (fakesink0:sink)lt; (0 bytes, 0) 0x8057510"
fakesrc0: last-message = "get      ******* (fakesrc0:src)gt; (0 bytes, 1) 0x8057510"
fakesink0: last-message = "chain   ******* (fakesink0:sink)lt; (0 bytes, 1) 0x8057510"
fakesrc0: last-message = "get      ******* (fakesrc0:src)gt; (0 bytes, 2) 0x8057510"
fakesink0: last-message = "chain   ******* (fakesink0:sink)lt; (0 bytes, 2) 0x8057510"
execution ended after 5 iterations (sum 301479000 ns, average 60295800 ns, min 3000 ns, max 105482000 ns)

(Для ясности некоторые части выводимой информации были удалены) В том случае, если была выведена аналогичная информация, фреймворк GStreamer функционирует корректно.

В: Сможет ли моя система выводить звук посредством фреймворка GStreamer?

О: Вы можете проверить это, попробовав проиграть синусоидальный сигнал. Для этого вам придется связать элемент audiotestsrc с элементом для вывода аудиоданных, соответствующим вашему аппаратному обеспечению. Список плагинов для вывода аудиоданных (неполный):
  • pulsesink предназначен для вывода аудиоданных с помощью звукового сервера Pulseaudio
  • osssink предназначен для вывода аудиоданных с помощью интерфейса OSS
  • esdsink предназначен для вывода аудиоданных с помощью звукового сервера ESound
  • alsasink предназначен для вывода аудиоданных с помощью интерфейса ALSA
  • alsaspdifsink предназначен для вывода аудиоданных с помощью интерфейса ALSA через цифровой выход S/PDIF
  • jackaudiosink предназначен для вывода аудиоданных с помощью звукового сервера JACK
В первую очередь вы должны использовать приложение gst-inspect-1.0, передав название элемента для вывода данных в качестве его аргумента, для того чтобы убедиться в корректности установки соответствующего плагина. Например, в том случае, если вы хотите использовать звуковой сервер Pulseaudio, вы должны выполнить команду:
$ gst-inspect-1.0 pulsesink

и убедиться в том, что в результате выводится набор значений свойств соответствующего плагина.

После этого вы можете попытаться проиграть синусоидальный сигнал с помощью команды:
$ gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! pulsesink

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

В случае использования окружения рабочего стола GNOME вы можете настроить параметры вывода звука большинства приложений, использовав команду:
$ gstreamer-properties

причем соответствующая утилита может быть вызвана также из главного меню (Приложения -> Настройки -> Выбор мультимедийных систем). В окружении рабочего стола KDE не предусмотрено стандартных средств для установки параметров вывода аудиоданных всех приложений; однако, такие приложения, как Amarok позволяют настроить параметры вывода аудиоданных с помощью своих диалогов настроек.

В: Как я могу узнать о том, какие плагины фреймворка GStreamer установлены в моей системе?

О: Для этого вам придется использовать утилиту с интерфейсом командной строки gst-inspect, которая содержится в стандартном комплекте поставки фреймворка GStreamer. При вызове этой утилиты без аргументов,
$ gst-inspect-1.0
будет выведен список установленных плагинов. Для того, чтобы получить информацию об определенном плагине, следует передать его название в качестве аргумента. Например, вызов
$ gst-inspect-1.0 volume

позволит получить информацию о плагине с названием "volume".

В: Куда я должен сообщать об обнаруженных ошибках?

О: Управление сообщениями об ошибках на данный момент осуществляется с помощью системы Bugzilla проекта GNOME, расположенной по адресу http://bugzilla.gnome.org, причем при работе с ней следует выбирать название продукта "GStreamer". С помощью системы Bugzilla вы можете ознакомиться с сообщениями об ошибках, созданными в прошлом, сообщить о новой ошибке, и.т.д. Для работы с Bugzilla вам потребуется учетная запись, которая может показаться бесполезной, но она позволяет нам, по крайней мере, иметь канал для связи с вами, который, вероятнее всего, будет использоваться для получения дополнительной информации.

В: Каким образом я должен оформлять сообщения об ошибках?

О: При создании сообщения об ошибке вы должны включить в него, по крайней мере:
  • информацию о вашем дистрибутиве
  • информацию о том, как вы установили GStreamer (скомпилировав исходный код из репозитория git, скомпилировав исходный код, представленный в разделе загрузок, установив бинарные пакеты, а также предоставить информацию о соответствующих версиях пакетов)
  • информацию о предыдущих установках GStreamer

В том случае, если у вас появились проблемы с приложением, которое прекращает свою работу из-за ошибок сегментирования, вам стоит предоставить необходимую информацию, выводимую отладчиком gdb. Обратитесь к ответу на вопрос: "Приложение на основе GStreamer прекращает работу из-за ошибки сегментирования. Что мне стоит сделать в этом случае?"

В: Как пользоваться интерфейсом командной строки фреймворка GStreamer?

О: Вы можете получить доступ к интерфейсу командной строки фреймворка GStreamer, используя команду gst-launch. Для декодирования файла формата mp3 и вывода аудиоданных с помощью звукового сервера Pulseaudio вы можете использовать команду:
$ gst-launch-1.0 filesrc location=thesong.mp3 ! mad ! pulsesink

Большее количество примеров приведено на странице руководства для утилиты gst-launch.

Для автоматического подбора подходящего кодека в рамках конвейера вы можете использовать команду:
$ gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin ! pulsesink
или команду:
$ gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin ! videoconvert ! xvimagesink
Более сложная команда:
$ gst-launch-1.0 filesrc location=my-random-media-file.mpeg ! decodebin name=decoder
	decoder. ! videoconvert ! xvimagesink
	decoder. ! audioconvert ! pulsesink
Мы также реализовали простой плагин для проигрывания мультимедийных потоков, который выполнит большую часть необходимых операций за вас. Этот плагин имеет название playbin. Попробуйте выполнить следующую команду:
$ gst-launch-1.0 playbin uri=file//home/joe/my-random-media-file.mpeg

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


Следующий раздел : Диагностика фреймворка GStreamer.