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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章