Gstreamer基礎(chǔ)知識(shí)教程
由于deepstream是基于gstreamer的,所以要想在deepstream上做拓展,需要對(duì)gstreamer有一定的認(rèn)識(shí)。以下主要介紹Gstreamer整體框架和Gstreamer基礎(chǔ)概念。
一、Gstreamer整體框架
gstreamer是一個(gè)用于開(kāi)發(fā)流式多媒體應(yīng)用的開(kāi)源框架。本身這個(gè)框架是為了更好的處理音視頻而設(shè)計(jì)開(kāi)發(fā)的,但gstreamer不限于處理音視頻,只要是有明顯的數(shù)據(jù)流特征的應(yīng)用,gstreamer都能很好的應(yīng)用。
gstreamer的整體功能核心是pipeline框架以及用于擴(kuò)展功能的插件:
1、pipeline用于安排數(shù)據(jù)流圖,明確數(shù)據(jù)流處理過(guò)程。通過(guò)gstreamer多媒體數(shù)據(jù)協(xié)商機(jī)制和同步機(jī)制,pipeline能夠很好的地處理流式數(shù)據(jù)。
2、插件用于擴(kuò)展功能,開(kāi)發(fā)者可以靈活利用已有插件,而且還可以自定義特定功能插件。

二、Gstreamer基礎(chǔ)概念
Gstreamer的基礎(chǔ)概念有如下四個(gè),了解這四個(gè)概念是我們將Gstreamer玩起來(lái)的前提
1、Elements
Elements是一個(gè)pipeline中的基本組成功能實(shí)體,通過(guò)將不同功能的elements連起來(lái),就可以實(shí)現(xiàn)一個(gè)數(shù)據(jù)流處理功能。如圖所示,通過(guò)將source filer sink三種element連起來(lái),可以實(shí)現(xiàn)對(duì)pipeline中傳輸數(shù)據(jù)格式的過(guò)濾。

element主要有三種:
(1) source element,主要是作為一個(gè)pipeline中的source節(jié)點(diǎn),是數(shù)據(jù)源。source element只有src pad,即只有輸出口。

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

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


2、pad
pad是element的輸入和輸出,作為協(xié)商鏈接和數(shù)據(jù)傳輸用,鏈接只能是兩個(gè)pad之間的,每個(gè)Pad都可以限定支持的數(shù)據(jù)格式。當(dāng)兩個(gè)不同Pad之間的格式匹配,兩個(gè)Pad就可以進(jìn)行鏈接,并傳輸數(shù)據(jù)。
3、bin和Pipeline
bin是element的一個(gè)集合,bin中的element理應(yīng)互聯(lián),從而使bin也能提供某種功能,由于bin是element的子類,所以所有的element的操作,bin幾乎都繼承了。
pipeline是一個(gè)完整的流式數(shù)據(jù)處理流程,可以看成一個(gè)頂級(jí)的bin。pipeline如下圖所示

4、通信
Gstreamer為應(yīng)用提供了幾種通信機(jī)制:
(1)buffer 用于element之間數(shù)據(jù)傳遞,buffer中包含的是媒體數(shù)據(jù),buffer的傳輸方向永遠(yuǎn)是從src pad 到sink pad的,即向下傳輸。
(2) event element之間或者application到element的信息傳輸,包含的是控制數(shù)據(jù)。event既可以向下也可以向上傳輸。
(3)message 由element向application傳輸,用于傳輸 errors,tags,state changes, buffering state, redirects等信息。
(4)queries 通常由application向pipeline發(fā)送,用于請(qǐng)求一些持續(xù)時(shí)間和播放點(diǎn)等信息。queries的應(yīng)答是同步的。element也可以使用queries來(lái)向相鄰element請(qǐng)求相應(yīng)的信息

這邊只做簡(jiǎn)單的介紹,詳細(xì)的可以查閱Gstreamer 官方用戶手冊(cè)
https://gstreamer.freedesktop.org/documentation/index.html
到此這篇關(guān)于Gstreamer基礎(chǔ)知識(shí)教程的文章就介紹到這了,更多相關(guān)Gstreamer基礎(chǔ)知識(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言中用于修改文件的存取時(shí)間的函數(shù)使用
這篇文章主要介紹了C語(yǔ)言中用于修改文件的存取時(shí)間的函數(shù)使用,分別為utime()函數(shù)和utimes()函數(shù)的使用,需要的朋友可以參考下2015-09-09
C++實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
opencv+arduino實(shí)現(xiàn)物體點(diǎn)追蹤效果
這篇文章主要為大家詳細(xì)介紹了opencv+arduino實(shí)現(xiàn)物體點(diǎn)追蹤效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C++中關(guān)于union的使用方法說(shuō)明
這篇文章主要介紹了C++中關(guān)于union的使用方法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C語(yǔ)言文件操作中 fgets與fputs 函數(shù)詳解
這篇文章主要介紹了C語(yǔ)言文件操作中 fgets與fputs 函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06

