windows下編譯gstreamer1.16.1
- windows下編譯gstreamer1.16.1
-
- 幾個常備位址
- 直接下載下傳已編譯好的庫
- 編譯Glib
-
- 方法1:
- 方法2:
- 編譯gstreamer1.16.1
- 反思:
-
- 為什麼使用gstreamer
- 為什麼不用gstreamer
windows下編譯gstreamer1.16.1
先說明沒有編譯通過,但是還是學到了很多東西,現在記錄一下,也希望通過我的一點努力可以螢幕前的你節省更多的時間,做更多有意義的事,為中華程式設計多節省些人力。
幾個常備位址
- glib 源碼位址 連結
- gtk相關gstreamer中的glib來源在這裡 連結
- gstreamer 工程位址 連結
- vcpkg微軟的一個包管理器 連結下載下傳自動編譯一些開源好用的linux三方庫的東西,看着不錯;
直接下載下傳已編譯好的庫
gstreamer
已編譯的msvc版本 下載下傳位址
找個最新的下載下傳,目前是1.16.1不知道為什麼隻提供64位版本的下載下傳
編譯Glib
下面來在windows上編譯,
gstreamer
依賴于glib庫,是以想到的首先編譯glib的庫
方法1:
使用vcpkg直接下載下傳安裝,這個是微軟項目組維護的項目,下載下傳下來在powershell中執行bootstrap-vcpkg.bat其他的看readme文檔吧 項目位址 官方說明文檔 連結
#執行此指令後會自動編譯出vcpkg.exe具體怎麼實作的我也沒有細看;
bootstrap-vcpkg.bat
#下載下傳源碼并編譯安裝
vcpkg.exe install glib
方法2:
目前沒有測試通過,就是下載下傳源碼自己編譯了,具體沒有嘗試,對了上面第一種方法也是glib的文檔中推薦的一種;
編譯gstreamer1.16.1
接下來編譯
gstreamer
了,
gstreamer
編譯現在放在了一個項目中
cerbero
這個項目主要是指導使用者怎麼實作多平台編譯,具體的文檔自己看;我的編譯說明下;
這個項目使用了python3.5+作為配置腳本,是以要安裝python3;
mingw
(注意不是ming-w64)因為内部要使用mingw-get下載下傳依賴包;還有些其他的工具如打包工具什麼的自行看下官方文檔吧,然後進入目錄執行
python3 ./cerbero-uninstalled -v visualstudio -c config/win32.cbc bootstrap
注意我使用的1.16.1版本這樣編譯不過提示找不到vs;查源碼得知需設定環境變量,代碼片段如下;
cerbero-1.16.1\cerbero\ide\vs\env.py
def get_program_files_dir():
if 'PROGRAMFILESX86' in os.environ:
# Windows 64-bit
return Path(os.environ['PROGRAMFILESX86'])
elif 'PROGRAMFILES' in os.environ:
# Windows 32-bit
return Path(os.environ['PROGRAMFILES'])
raise FatalError('Could not find path to 32-bit Program Files directory')
這個是我修改後的,主要是指明vs的安裝根目錄;
windows shell
set PROGRAMFILESX86=D:\Program Files (x86)
mingw shell
export PROGRAMFILESX86="D:\Program Files (x86)"
具體環境變量和我現在寫的不一樣,具體情況具體處理吧;之後就可以編譯了,雖說我的編譯出錯了說是找不到libtool;MGOD 不知道這些項目在幹什麼,看日志cerbero 下載下傳了整套的gcc編譯鍊,為什麼編譯不過不得而知;
反思:
為什麼使用gstreamer
gstreamer的結構性比較好,有強大的架構支撐,減少代碼寫作投入成本,另外内置dbus消息系統,友善開發;
為什麼不用gstreamer
gstreamer内置的dbus不好移植(目前已經在vs2015上編譯通過),另外gstreamer項目依賴了太多的GLP項目,這些項目又依賴太多的其它linux開源項目,内部編譯太過複雜,需要熟悉每個庫的使用和内部原理,強度比較大,不然很難保證商用級産品的釋出;
由于依賴過于複雜不難配置釋出時有太多無用的依賴,對釋出周期要求較高;