windows下編譯gstreamer1.16.1
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開源項目,內部編譯太過複雜,需要熟悉每個庫的使用和內部原理,強度比較大,不然很難保證商用級產品的發佈;
由於依賴過於複雜不難配置發佈時有太多無用的依賴,對發佈週期要求較高;