Gstreamer基礎知識教程
由于deepstream是基于gstreamer的,所以要想在deepstream上做拓展,需要對gstreamer有一定的認識。以下主要介紹Gstreamer整體框架和Gstreamer基礎概念。
一、Gstreamer整體框架
gstreamer是一個用于開發(fā)流式多媒體應用的開源框架。本身這個框架是為了更好的處理音視頻而設計開發(fā)的,但gstreamer不限于處理音視頻,只要是有明顯的數(shù)據(jù)流特征的應用,gstreamer都能很好的應用。
gstreamer的整體功能核心是pipeline框架以及用于擴展功能的插件:
1、pipeline用于安排數(shù)據(jù)流圖,明確數(shù)據(jù)流處理過程。通過gstreamer多媒體數(shù)據(jù)協(xié)商機制和同步機制,pipeline能夠很好的地處理流式數(shù)據(jù)。
2、插件用于擴展功能,開發(fā)者可以靈活利用已有插件,而且還可以自定義特定功能插件。
二、Gstreamer基礎概念
Gstreamer的基礎概念有如下四個,了解這四個概念是我們將Gstreamer玩起來的前提
1、Elements
Elements是一個pipeline中的基本組成功能實體,通過將不同功能的elements連起來,就可以實現(xiàn)一個數(shù)據(jù)流處理功能。如圖所示,通過將source filer sink三種element連起來,可以實現(xiàn)對pipeline中傳輸數(shù)據(jù)格式的過濾。
element主要有三種:
(1) source element,主要是作為一個pipeline中的source節(jié)點,是數(shù)據(jù)源。source element只有src pad,即只有輸出口。
(2) sink element ,作為pipline的end節(jié)點 。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ù)傳輸用,鏈接只能是兩個pad之間的,每個Pad都可以限定支持的數(shù)據(jù)格式。當兩個不同Pad之間的格式匹配,兩個Pad就可以進行鏈接,并傳輸數(shù)據(jù)。
3、bin和Pipeline
bin是element的一個集合,bin中的element理應互聯(lián),從而使bin也能提供某種功能,由于bin是element的子類,所以所有的element的操作,bin幾乎都繼承了。
pipeline是一個完整的流式數(shù)據(jù)處理流程,可以看成一個頂級的bin。pipeline如下圖所示
4、通信
Gstreamer為應用提供了幾種通信機制:
(1)buffer 用于element之間數(shù)據(jù)傳遞,buffer中包含的是媒體數(shù)據(jù),buffer的傳輸方向永遠是從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ā)送,用于請求一些持續(xù)時間和播放點等信息。queries的應答是同步的。element也可以使用queries來向相鄰element請求相應的信息
這邊只做簡單的介紹,詳細的可以查閱Gstreamer 官方用戶手冊
https://gstreamer.freedesktop.org/documentation/index.html
到此這篇關(guān)于Gstreamer基礎知識教程的文章就介紹到這了,更多相關(guān)Gstreamer基礎知識內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 操作系統(tǒng)內(nèi)存分配算法的實現(xiàn)詳解
本文主要介紹了在動態(tài)分區(qū)管理方式下采用不同的分配算法實現(xiàn)主存分配和實現(xiàn)主存回收,旨在幫助學生理解在動態(tài)分區(qū)管理方式下應怎樣實現(xiàn)主存空間的分配和回收。感興趣的可以了解一下2021-11-11VSCode 配置C++開發(fā)環(huán)境的方法步驟
這篇文章主要介紹了VSCode 配置C++開發(fā)環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03C語言深入講解之從函數(shù)棧幀角度理解return關(guān)鍵字
在C語言中,一般情況下函數(shù)的返回值是通過函數(shù)中的return語句來實現(xiàn)的,每調(diào)用一次return語句只能從函數(shù)中返回一個值,這篇文章主要給大家介紹了關(guān)于C語言從函數(shù)棧幀角度理解return關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下2021-09-09C++實現(xiàn)LeetCode(116.每個節(jié)點的右向指針)
這篇文章主要介紹了C++實現(xiàn)LeetCode(116.每個節(jié)點的右向指針),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07