gstreamer 常用element

一、bin,這些bin在內部包含了element,但是在外部還是把它看做一個element。

1、playbin:它會處理播放器從source經過解複用、解碼到顯示的過程,同時它也非常靈活,有很多的設置項。

2、uridecodebin:從一個uri獲取數據,然後解碼成原始數據。

二、文件輸入和輸出

1、filesrc:讀取一個本地文件然後用caps輸出媒體數據

2、filesink:這個element把所有收到的媒體數據存成文件,用location來指定文件名

gst-launch-1.0 audiotestsrc ! vorbisenc ! oggmux ! filesink location=test.ogg

三、network

1、souphttpsrc:這個element作爲客戶端,使用soup庫經由http來接受數據

C:\Users\lenovo>gst-launch-1.0 souphttpsrc location=http://192.168.31.254/vod/ts/E6FBEADEEFA1F64C30DA5AE2FA98CF89.ts ! decodebin ! autovideosink

四、測試element,這些element在測試pipeline是否工作時非常有用,可以取代數據源。

1、videotestsrc:生成固定的video輸出,用於測試視頻pipeline

gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

2、audiotestsrc:生成固定的audio信號,用於測試音頻pipeline

gst-launch-1.0 audiotestsrc ! audioconvert ! autoaudiosink

五、視頻適配

1、videoconvert:會把一個色彩空間轉換爲另一個比如RGB轉換爲YUV,也可以轉換不同的RGB和不同的YUV。

2、videorate:

 這個element接受帶時間戳的視頻數據轉換成匹配source pad幀率的流。通過丟棄或者複製幀來執行改正,而不是通過古怪的算法。

      這個在連接不同幀率的element時很有用。正如其他的適配插件,如果不需要的話會直通過去(上下游element能匹配上)。

      如果實際幀率未知的情況下,爲了以防萬一,使用這個element是個不錯的主意。

gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! videorate ! video/x-raw,framerate=1/1 ! videoconvert ! autovideosink

3、videoscale:

 這個element可以修改視頻幀的尺寸。這個element會先檢查不修改視頻尺寸是否可行,如果可行,就不在進行尺寸的轉換。所以在pipeline中加入這個element是安全的,可以提高魯棒性。

六、音頻適配

1、audioconvert:轉換原始不同音頻格式之間的緩衝,支持浮點數/整數以及聲道轉換。

2、audiorasample:可以解決採樣率問題。

3、audiorate:這個element接受帶時間戳的音頻幀,然後通過增加或者降低採樣來獲得一個標準流。它不能修改採樣率,只能通過移除重疊部分和填充空白部分來獲得連續“乾淨”的輸出。

七、多線程

1、queue:

一個queue執行兩個任務:

     (1)把數據放到隊列裏,知道滿爲止,此時任何想要推送數據的線程將會被阻塞直到有新的空間。

     (2)給source pad創建一個新的線程,這樣就能分離對sink和source pads的處理。

在queue滿或者空的時候會出發信號,可以丟棄一些緩衝數據,必滿阻塞

2、queue2:queue2不是queue的進化版,他們有着同樣的設計目標,只是實現方法不一樣。

當涉及到網絡緩衝的時候,使用queue2而不是queue

3、multiqueue:這個element可以對多個流同時提供queue,並且簡化對流的管理。此外,它可以同步不同的流,確保任何一個流都不會運行的特別快。  這是一個先進的element。decodebin2裏面包含着這個element,你在一個通常的播放應用裏面很少會直接使用。

4、tee:把數據分成多份,比如可以同時在屏幕上播放圖像並且把文件保存到本地。

八、capabilities

1、capsfilter:實現caps過濾,這個element不會修改數據,但會修改數據的類型。

2、typefind:這個element包含了流的類型。

九、debugging

1、fakesink:這個sink element僅僅簡單的拋棄所有輸入的數據。

2、identify:   這是一個啞巴element僅僅把輸入數據不加修改的傳過來。它也有一些有用的調試函數,例如偏移量和時間戳檢測,或者丟棄緩衝。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章