Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文因為工作上的產品應用需求,進而探索到很多層面的點滴事。
透過每篇 EP 的分享把這些點滴整理,看起來或許像是個獨立的小品抒發文、也或許是一系列技術研究文!?
總之,就當作的隨手雜記文吧!
本篇是 莫名其妙就跟世界等級的 OpenSource 專案攪和了!? 系列文的 EP26。
在經過 EP25 的介紹中已能成功取得所需的 "gstreamer-sharp.dll", "gio-sharp.dll", "glib-sharp.dll" 。
接下來就是想辦法把這三個 dll 替換代掉 GstreamerPlayer 專案當中所依賴的 gstreamer-sharp-netcore 專案。
而由於 gstreamer-sharp-netcore 的作者有特別將這個專案發佈成 nuget 的形式,可以直接透過安裝 gstreamer-sharp-netcore 的 nuget 方式來執行。
GstreamerPlayer 可以正常播放影片沒問題:
依照推測,這 gstreamer-sharp-netcore 對 GstreamerPlayer 來說,就是 "gstreamer-sharp.dll", "gio-sharp.dll", "glib-sharp.dll" 使用的整合,於是就把 gstreamer-sharp-netcore 從 GstreamerPlayer 專案的相依性整個移除,並換入這三個 dll。
然後編譯就出錯了:
還好現在這種問題有 GitHub Copilot 都不是難事了,按鈕按下去就能透過 AI 迅速找到適合的處理解法唷!快快訂閱吧!
套用:
修正完畢:
GstreamerPlayer 專案能夠正常編譯沒問題。
喔~~對了!
由於 gstreamer-sharp.dll 已經是依照 MSVC 的 Gstreamer 編譯出來的,記得先安裝 MSVC 版本的 Gstreamer 並把 Windows 的系統環境變數設定成 MSVC 的版本來使用喔!
不然執行 GstreamerPlayer 專案時就會在 Gst.Application.Init() 的時候遭遇 Exception:
然後就可以正確執行 GstreamerPlayer 專案了!
趕緊來播放影片看看:
YA~~~可以正常播放呢!不過好像哪裡怪怪的?
為什麼 Visual Studio 監測到的專案程式所使用的記憶體使用一直再往上爬!而且是瘋狂的直線上升🫣
打開工作管理員看一下:
應用程式的使用,這個數字...疑惑中?
切到效能查看記憶體使用,驚呆了!
趕緊停掉 GstreamerPlayer 的執行:
記憶體的使用馬上降下來。
奇怪的是為什麼磁碟還在瘋狂的存取中?
過了一陣子總算降下來,猜測是虛擬記憶體的系統分頁檔關係。
這下可好了,用 MSVC 版本的 Gstreamer-Sharp 是成功了,但是一但播放影片整體系統的記憶體就會被耗盡,這可不行啊!