首頁 > 軟體

Gstreamer基礎知識教學

2022-07-21 14:03:28

由於deepstream是基於gstreamer的,所以要想在deepstream上做拓展,需要對gstreamer有一定的認識。以下主要介紹Gstreamer整體框架和Gstreamer基礎概念。

一、Gstreamer整體框架

gstreamer是一個用於開發流式多媒體應用的開源框架。本身這個框架是為了更好的處理音視訊而設計開發的,但gstreamer不限於處理音視訊,只要是有明顯的資料流特徵的應用,gstreamer都能很好的應用。

gstreamer的整體功能核心是pipeline框架以及用於擴充套件功能的外掛:

1、pipeline用於安排資料流圖,明確資料流處理過程。通過gstreamer多媒體資料協商機制和同步機制,pipeline能夠很好的地處理流式資料。

2、外掛用於擴充套件功能,開發者可以靈活利用已有外掛,而且還可以自定義特定功能外掛。

               

二、Gstreamer基礎概念

Gstreamer的基礎概念有如下四個,瞭解這四個概念是我們將Gstreamer玩起來的前提

1、Elements

Elements是一個pipeline中的基本組成功能實體,通過將不同功能的elements連起來,就可以實現一個資料流處理功能。如圖所示,通過將source filer sink三種element連起來,可以實現對pipeline中傳輸資料格式的過濾。

element主要有三種:

(1) source element,主要是作為一個pipeline中的source節點,是資料來源。source element只有src pad,即只有輸出口。

(2) sink element ,作為pipline的end節點 。sink element 只有sink pad,即只有輸入口。

(3) common element,作為pipline中的中間資料處理單元,既有sink pad,也有src pad,通常有:Filters, convertors, demuxers, muxers and codecs等

2、pad

pad是element的輸入和輸出,作為協商連結和資料傳輸用,連結只能是兩個pad之間的,每個Pad都可以限定支援的資料格式。當兩個不同Pad之間的格式匹配,兩個Pad就可以進行連結,並傳輸資料。

3、bin和Pipeline

bin是element的一個集合,bin中的element理應互聯,從而使bin也能提供某種功能,由於bin是element的子類,所以所有的element的操作,bin幾乎都繼承了。

pipeline是一個完整的流式資料處理流程,可以看成一個頂級的bin。pipeline如下圖所示

           

4、通訊

Gstreamer為應用提供了幾種通訊機制:

(1)buffer 用於element之間資料傳遞,buffer中包含的是媒體資料,buffer的傳輸方向永遠是從src pad 到sink pad的,即向下傳輸。

(2) event element之間或者application到element的資訊傳輸,包含的是控制資料。event既可以向下也可以向上傳輸。

(3)message 由element向application傳輸,用於傳輸 errors,tags,state changes, buffering state, redirects等資訊。

(4)queries 通常由application向pipeline傳送,用於請求一些持續時間和播放點等資訊。queries的應答是同步的。element也可以使用queries來向相鄰element請求相應的資訊

這邊只做簡單的介紹,詳細的可以查閱Gstreamer 官方使用者手冊

https://gstreamer.freedesktop.org/documentation/index.html

到此這篇關於Gstreamer基礎知識教學的文章就介紹到這了,更多相關Gstreamer基礎知識內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com