日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Gstreamer基礎知識教程_C 語言

作者:代碼不好讀啊 ? 更新時間: 2022-09-14 編程語言

由于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

原文鏈接:https://blog.csdn.net/u011337602/article/details/81485246

欄目分類
最近更新