VLC的全名是Video Lan Client,是一個開源的、跨平臺的視頻播放器。VLC支持大量的音視頻傳輸、封裝和編碼格式。
工具/原料
Cygwin
vlc-1.1.5.tar.bz2源碼包
contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2編譯庫
lua-5.1.4.tar.gz語言包
方法/步驟
創建VLC的編譯環境。VLC在Windows下有兩種編譯方式:
方式一:Msys+MinGW
方式二:Cygwin
二者大同小異,下面主要介紹Cygwin的方式編譯VLC。Cygwin是一個在Windows下面模擬Linux環境的東西。它提供了很多庫和應用程序,讓你可以像在Linux上一樣來使用Windows。到官網下載Cygwin的安裝程序setup.exe。
下載完成後,點擊Cygwin的安裝程序setup.exe進行安裝。
點擊【下一步】按鈕,進去如下界面,有三種安裝方式:
3.1從網絡安裝
3.2下載但不安裝
3.3從本地安裝
Cygwin安裝的時候,需要安裝一些默認的庫,同時我們編譯VLC還需要加入一些庫來支持VLC的編譯。如果你沒有下載相應的庫到本地則選擇第一種方式“Install from Internet”來安裝。如果已經把庫下載到本地,則選擇第三種方式"Install from Local Directory"來安裝。小編採用的是第三種方式安裝Cygwin。
點擊【下一步】,根據窗口提示選擇安裝目錄。繼續【下一步】選擇本地庫安裝包的目錄。
點擊【下一步】,根據窗口提示選擇需要安裝的包。
選擇所有需要的安裝包後,點擊【下一步】進行安裝,並等待安裝完成。
安裝結束後,選擇創建桌面圖標,並點擊【完成】按鈕。
下載VLC源碼包(vlc-1.1.5.tar.bz2)、編譯庫(contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2),和LUA語言包(lua-5.1.4.tar.gz)。
下載完成編譯源碼、庫和語言包後,點擊桌面上Cygwin程序快捷鍵,打開Cygwin應用程序。
打開程序之後,將vlc-1.1.5.tar.bz2和lua-5.1.4.tar.gz拷貝到Cygwin安裝目錄下的/home/yourname下面(注:yourname為你自己的用戶名,如從上面打開的Cygwin程序應用窗口可知小編的yourname為lenovo)。小編Cygwin的安裝目錄為D:\cygwin,則拷貝後如下圖。
拷貝完成後,返回Cygwin程序窗口,使用Linux命令解壓lua-5.1.4.tar.gz軟件包,解壓命令如下:
$tar zxvf lua-5.1.4.tar.gz
解壓lua-5.1.4.tar.gz完成後,進入lua-5.1.4目錄,在記事本中修改src/Makefile,將CC = gcc改成CC = gcc -mno-cygwin並保存。
修改完成後,返回Cygwin程序窗口,進入到lua-5.1.4目錄,執行如下命令:
$make ansi
$make install
編譯並安裝LUA。
在~(/home/yourname)目錄下解壓vlc-1.1.5.tar.bz2,解壓命令如下:
$tar jxvf vlc-1.1.5.tar.bz2
將contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2庫文件包拷貝到Cygwin程序的安裝目錄下(即與上面提到的home目錄為同級目錄), 返回Cygwin應用程序窗口,在~(/)目錄下對庫進行解壓,解壓命令如下:
$tar jxvf contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2
刪除/usr/win32/bin下面的moc,rcc,uic這三個文件,注意,保留moc.exe,rcc.exe,uic.exe。
進入vlc-1.1.5,並執行如下命令:
$./bootstrap
編譯成功後會顯示如下內容:
Successfully bootstrapped
註釋:若出現此錯誤
在Cygwin中開發Rails,有時候需要執行SH命令,而這些命令調用DLL時經常會遇到類似的錯誤提示:
[main] ruby 4208 C:/cygwin/bin/ruby.exe: *** fatal error - unable to remap C:/cygwin/bin/cygssl-0.9.8.dll to
same address as parent(0×340000) != 0×4730000
[main] ruby 1752 fork: child 4208 - died waiting for dll loading, errno 11
具體原因不大清楚,解決方法如下:
CMD到Cygwin的bin路徑下,執行ash命令,或者直接run這個命令;
在ash提示符後面運行/bin/rebaseall,注意要輸入完整,如果只輸入rebaseall,會提示找不到這個命令,而且這個命令只能在ash下面執行,不能在Cygwin下面執行。
現在打開Cygwin,應該一切正常了。
在vlc-1.1.5目錄下,新建腳本文件myBuild.sh,添加如下內容:
PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" \
./configure \
--host=i686-pc-mingw32 \
--enable-nls --enable-sdl \
--enable-avcodec --enable-avformat --enable-swscale \
--enable-faad --enable-flac --enable-theora \
--enable-freetype \
--enable-fribidi \
--disable-fluidsynth \
--enable-live555 --with-live555-tree=/usr/win32/live.com \
--enable-caca \
--with-dvdnav-config-path=/usr/win32/bin \
--disable-vcdx --enable-goom \
--enable-twolame --enable-dvdread \
--enable-debug --enable-dca \
--disable-mkv --disable-taglib --disable-projectm \
--disable-zvbi --disable-schroedinger --disable-dirac \
--enable-mozilla --with-mozilla-sdk-path=/usr/win32/gecko-sdk
返回Cygwin應用程序窗口,在vlc-1.1.5目錄下執行./myBuild命令。
成功後會顯示
libvlc configuration
--------------------
version : 1.1.5
system : mingw32
architecture : i686 mmx sse sse2
build flavour : debug devel
vlc aliases : cvlc rvlc svlc qvlc
plugins/bindings : activex mozilla
You can tune the compiler flags in vlc-config.
To build vlc and its plugins, type `./compile' or `make'.
修改vlc-1.1.5目錄下的libtool文件,需改內容如下:
修改global_symbol_pipe=""為:
global_symbol_pipe="sed -n -e 's/^.*[]//([ABCDGIRSTW][ABCDGIRSTW]*//)[][]*//(//)//([_A-Za-z][_A-Za-z0-9]*//)/$///1//2//3 //3/p'"
修改完成後,返回Cygwin應用程序窗口,在vlc-1.1.5目錄下執行如下操作:
$make
執行make應該不會報錯,成功後,繼續執行:
$make package-win32-base
至此,windows下編譯vlc-1.1.5就此搞定!