Программирование gstreamer. Основы.


GStreamer logo    Здравствуйте уважаемые читатели. В серии статей о gstreamer мы будем подробно рассматривать этот фреймворк и программировать при помощи его средств. В статьях «основы» мы познакомимся с устройством gstreamer, а в последней статье из раздела «основы» мы напишем приложение, проигрывающее аудио файлы в формате ogg. Далее мы начнем изучать низкоуровневые особенности gstreamer такие как позиционирование в медиа потоке, запись и чтение мета данных и т.д. по нарастающей.

    Что такое gstreamer?


    Gstreamer это Фреймворк позволяющий достаточно просто создавать приложения работающие с мультимедиа. Примерами приложений разработанных на нем могут служить известные каждому линуксоиду Amarok и Totem например.

    Основные понятия.


    Итак, в этом разделе мы рассмотрим фундаментальные понятия gstreamer. Первое из них это элемент.

    Элемент это очень важная часть gstreamer. Вся работа фреймворка основана на элементах. Они имеют одну четко определенную функцию, такую как, например чтение файла с диска или вывод на звуковую карту. Соединяя в логическую цепочку, несколько элементов вы создаете медиаканал, который может решать определенную задачу, например воспроизведение. Так же можно создавать свои элементы.

    Гнездо (пад) это точка соединения элементов. Ну и как водится, соединять элементы можно на входе и выходе. Например, декодер соединен на входе с источником, а на выходе со звуковой картой. Не стоит пока воспринимать близко к сердцу приведенный пример. Он призван дать понимание концепции гнезда, а не научить вас строить цепь объектов аудио плеера. Гнездо может, каким то образом обрабатывать данные, например, фильтровать. Как правило, все данные передаются между объектами через гнезда. Например, источник имеет только одно гнездо, через которое он передает данные декодеру, тот в свою очередь имеет уже два гнезда одно на входе, что бы взять данные (буфер или событие) у источника, сделать с ними что то и передать дальше, следующему объекту в цепи через гнездо на выходе.

    Контейнер элементов (Bin, бин) это некое хранилище элементов gstreamer. Через бин можно управлять всеми элементами, которые в нем лежат. Например, если установить его в определенное состояние, например, проигрывания или паузы, то в это состояние перейдут все элементы, содержащиеся в нем. Бины также отправляют сообщения своих дочерних элементов во внешний мир.

    Канал (pipeline) это контейнер более высокого уровня, он уже содержит не просто элементы, а бины. Если начать проигрывание канала, он переведет в активное состояние все свои бины, которые в свою очередь сделают то же самое со своими элементами. Таким образом, объединяя объекты в логические цепочки, мы можем управлять ими как единым целым.

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



Добавлена: 06-02-2009 | Изменена: 06-02-2009 | Пользователем: gnudimarik | Просмотров: 4816

Комментарии

sharp 20-02-2009 13:36
    Заинтересовала статья, почитаю, если будет продолжение. Раньше пробовал работать с phonon он вроде бы и проще, но джистример больше прельщает, хотя они почти аналогичны, слышал в gstreamer можно делать более сложные вещи.
Borg 22-02-2009 01:03
Неплохое вступление, но мне кажется перевод "основных понятий" не очень точный, "пад" это не очень гнездо :) не могу сказать как правильно, но правильно не так имхо.
ipse 10-08-2009 22:21
Жду продолжения


Оставить комментарий



Капча *

Captcha

Комментарий будет опубликован после проверки модератором

Для подсветки синтаксиса исходный код следует обрамлять следующими тэгами
<pre><code class="синтаксис" >код</code></pre>
Подерживаются следующие: cpp php javascript sql html-xml css ini