1. Gstreamer基本介紹
Gstreamer是linux上的多媒體框架。如下所示:

從上面這個圖中可以看到,底層是以plugin插件形式存在包括codec標準,parser,audio, protocol等,
也包括用戶自己開發的plugin和第三方開發的plugin。
core framework提供了plugin之間的交互機制和管理,通過將一些plugin連接起來形成一個系統,並且對上
提供訪問的接口。APP是構建在framework上的。
通過這個框架,底層開發者可以專注於開發plugin,APP開發者通過調用這個plugin來組成完成某種功能的
APP,plugin之間的通信都是由gstreamer framework提供的。
目前已經有一些成熟的plugin已經開發,並且作為library提供給了用戶:
gst-plugins-base: an essential exemplary set of elements
gst-plugins-good: a set of good-quality plug-ins under LGPL
gst-plugins-ugly: a set of good-quality plug-ins that might pose distribution problems
gst-plugins-bad: a set of plug-ins that need more quality
plugin中的element實際上就是實現該element支持的API,供上層來調用.
Gstreamer中的幾個術語:
Elements: plugin的實例,在一個APP中可能需要創建多個elements並且把這些elements連接在一起形成系統
elements可以分為:
source element: 沒有輸入,只有輸出pad,用來產生數據。
sink element: 只有輸入pad,沒有輸出pad,是數據的目的地。如disk,soundcard
filter element: 包含輸入pad和輸出pad,接收輸入的數據並且產生輸出數據
輸入輸出Pad的數目可以是N個(N >= 1)

queue element: 是一個特殊的element,作為thread的邊界存在。Gstreamer是可以
支持多線程的,線程的邊界通過queue來隔開。

element state:
element有4個狀態:
Gstreamer是linux上的多媒體框架。如下所示:
plugin中的element實際上就是實現該element支持的API,供上層來調用.
Gstreamer中的幾個術語: