1 Gstreamer 的特點
gstreamer 是一個媒體框架,可以實現(xiàn)采集,編碼,解碼,渲染,濾鏡等一條龍的媒體解決方案。
? 用命令行工具進(jìn)行測試驗證,還可以通過代碼框架直接封裝命令來做工程開發(fā),這一點 ffmpeg 是不具備的
? Gstreamer 是 glib 實現(xiàn)的,跨平臺的實現(xiàn),windows,linux,androd,ios,macos 官方原生支持,而且官方發(fā)布了 windows,linux,androd,ios 二進(jìn)制包,如果沒有特別需求,可以直接拿發(fā)布二進(jìn)制包集成使用。而 ffmpeg想支持 android,ios,就需要自己做交叉編譯了。
? Gstreamer 采用插件實現(xiàn)方式,根據(jù)業(yè)務(wù)需要可以靈活裁剪插件,可以將發(fā)布包做的非常小,特別適合在嵌入式和移動端等應(yīng)用領(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 話,代碼理解比較困難
? Gstreamer 采用插件管理各個模塊,軟件框架比較復(fù)雜,采用了異步,協(xié)程編程模型,進(jìn)一步增加了理解難度。
? gstreamer 用起來簡單,但二次開發(fā)難度大,因為框架,異步,協(xié)程等沒有像 ffmpeg 代碼用起來直接和簡單。
2 gst-inspect-1.0 測試
gstreamer 開發(fā)中,一般開發(fā)思路為:尋找命令行實現(xiàn)--命令行驗證--將命令行集成到代碼中---代碼工程化。當(dāng)然如果你要代碼更優(yōu)雅一點,可以用命令行用對應(yīng)的 API 來實現(xiàn)。本節(jié)來總結(jié)一下 gstreamer 的常用使用過程。
gst-inspect 可以查看插件或者元素,輸入以下命令查看所有元素
gst-inspect-1.0
查看并過濾相關(guān)元素,輸入以下命令,如下圖所示:
gst-inspect-1.0 |grep xxxx
查看某一個元素,輸入以下命令,如下圖所示:
gst-inspect-1.0 xxx
輸入以下命令查看黑名單元素,通常某些插件的依賴庫不存在,gstreamer 會將它列入黑名單,不可使用,通過該命可以追蹤某些異常的插件。
gst-inspect-1.0 -b
3 gstreamer 日志級別設(shè)置
gst 的日志等級分為 none(0)error(1) warning(2) info(3) debug(4) log(5)。默認(rèn) gst 的日志等級為 1,即 error打印,出錯時會打印。
1)全局日志級別設(shè)置
如果需要更高級別打印,修改環(huán)境變量 GST_DEBUG 即可。如需要 warning 級別打印,配置 exportGST_DEBUG=2 ,如圖所示,在使用 gstreamer 會有 warning 日志產(chǎn)生。
2)某個插件日志級別設(shè)置
set GST_DEBUG=GST_AUTOPLUG:5,GST_ELEMENT_*:4,d3dvideosink:3即自動插件為 5,所有元素默認(rèn)為 4,d3dvideosink 元素為 3。
3)日志打印函數(shù)
日志打印函數(shù) GST_ERROR(),GST_WARNING(),GST_INFO(),GST_LOG()和 GST_DEBUG()宏。它們就像 printf 一樣可以接受一些參數(shù)并且它們是使用默種類的
4)日志另存為文件,配置環(huán)境變量 GST_DEBUG_FILE=文件路徑。如:Set GST_DEBUG_FILE = C:\test.log。日志就重定向到 C:\test.log 文件里。
5)GST_REGISTRY_UPDATE 環(huán)境變量用來查找插件是否更新,即是否重新掃描去更新 cache 內(nèi)容,將這個環(huán)境變量的值設(shè)置成”no”,這樣 gstreamer 框架在初始化的時候就不會檢查 plugin 的更新,這樣可以加速啟動。
輸入以下命令:
Set GST_REGISTRY_UPDATE=”no”4 播放音頻和視頻
Gplay 是基于 Gstreamer 實現(xiàn)的音視頻播放器,他能夠自動根據(jù)硬件自動選擇合適的插件進(jìn)行音視頻播放,運行也十分簡單,我們輸入以下命令播放 mp4 視頻。
gst-play-1.0 /gstreamer/video/1080p_30fps_h265.mp4
我們也可以使用 gst-launch 工具播放音視頻,gst-launch 是開發(fā)者在開發(fā)階段常用的調(diào)試工具,相比Gplay 而言,它更加靈活
我們使用以下命令播放音頻,此時我們插上耳機可以聽到音樂。
gst-launch-1.0 filesrc location=/gstreamer/audio/test.mp3 ! id3demux ! queue ! mpegaudioparse ! decodebin !
audioconvert ! audioresample ! pulsesink
我們輸入以下命令播放視頻(沒有音頻播放)
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true !
video/quicktime ! aiurdemux ! queue max-size-time=0 ! vpudec ! imxvideoconvert_g2d !
video/x-raw, format=RGB16, width=1024, height=600 ! waylandsink
我們也可以使用 gst-launch 工具播放音視頻,gst-launch 是開發(fā)者在開發(fā)階段常用的調(diào)試工具,相比Gplay 而言,它更加靈活
我們使用以下命令播放音頻,此時我們插上耳機可以聽到音樂。
gst-launch-1.0 filesrc location=/gstreamer/audio/test.mp3 ! id3demux ! queue ! mpegaudioparse ! decodebin !
audioconvert ! audioresample ! pulsesink
我們輸入以下命令播放視頻(沒有音頻播放)
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true !
video/quicktime ! aiurdemux ! queue max-size-time=0 ! vpudec ! imxvideoconvert_g2d !
video/x-raw, format=RGB16, width=1024, height=600 ! waylandsink
我們同時播放音頻和視頻,輸入以下命令:
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true !
video/quicktime ! aiurdemux name=demux demux. ! queue max-size-buffers=0
max-size-time=0 ! vpudec ! imxvideoconvert_g2d ! video/x-raw, format=RGB16, width=1024,
height=600 ! waylandsink demux. ! queue max-size-buffers=0 max-size-time=0
! decodebin ! audioconvert ! audioresample ! pulsesink
上一篇:迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
下一篇:迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
推薦閱讀最新更新時間:2025-07-11 20:40




設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 用于自動測試設(shè)備的 12 位、2CH DAC
- AD9954PCBZ,AD9954 評估板,400 MSPS,14 位,1.8 V CMOS 直接數(shù)字合成器
- DC1318A,用于 LTC3611EWP 10A (Iout)、32V 同步降壓型 DC/DC 穩(wěn)壓器的演示板
- ADM00398,用于 16 位 MCU 系統(tǒng)的 ADC 評估板提供評估 MCP3911 雙通道 ADC 性能的能力
- LTC6263IMS 音頻耳機橋式驅(qū)動器運算放大器的典型應(yīng)用
- 具有 IADJ 誤差的 ZLDO1117 可調(diào)穩(wěn)壓器的典型應(yīng)用
- KIT33978EKEVB: 評估套件 - MC33978,22通道開關(guān)檢測
- LT1308BCS8 SEPIC(單端初級電感轉(zhuǎn)換器)的典型應(yīng)用電路將 3V 至 10V 輸入轉(zhuǎn)換為 5V/500mA 穩(wěn)壓輸出
- NCP189MTADJTAGEVB:NCP189_NCP59801_NCV8189_NCV59801 WDFNW6 2x2 ADJ 評估板
- 使用 LT3045EMSE 并聯(lián)多個線性穩(wěn)壓器以提供 2A 輸出電流的典型應(yīng)用