1. 程式人生 > >【Codecs】VLC開源播放器以及原始碼編譯

【Codecs】VLC開源播放器以及原始碼編譯

Date: 2018.5.31

1、參考:

2、VLC簡介

VLC 是一款自由、開源的跨平臺多媒體播放器及框架,可播放大多數多媒體檔案,以及 DVD、音訊 CD、VCD 及各類流媒體協議。
下載地址:
http://www.videolan.org/videolan/

3、VLC原始碼編譯:

3.1 Windows平臺編譯

第一步,要建立編譯VLC的環境。VLC在Windows下可以用Msys+MingW 或者Cygwin的方式來編譯,二者大同小異,這裡主要介紹Cygwin。
Cygwin是一個在Windows下面模擬Linux環境的東西。它提供了很多庫和應用程式,讓你可以像在Linux上一樣來使用Windows。
第一次安裝,除了預設的庫以外,我們還需要加入一些庫來支援VLC的編譯,包括 Archive (目錄) 、 unzip、 zip 、 Devel 、 autoconf 、automake 、binutils 、 cvs 、expat 、gcc 等。

然後是下載所需要版本的VLC的原始碼。對於Release版本,可以從這裡下載:http://download.videolan.org/pub/videolan/vlc/,如果你需要下載實時最新的庫,就要從VLC的原始碼庫上取下來了。現在VLC改用git了,使用命令: git clone git://git.videolan.org/vlc.git

VLC還需要很多第三方的庫,你可以取得原始碼來編譯,這部分可以參考Linux上的VLC編譯的文章。在Windows上VLC做了一個編譯好的win32第三方庫的包,可以從http://download.videolan.org/pub/testing/win32/ 下載。包需要解壓到根目錄 ‘/’,事實上這些庫都位於’/usr/win32-branch’裡邊。

在cygwin中進入vlc的主目錄,執行bootstrap,’./bootstrap’。在等待它結束之前,我們先來看一下如何配置VLC的編譯。執行 ‘./configure -h >cfg_opt.txt’就可以把配置的選項資訊都輸出到 cfg_opt.txt中,然後慢慢來研究。裡面大多是啟用、禁用某些特性和功能模組,或者配置某些模組需要的庫的路徑等資訊。為了方便可以寫一個簡單的指令碼來做這件事,當然這個不是必需的。
PATH=/usr/win32-branch/bin:$PATH \
PKG_CONFIG_PATH=/usr/win32-branch/lib/pkgconfig \
CPPFLAGS=”-I/usr/win32-branch/include -I/usr/win32-branch/include/ebml” \
LDFLAGS=-L/usr/win32-branch/lib \
CC=”gcc -mno-cygwin” CXX=”g++ -mno-cygwin” \
./configure \
–host=i686-pc-mingw32 \
–disable-gtk \
–enable-nls –enable-sdl –with-sdl-config-path=/usr/win32-branch/bin \
–enable-ffmpeg –with-ffmpeg-mp3lame –with-ffmpeg-faac \
–with-ffmpeg-zlib –enable-faad –enable-flac –enable-theora \
–with-wx-config-path=/usr/win32-branch/bin \
–with-freetype-config-path=/usr/win32-branch/bin \
–with-fribidi-config-path=/usr/win32-branch/bin \
–enable-live555 –with-live555-tree=/usr/win32-branch/live.com \
–enable-caca –with-caca-config-path=/usr/win32-branch/bin \
–with-xml2-config-path=/usr/win32-branch/bin \
–with-dvdnav-config-path=/usr/win32-branch/bin \
–disable-cddax –disable-vcdx –enable-goom \
–enable-twolame –enable-dvdread \
–enable-release –enable-dca \
–enable-mkv \
–enable-quicktime –enable-mozilla \
–with-mozilla-sdk-path=/usr/win32-branch/gecko-sdk \
–enable-mostly-builtin \
&& make

例如把這個檔案儲存為 ‘mybuild’,等bootstrp執行結束之後,我們只需要執行一下 mybuild就會開始配置和編譯了。這通常需要挺長的時間,如果運氣好,在漫長的等待之後make執行成功,vlc就編譯好了。直接雙擊主目錄裡邊的vlc.exe應該就可以運行了。
為了方便可以把它打包,最簡單的是 ‘make package-win32-base’,它將建立一個子目錄來存放所有執行所需的東西,這個目錄就是一個綠色版的VLC啦。
當然如果你運氣沒那麼棒,可能會碰到各種各樣的錯誤,例如在boottrap或者configure中出錯,通常是因為沒安裝某個庫或者庫的版本不合適;也可能碰到編譯的錯誤,嘗試去google一下。

3.2 Linux平臺編譯

先下載原始碼,把原始碼解壓之後也是先執行一下bootstrap,看看缺什麼工具沒有,例如gcc、make、libtool、automake、autoconfig等是否有合適的版本。如果不合適的話就用你喜歡的方式去升級或者安裝。

下面最麻煩的一步來了。VLC在Linux上沒有給出和Windows上類似的第三方庫的預編譯包,你必須去自己獲得並編譯這些庫。這些庫的數量取決於你的配置選項。VLC給出了一個自動化的解決方案,關注一下主目錄\extras\contrib,裡邊有一些工具來幫助你自動下載、patch和編譯所有可能用到的第三方庫。先執行一下那個目錄下的bootstrap,如果缺少*.mak的話可以到VLC的程式碼庫中找一下,是一個系統相關的檔案,然後簡單的一句make就可以了。如果你對這些庫比較熟悉的話最好先手動篩選一下,有一些可能不是你所需要的,而下載他們可能需要很長的時間。
在漫長的等待之後,如果一切順利(我幾乎不相信會這樣),這一步就算完成了。可能遇到的問題有:下載實在太慢,可以用其他下載工具把庫的程式碼包下下來放到\extras\contrib\src裡邊;如果下載一半斷掉,可以把那個不完整的檔案刪掉重新再執行make。
這一步做完之後和windows上的編譯就幾乎一樣了。寫一個配置指令碼然後執行它。例如一個配置指令碼:
./configure \
–enable-release \
–disable-skins2 \
–disable-wxwidgets \
–enable-mozilla \
–with-mozilla-sdk-path=./gecko-sdk \
–disable-sout \
–disable-httpd \
–enable-live555 \
–disable-dvdnav \
–disable-libcdio \
–disable-libcddb \
–disable-cdda \
–disable-vcd \
–disable-dvdread \
–disable-smb \
–disable-cmml \
–disable-alsa \
–disable-opengl \
–disable-png \
–disable-screen \
–disable-mkv \
–disable-mod \
–disable-mpc \
–disable-libtar \
–disable-speex \
–disable-visual \
–disable-daap \
–disable-bonjour \
–disable-gnutls \
–enable-faad \
–enable-mostly-builtin

END!