Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文因為工作上的產品應用需求,進而探索到很多層面的點滴事。透過每篇 EP 的分享把這些點滴整理,看起來或許像是個獨立的小品抒發文、也或許是一系列技術研究文!?
總之,就當作的隨手雜記文吧!
本篇是 莫名其妙就跟世界等級的 OpenSource 專案攪和了!? 系列文的 EP08。
影音播放的這個層面,對其的認知深度可以說是相當非常之淺薄;更別說首次接觸到 Gstreamer 這個 C 語言的 OpenSource 專案時,其概念與特質可以說是完全陌生的。
在 EP01 的 Gstreamer 運作的基本原理提到:
[Source] → [Decoder] → [Filter/Effect] → [Encoder] → [Sink]
(圖片由 Google Gemini 生成)
其中 Source 可以來自是多媒體檔案也可以是影音串流。
多媒體檔案會使用 Gstreamer 的其 filesrc、dataurisrc ...等 Plugins。
影音串流則會使用 rtspsrc 、v4l2src(linux only)...等 Plugins。
其二 Sink 則是上述的來源進到 Pipeline 後最終要去哪,常見的一般顯示也好、給其他應用處理也好。
常見的一般顯示會使用 Gstreamer 的其 fpsdisplaysink、kmssink(linux only)...等 的 Plugins。
其他應用處理則會使用 Gstreamer 的其 appsink ...等 Plugins。
而當在測試的環境有完成 Gstreamer 的安裝與設定後,就可以直接透過指令測試看看:
gst-launch-1.0 --version
如果有顯示如上圖結果,就代表 Gstreamer 安裝成功。
測試上個人覺得最簡單的 "指令" 是透過簡單的 videotestsrc 與 autovideosink 來組成的 Pipeline:
gst-launch-1.0 videotestsrc ! autovideosink
正常運作的話會出現:
並且會出現類似如下畫面在螢幕顯示中:
注意右下角的雜訊畫面會變動,代表影片有正常播放中。