Библиотека сайта rus-linux.net
Фреймворк GStreamer. Часто задаваемые вопросы. Общая информация
Оригинал: GStreamer FAQ
Авторы: Wim Taymans, Steve Baker, Andy Wingo, Ronald S. Bultje, Stefan Kost
Дата публикации: 27 августа 2014 г.
Перевод: А.Панин
Дата перевода: 4 сентября 2014 г.
Аннотация
В рамках данного документа собраны ответы на вопросы, наиболее часто задаваемые при работе с мультимедийным фреймворком Gstreamer. Сложность вопросов и ответов находится в диапазоне от обобщенных сведений о фреймворке до описания запутанных проблем с компиляцией.
Приступая к чтению
- Если вы хотите познакомиться с фреймворком, просто читая документ, начните с чтения раздела "Общая информация".
- Если же вы хотите начать знакомство с фреймворком, параллельно работая с ним, начните с чтения раздела "Получение исходного кода фреймворка GStreamer".
- В том случае, если вы хотите использовать новейшие технологии и разрабатывать программные компоненты на основе версии фреймворка из репозитория git, обратитесь к разделу "Сборка версии фреймворка GStreamer из репозитория git".
1. Общая информация
Вопрос: Является ли GStreamer мультимедийным проигрывателем?
Ответ: Нет, GStreamer является фреймворком для разработки таких приложений, как мультимедийные проигрыватели, видеоредакторы, приложения для потоковой передачи мультимедийных данных и.т.д. Тем не менее, на основе фреймворка GStreamer без лишних сложностей могут разрабатываться отличные мультимедийные проигрыватели, особенно в случае использования высокоуровневого объекта под названием playbin.
В: Почему для разработки фреймворка GStreamer был выбран язык программирования C? Почему предпочтение не было отдано языку C++/Objective-C/...?
- Код на языке C может отлично переноситься между платформами.
- Приложения, созданные с использованием языка C, работают очень быстро.
- В случае использования языка C для разработки библиотек, привязки для других языков программирования могут создаваться достаточно просто.
- Объектная система GObject, предоставляемая библиотекой GLib, позволяет реализовать объекты с использованием возможностей языка C, причем сама система является достаточно мощной и переносимой между платформами. Данная библиотека позволяет реализовывать интроспекцию и динамическую типизацию, осуществляемую в процессе исполнения приложений. Описанная система является завершенной системой объектно-ориентированного программирования, в которой отсутствует синтаксический сахар. Если вы хотите использовать синтаксический сахар, обратите внимание на язык программирования Vala.
- Использование языка программирования C позволяет качественно интегрировать приложения с библиотеками тулкита GTK+ и программными компонентами окружения рабочего стола GNOME. Некоторым разработчикам очень нравится эта возможность, но следует также отметить, что ни тулкит GTK+, ни окружение рабочего стола GNOME не требуются для функционирования фреймворка GStreamer.
Таким образом, можно сказать, что нам нравится язык C. В том, что он может не нравиться вам, нет ничего страшного; если вы все же хотите помочь проекту GStreamer, помните о том, что нам всегда нужны люди, которые смогут разработать привязки для других языков программирования. Если же вы не хотите помогать нам - просто не беспокойте нас; мы работаем :-)
В: Какие приложения на основе фреймворка GStreamer доступны на данный момент?
О: Разработчики многих мультимедийных проигрывателей выбрали фреймворк GStreamer в качестве основы для своих приложений. Также несколько инструментов для преобразования форматов мультимедийных файлов используют возможности фреймворка GStreamer. После выхода версии GStreamer-0.10 была начата работа над несколькими мультимедийными редакторами.
Для ознакомления с полным списком проектов следует обратиться к разделу "Список приложений" веб-сайта проекта GStreamer.
В: Поддерживает ли фреймворк GStreamer формат моих мультимедийных файлов?
- ссылки на другие мультимедийные проигрыватели, предпочтительно с открытым исходным кодом, работающие на платформе Unix
- ссылки на спецификации формата.
- описание способов получения файлов данного формата для тестирования.
В: В соответствии с условиями каких лицензий распространяется фреймворк GStreamer, а также его плагины?
О: Код всех программных компонентов фреймворка GStreamer, включая код наших плагинов, распространяется в соответствии с условиями лицензии GNU LGPL 2.1. Однако, некоторые из библиотек, используемых нами для реализации функций плагинов, распространяются в соответствии с условиями лицензии GPL, что подразумевает невозможность использования таких плагинов совместно с приложениями, распространяющимися в соответствии с условиями несовместимых с GPL лицензий.
При загрузке исходного кода фреймворка в пакете плагинов gst-plugins вы можете обнаружить файл с именем LICENSE_readme. В данном файле содержится информация об условиях лицензирования используемых нами библиотек. В большинстве случаев используется правило, в соответствии с которым для реализации функций фреймворка GStreamer при наличии возможности следует использовать исключительно библиотеки, распространяемые в соответствии с условиями лицензий LGPL и BSD, а библиотеки, распространяющиеся в соответствии с условиями лицензии GPL, а также пропиетарные библиотеки следует использовать только тогда, когда нет качественных альтернатив, использующих лицензии LGPL или BSD.
Начиная с версии фреймворка GStreamer 0.4.2, мы реализовали поле с указанием лицензии для каждого из плагинов, а в будущем мы собираемся реализовать механизм, проводящий более жесткую политику использования лицензий (аналогичный механизму "порчи" (tainting) в ядре).
В: Является ли GStreamer звуковым сервером?
О: Нет, GStreamer не является звуковым сервером. Однако, в составе фреймворка GStreamer имеются плагины для поддержки большинства используемых на сегодняшний день звуковых серверов, включая ESD, aRTSd, Jack и другие.
В: Будут ли доступны версии фреймворка GStreamer для платформ, отличных от Unix?
О: Это зависит от множества факторов. Нашей основной целевой платформой является платформа Unix. Также фреймворк работает на платформах Win32 и Mac OS X, но задействование всех его возможностей на этих платформах может оказаться достаточно сложной задачей. Тем не менее, разработчики заинтересованы в портировании фреймворка GStreamer на другие платформы и участники команды разработки ядра фреймворка GStreamer с величайшим удовольствием примут патчи, позволяющие решить эту задачу.
В: Какое отношение к сообществу GNOME имеет проект GStreamer?
О: Хотя проект GStreamer и развивается обособленно, мы тесно взаимодействуем с сообществом GNOME. Многие из наших разработчиков считают себя также участниками сообщества GNOME. Фреймворк GStreamer находится в составе официального комплекта поставки окружения рабочего стола GNOME наряду с множеством пакетов (таких, как gnome-media, totem и rhythmbox), использующих его. Разумеется, это обстоятельство не исключает использование фреймворка GStreamer другими сообществами.
В: Какое отношение к сообществу KDE имеет проект GStreamer?
О: Сообщество разработчиков фреймворка GStreamer стремится к установлению наиболее благоприятных отношений с участниками сообщества KDE и мы надеемся, что когда-нибудь разработчики окружения рабочего стола KDE примут решение об использовании фреймворка GStreamer в качестве API для обработки мультимедийных данных (как это было запланировано в версии KDE 4). Все же время от времени между участниками сообществ разработчиков фреймворка GStreamer и окружения рабочего стола KDE устанавливаются контакты, в частности, благодаря им мы добавили поддержку звукового сервера aRTSd, который раньше использовался в окружении рабочего стола KDE. Также некоторые разработчики KDE создают и поддерживают привязки для работы с фреймворком GStreamer при использовании фреймворка Qt, уже позволившие создать простой видеопроигрыватель и несколько аудиопроигрывателей (JuK и AmaroK).
В: Я рассматриваю возможность добавления в свое приложение поддержки фреймворка GStreamer для вывода данных...
О: На самом деле это не имеет смысла. Фреймворк GStreamer не является звуковым сервером, поэтому вам не придется передавать данные непосредственно фреймворку GStreamer, при этом он также не является промежуточным API между звуковыми данными и различными типами устройств для их вывода. Решение об использовании фреймворка GStreamer в рамках вашего приложения должно являться фундаментальным архитектурным решением; не существует простых способов 'передачи' данных от вашего приложения фреймворку GStreamer. Вместо этого вашему приложению могут потребоваться реализации множества элементов фреймворка GStreamer, их связывание и запуск. При этом все данные будут передаваться с помощью внутренних механизмов конвейера фреймворка GStreamer.
Тем не менее, всегда имеется возможность разработки специфичного для вашего приложения плагина, который будет обрабатывать аудиоданные.
Следующий раздел : Зависимости.