欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言多媒體框架GStreamer入門和概述

 更新時間:2022年07月21日 10:58:20   作者:dvlinker  
這篇文章主要介紹了C語言多媒體開源框架GStreamer,本文總結(jié)了多媒體框架GStreamer一些基本概念及流程,希望能給使用GStreamer開源庫的朋友提供一個借鑒或參考,需要的朋友可以參考下

一.概述

在音視頻領(lǐng)域接觸最多實現(xiàn)的方案通常是通過ffmpeg(PC和sever端居多)或者硬件廠家的的SDK實現(xiàn)特定硬件的編解碼功能(機(jī)頂盒,電視等嵌入式設(shè)備)。這里我們介紹一個在國內(nèi)不太常用的解決方案----gstreamer媒體庫

二.Gstreamer 的特點:

gstreamer跟ffmpeg一樣,也是一個媒體框架,可以實現(xiàn)采集,編碼,解碼,渲染,濾鏡等一條龍的媒體解決方案。

  • 跟ffmpeg一樣,也是有命令行工具進(jìn)行測試驗證。同時還可以通過代碼框架直接封裝命令來做工程開發(fā),這一點ffmpeg是不具備的,ffmpeg需要學(xué)習(xí)API才能做工程開發(fā),就算你會ffplay.exe或ffmpeg.exe驗證某些需求,但要集成到代碼,需要學(xué)習(xí)API來實現(xiàn)。而gstreamer只要知道的命令行實現(xiàn)方式,就可以馬上命令行集成到代碼中進(jìn)行使用,當(dāng)然你想代碼優(yōu)雅一點或者你是熟手也可以使用API來實現(xiàn)。
  • Gstreamer是glib實現(xiàn)的,跨平臺的實現(xiàn),windows,linux,androd,ios,macos官方原生支持,而且官方發(fā)布了windows,linux,androd,ios包,如果沒有特別需求,可以直接拿發(fā)布包集成使用。而ffmpeg想支持android,ios,就需要自己做交叉編譯了。
  • Gstreamer采用插件實現(xiàn)方式,根據(jù)業(yè)務(wù)需要可以靈活裁剪插件,可以將發(fā)布包做的非常小,特別適合在嵌入式和移動端等應(yīng)用領(lǐng)域,而ffmpeg比較大,在嵌入領(lǐng)域需要自己做代碼級裁剪。
  • Gstreamer 采用glib實現(xiàn),用C語言來實現(xiàn)面向?qū)ο笏季S,完全不是標(biāo)準(zhǔn)C++那一套邏輯,由于要跨平臺,原生的系統(tǒng)API都是適配封裝了一套,甚至自己實現(xiàn)隊列,MAP,容器,協(xié)程,線程,異步操作,不熟悉glib 的API話,代碼理解比較困難,用慣了C++,STL,boost,感覺得這是gstream最讓人反感的一點,不合主流,搞的我又要學(xué)一套API。
  • Gstreamer采用插件管理各個模塊,軟件框架比較復(fù)雜,采用了異步,協(xié)程編程模型,進(jìn)一步增加了理解難度。

一言蔽之,與ffmpeg相比,gstreamer用起來簡單,但二次開發(fā)難度大,因為框架,異步,協(xié)程等沒有像ffmpeg 代碼用起來那么直接和簡單。而ffmpeg要理解API才能使用,用起來比較費勁,好在代碼理解比較容易,不過容易和簡單只是相對的,用久了深入了就容易了。

三.Gstreamer源碼下載地址:

Index of /src ,

由于gstreamer采用插件方法,可以根據(jù)需要安裝自己需要插件,包含很多插件庫。但最以下2個庫是必須的。

核心庫:gstreamer    支持gstreamer核心框架的

基本庫:gst-plugins-base  支持gstreamer最基本功能

在開發(fā)階段建議還安裝gst-plugins-good庫(常用穩(wěn)定的庫),后面根據(jù)業(yè)務(wù)需要再做裁剪或者安裝其他庫。

四.Gstreamer二進(jìn)制發(fā)布庫:

Download GStreamer

包含windows,android,ios,macos的發(fā)布庫下載,其中Linux版本在各個Linux發(fā)行版本的包安裝管理器中下載

下載安裝后以下目錄(windows為例) :

其中exe就是命令行工具,dll庫就是相關(guān)插件。

五.Gstreamer命令行顯示

下面是命令播放視頻文件的命令

gst-launch-1.0.exe playbin uri=file:///D:\\videos\\hevcdemo.ts

如果我們需要D3D 渲染采用d3dsink

gst-launch-1.0 filesrc location=D:\\videos\\test.ts ! decodebin? ! d3dvideosink

如我們需要opengl渲染采用glimagesink

gst-launch-1.0 filesrc location=D:\\videos\\test.ts ! decodebin? ! glimagesink

總之gstreamer插件豐富,用起來靈活,簡單,后面再具體展開。

到此這篇關(guān)于gstreamer(一)入門和概述的文章就介紹到這了,更多相關(guān)C語言多媒體框架GStreamer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論