VLC源代碼分析報告報告材料_第1頁
VLC源代碼分析報告報告材料_第2頁
VLC源代碼分析報告報告材料_第3頁
VLC源代碼分析報告報告材料_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實用標準文案VLC源代碼分析一、VLC簡介VLC的全名是VideoLanClient ,是一個開源的、跨平臺的視頻播放器。 VLC支持大量的音視頻傳輸、封裝和編碼格式,完整的功能特性列表可以在這里獲得 ,下面給出一個簡要的不完整的列表:操作系統:Windows、WinCE、Linux、MacOSX、BEOS、BSD訪問形式:文件、DVD/VCD/CD 、http、ftp、mms、TCP、UDP、RTP、IP組播、IPv6、rtsp編碼格式:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.263、H.264、FLAC視頻字幕:DVD、DVB、Text、Vobsub視頻輸出:DirectX、X11、XVideo、SDL、FrameBuffer、ASCII控制界面:WxWidgets、QT4、Web、Telnet、Commandline瀏覽器插件:ActiveX、Mozilla(firefox)實際上為了更清晰一點,我們可以反過來說說VLC不支持哪些常見的。首先是RealVideo(Real的Audio部分支持),因為Real的Video加碼器存在版權的問題。實際上已經加入了RealVideo的支持,但是需要額外的解碼器(類似MPlayer)。另外,VLC不支持3GP的音頻格式AMR。VLC原先是幾個法國的大學生做的項目,后來他們把 VLC作為了一個開源的項目,吸引了來自世界各國的很多優秀程序員來共同編寫和維護 VLC,才逐漸變成了現在這個樣子。至于為什么叫VideoLanClient ,是因為以前還有一個 VideoLanServer 的項目(簡稱VLS),而目前VLS的功能已經合并到 VLC中來,所以VLC不僅僅是一個視頻播放器,它也可以作為小型的視頻服務器,更可以一邊播放一邊轉碼,把視頻流發送到網絡上。 VLC最為突出的就是網絡流的播放功能,例如MPEG2的UDPTS流的播放和轉發,幾乎是無可替代的。對普通用戶來說,VLC還有一個好處是不影響 Windows 中的解碼器。VLC通常不影響也不依賴于系統中自帶的解碼器(除了 realvideo 和quicktime 的類型),很綠色很環保;更不用擔心流氓軟件、廣告插件之類的惡心的玩意兒。從程序結構來看,VLC的可擴展性是相當優秀的。 VLC絕大部分用高效的 C代碼來編寫(少量的 C++和匯編),但是實現了完全動態的模塊化,所有功能包括程序框架本身都是 module,可以在運行時載入,這使得 VLC可以輕易的擴展多種功能并且容易維護。它的架構有一點類似于 DirectShow 的技術。VLC也很注重版權方面的問題,你可以放心的自由的使用而不需要為版權的問題擔心—— VLC只包括免費的、自由的庫。VLC基于GPL,因此也可以用于商業應用,只需要保留 GPL,以及公開源代碼,如果你修改了 VLC的話。下面是VLC相關的一些鏈接VLC官方網站:VLC下載頁面:VLC下載目錄(源碼和安裝包): VLCNightlyBuilds :VLC開發Wiki:VLCWin32第三方庫預編譯包下載目錄: VLC官方論壇:VLC郵件列表:二、Windows 平臺編譯第一步,要創建編譯 VLC的環境。VLC在Windows 下可以用Msys+MingW 或者Cygwin的方式來編譯,二者大同小異,這里主要介紹 Cygwin。精彩文檔實用標準文案Cygwin是一個在Windows 下面模擬Linux環境的東西。它提供了很多庫和應用程序,讓你可以像在 Linux上一樣來使用Windows。你需要在 下載一個cygwin的安裝程序setup.exe。然后選擇一個cygwin的源來下載所需要的庫,國內的話到 和 相對來說會快一點。第一次安裝,除了默認的庫以外,我們還需要加入一些庫來支持 VLC的編譯,包括Archive (目錄)unzipzipDevelautoconfautomakebinutilscvsexpatgccgcc-coregcc-g++gcc-mingwgcc-mingw-coregcc-mingw-g++gdb (如果你需要調試的話)gettextgettext-develgit (不一定需要)ibiconvibtoolmakemingw-runtimenasmpatchutilspkg-configsubversionEditorvim (有了它方便點)LibslibgcryptWeb//這兩個可以不要,如果你不想編譯第三方庫curl(optional:forbuildingextras/contrib)wget(optional:forbuildingextras/contrib)然后是下載所需要版本的 VLC的源代碼。對于Release版本,可以從這里下載: ,如果你需要下載實時最新的庫,就要從 VLC的源碼庫上取下來了。現在 VLC改用git了,使用命令: 精彩文檔實用標準文案VLC還需要很多第三方的庫,你可以取得源碼來編譯,這部分可以參考 Linux上的VLC編譯的文章。在 Windows 上VLC做了一個編譯好的 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/\–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應該就可以運行了。為了方便可以把它打包,最簡單的是‘makepackage-win32-base’,它將創建一個子目錄來存放所有運行所需的東西,這個目錄就是一個綠色版的VLC啦。當然如果你運氣沒那么棒,可能會碰到各種各樣的錯誤,例如在 boottrap 或者configure 中出錯,通常是因為沒安裝某個庫或者庫的版本不合適;也可能碰到編譯的錯誤,嘗試去 google 一下。本文參考 三、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\–

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論