Gstreamer是一個多媒體開發的平台,主要的目的當然是方便開發者開發多媒體的應用程式
結構上以pipeline為基礎,在pipeline裡面將每個行為都定義為element,透過這些element 去處理多媒體資料
當然也提供plugin 文件讓開發者根據自己的需求寫成plugin
下面的這一張圖為gstrmeaer的pipeline
從圖中可以知道
file-source->ogg-demuxer->vorbis-decoder->audio-sink
->theroa-decoder->video-sink
這裡的每個框都是一個element, pipeline是由眾多的element組合而成
每個element都會有接口,在這裡我們稱為sink跟src, sink代表著接收,src代表著發送
由圖中可以看出,像管線般一樣資料從file-source讀取,在經過ogg-demuxer分流給vorbis-decoder跟theroa-decoder作為audio跟video的解碼,再透過audio跟video的輸出裝置顯現.
提到Pad每個sink跟src都存在著pad,我們可以把他想成是參數,因數,或是屬性
以filesrc的Pad來說
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
ANY
代表它可以發送的format是沒有限定的
以Oggdemuxer的pad來說
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
application/ogg
application/x-annodex
SRC template: 'src_%d'
Availability: Sometimes
Capabilities:
ANY
代表它可以接收來自前面為application/ogg或者application/x-annodex的資料流