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




- 熱門(mén)資源推薦
- 熱門(mén)放大器推薦
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- LTC3119IFE 5V、500kHz 寬輸入穩(wěn)壓器的典型應(yīng)用電路
- BPC292封裝的SPC58 C,E,G和N線的微型插座模塊
- FRDM-17C724EVB: Freedom套件 - MPC17C724, 0.4 A雙H橋
- LTC695-3.3 的典型應(yīng)用 - 3.3V 微處理器監(jiān)控電路
- 使用 Analog Devices 的 LTC6263HMS 的參考設(shè)計(jì)
- FSA3000 兩端口高速 MHL 交換機(jī)的典型移動(dòng) MHL 應(yīng)用
- LTC3633AIFE 1.5V 1MHz 雙相降壓穩(wěn)壓器的典型應(yīng)用電路
- NCV33074ADR2G 運(yùn)算放大器用作 LED 驅(qū)動(dòng)器的典型應(yīng)用
- 4463-915-PDK,用于 Si4463 915-MHz 射頻收發(fā)器的 EZRadio-PRO 無(wú)線開(kāi)發(fā)套件
- CN0313
- 防爆電機(jī)的工作原理_防爆電機(jī)的基本防爆型式
- 粉塵防爆電機(jī)防爆等級(jí)
- Digi-Key推進(jìn)分銷(xiāo)來(lái)自 Renesas 和 Dialog 的致勝產(chǎn)品組合
- 愛(ài)立信中國(guó)總裁趙鈞陶:5G經(jīng)濟(jì)尚未來(lái)到
- tiny4412 裸機(jī)程序 六、重定位代碼到IRAM+0x8000【轉(zhuǎn)】
- 2021年第四季度蘋(píng)果智能手機(jī)出貨量全球第一
- 用于汽車(chē)接口、安全和計(jì)算密集型負(fù)載FPGA的選擇和使用
- 單片機(jī)下串口(UART)協(xié)議包接收程序
- 南芯科技推出高集成度多口移動(dòng)電源解決方案,助力充電寶市場(chǎng)穩(wěn)健發(fā)展
- 英飛凌推出具有超低導(dǎo)通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車(chē)和工業(yè)功率電子應(yīng)用
- DigiKey 慶祝 B 站賬號(hào)粉絲突破 10 萬(wàn),贈(zèng)送驚喜禮包
- 碳化硅企業(yè) Wolfspeed 啟動(dòng)破產(chǎn)重組,預(yù)計(jì) 2025 年三季度末完成司法重整
- 蘋(píng)果被曝考慮放棄自研模型 轉(zhuǎn)而與Anthropic或OpenAI合作
- ?百度文心4.5來(lái)襲!英特爾Day0即支持端側(cè)部署
- 【廣瀨電機(jī)】關(guān)于中國(guó)發(fā)明專(zhuān)利侵權(quán)訴訟達(dá)成和解的公告
- 英飛凌BMS解決方案推動(dòng)電動(dòng)汽車(chē)創(chuàng)新
- 地平線的L3判斷與實(shí)踐路徑
- 汽車(chē)網(wǎng)絡(luò)升級(jí)攻略:CAN-CAN FD-車(chē)載以太網(wǎng)
- 基于單片機(jī)8155秒表計(jì)時(shí)器系統(tǒng)設(shè)計(jì)
- 單片機(jī)實(shí)現(xiàn)接收從電腦發(fā)送過(guò)來(lái)的字符串的方法
- 良好的散熱性對(duì)大電流直流電感的功能的改善作用
- 凌陽(yáng)c61學(xué)習(xí)筆記_1第一次接觸單片機(jī)
- What,航天器、導(dǎo)彈喜歡用單片機(jī)?為什么不是嵌入式系統(tǒng)?
- STM32F429HAL庫(kù)時(shí)鐘系統(tǒng)學(xué)習(xí)筆記
- 基于STM32的GPS模塊驅(qū)動(dòng)(AIR530)
- MSP430學(xué)習(xí)筆記6-動(dòng)態(tài)數(shù)碼管的顯示
- MSP430學(xué)習(xí)筆記2-跑馬燈程序,熟悉定時(shí)器寄存器的配置
- MSP430學(xué)習(xí)筆記8-ST7920 12864液晶顯示并行接口
- (求助,在線等)linux下自動(dòng)運(yùn)行HELLOHWORLD的問(wèn)題
- 抗干擾濾波器的工作原理解析
- 開(kāi)關(guān)電源的設(shè)計(jì)要素
- 版主問(wèn)下關(guān)于小于100腳的STM32F103X的VDDA問(wèn)題?
- DSPtms320f28x編程英語(yǔ)版本資料!
- MSP的C編程為什么配置文件的語(yǔ)句看不懂,都是關(guān)于寄存器的式子,而不是賦值給寄存器
- 【TMS320測(cè)頻】新人第一帖!TMS320F28369D Launchpad開(kāi)箱+知識(shí)科普
- 德州儀器(TI)鎖相環(huán)的基礎(chǔ)知識(shí)和使用方法
- LPC1500體驗(yàn)+光伏水泵
- S3C2410的APB驅(qū)動(dòng)。。。