VLC源代碼分析報(bào)告報(bào)告材料_第1頁
VLC源代碼分析報(bào)告報(bào)告材料_第2頁
VLC源代碼分析報(bào)告報(bào)告材料_第3頁
VLC源代碼分析報(bào)告報(bào)告材料_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

實(shí)用標(biāo)準(zhǔn)文案VLC源代碼分析一、VLC簡介VLC的全名是VideoLanClient ,是一個(gè)開源的、跨平臺的視頻播放器。 VLC支持大量的音視頻傳輸、封裝和編碼格式,完整的功能特性列表可以在這里獲得 ,下面給出一個(gè)簡要的不完整的列表:操作系統(tǒng):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)實(shí)際上為了更清晰一點(diǎn),我們可以反過來說說VLC不支持哪些常見的。首先是RealVideo(Real的Audio部分支持),因?yàn)镽eal的Video加碼器存在版權(quán)的問題。實(shí)際上已經(jīng)加入了RealVideo的支持,但是需要額外的解碼器(類似MPlayer)。另外,VLC不支持3GP的音頻格式AMR。VLC原先是幾個(gè)法國的大學(xué)生做的項(xiàng)目,后來他們把 VLC作為了一個(gè)開源的項(xiàng)目,吸引了來自世界各國的很多優(yōu)秀程序員來共同編寫和維護(hù) VLC,才逐漸變成了現(xiàn)在這個(gè)樣子。至于為什么叫VideoLanClient ,是因?yàn)橐郧斑€有一個(gè) VideoLanServer 的項(xiàng)目(簡稱VLS),而目前VLS的功能已經(jīng)合并到 VLC中來,所以VLC不僅僅是一個(gè)視頻播放器,它也可以作為小型的視頻服務(wù)器,更可以一邊播放一邊轉(zhuǎn)碼,把視頻流發(fā)送到網(wǎng)絡(luò)上。 VLC最為突出的就是網(wǎng)絡(luò)流的播放功能,例如MPEG2的UDPTS流的播放和轉(zhuǎn)發(fā),幾乎是無可替代的。對普通用戶來說,VLC還有一個(gè)好處是不影響 Windows 中的解碼器。VLC通常不影響也不依賴于系統(tǒng)中自帶的解碼器(除了 realvideo 和quicktime 的類型),很綠色很環(huán)保;更不用擔(dān)心流氓軟件、廣告插件之類的惡心的玩意兒。從程序結(jié)構(gòu)來看,VLC的可擴(kuò)展性是相當(dāng)優(yōu)秀的。 VLC絕大部分用高效的 C代碼來編寫(少量的 C++和匯編),但是實(shí)現(xiàn)了完全動態(tài)的模塊化,所有功能包括程序框架本身都是 module,可以在運(yùn)行時(shí)載入,這使得 VLC可以輕易的擴(kuò)展多種功能并且容易維護(hù)。它的架構(gòu)有一點(diǎn)類似于 DirectShow 的技術(shù)。VLC也很注重版權(quán)方面的問題,你可以放心的自由的使用而不需要為版權(quán)的問題擔(dān)心—— VLC只包括免費(fèi)的、自由的庫。VLC基于GPL,因此也可以用于商業(yè)應(yīng)用,只需要保留 GPL,以及公開源代碼,如果你修改了 VLC的話。下面是VLC相關(guān)的一些鏈接VLC官方網(wǎng)站:VLC下載頁面:VLC下載目錄(源碼和安裝包): VLCNightlyBuilds :VLC開發(fā)Wiki:VLCWin32第三方庫預(yù)編譯包下載目錄: VLC官方論壇:VLC郵件列表:二、Windows 平臺編譯第一步,要創(chuàng)建編譯 VLC的環(huán)境。VLC在Windows 下可以用Msys+MingW 或者Cygwin的方式來編譯,二者大同小異,這里主要介紹 Cygwin。精彩文檔實(shí)用標(biāo)準(zhǔn)文案Cygwin是一個(gè)在Windows 下面模擬Linux環(huán)境的東西。它提供了很多庫和應(yīng)用程序,讓你可以像在 Linux上一樣來使用Windows。你需要在 下載一個(gè)cygwin的安裝程序setup.exe。然后選擇一個(gè)cygwin的源來下載所需要的庫,國內(nèi)的話到 和 相對來說會快一點(diǎn)。第一次安裝,除了默認(rèn)的庫以外,我們還需要加入一些庫來支持 VLC的編譯,包括Archive (目錄)unzipzipDevelautoconfautomakebinutilscvsexpatgccgcc-coregcc-g++gcc-mingwgcc-mingw-coregcc-mingw-g++gdb (如果你需要調(diào)試的話)gettextgettext-develgit (不一定需要)ibiconvibtoolmakemingw-runtimenasmpatchutilspkg-configsubversionEditorvim (有了它方便點(diǎn))LibslibgcryptWeb//這兩個(gè)可以不要,如果你不想編譯第三方庫curl(optional:forbuildingextras/contrib)wget(optional:forbuildingextras/contrib)然后是下載所需要版本的 VLC的源代碼。對于Release版本,可以從這里下載: ,如果你需要下載實(shí)時(shí)最新的庫,就要從 VLC的源碼庫上取下來了。現(xiàn)在 VLC改用git了,使用命令: 精彩文檔實(shí)用標(biāo)準(zhǔn)文案VLC還需要很多第三方的庫,你可以取得源碼來編譯,這部分可以參考 Linux上的VLC編譯的文章。在 Windows 上VLC做了一個(gè)編譯好的 win32第三方庫的包,可以從 下載。包需要解壓到根目錄 ‘/’,事實(shí)上這些庫都位于’ /usr/win32-branch ’里邊。在cygwin 中進(jìn)入vlc的主目錄,運(yùn)行 bootstrap ,’./bootstrap ’。在等待它結(jié)束之前,我們先來看一下如何配置 VLC的編譯。運(yùn)行 ‘./configure-h>cfg_opt.txt’就可以把配置的選項(xiàng)信息都輸出到cfg_opt.txt中,然后慢慢來研究。里面大多是啟用、禁用某些特性和功能模塊,或者配置某些模塊需要的庫的路徑等信息。為了方便可以寫一個(gè)簡單的腳本來做這件事,當(dāng)然這個(gè)不是必需的。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例如把這個(gè)文件保存為‘mybuild’,等bootstrp運(yùn)行結(jié)束之后,我們只需要運(yùn)行一下mybuild就會開始配置和編譯了。這通常需要挺長的時(shí)間,如果運(yùn)氣好,在漫長的等待之后make運(yùn)行成功,vlc就編譯好了。直接雙擊主目錄里邊的vlc.exe應(yīng)該就可以運(yùn)行了。為了方便可以把它打包,最簡單的是‘makepackage-win32-base’,它將創(chuàng)建一個(gè)子目錄來存放所有運(yùn)行所需的東西,這個(gè)目錄就是一個(gè)綠色版的VLC啦。當(dāng)然如果你運(yùn)氣沒那么棒,可能會碰到各種各樣的錯(cuò)誤,例如在 boottrap 或者configure 中出錯(cuò),通常是因?yàn)闆]安裝某個(gè)庫或者庫的版本不合適;也可能碰到編譯的錯(cuò)誤,嘗試去 google 一下。本文參考 三、Linux 平臺編譯精彩文檔實(shí)用標(biāo)準(zhǔn)文案先下載源代碼,把源代碼解壓之后也是先運(yùn)行一下 bootstrap ,看看缺什么工具沒有,例如 gcc、make、libtool、automake、autoconfig 等是否有合適的版本。如果不合適的話就用你喜歡的方式去升級或者安裝。下面最麻煩的一步來了。 VLC在Linux上沒有給出和Windows 上類似的第三方庫的預(yù)編譯包,你必須去自己獲得并編譯這些庫。這些庫的數(shù)量取決于你的配置選項(xiàng)。VLC給出了一個(gè)自動化的解決方案,關(guān)注一下主目錄 \extras\contrib ,里邊有一些工具來幫助你自動下載、 patch 和編譯所有可能用到的第三方庫。先運(yùn)行一下那個(gè)目錄下的 bootstrap ,如果缺少***.mak 的話可以到VLC的代碼庫中找一下,是一個(gè)系統(tǒng)相關(guān)的文件,然后簡單的一句 make就可以了。如果你對這些庫比較熟悉的話最好先手動篩選一下,有一些可能不是你所需要的,而下載他們可能需要很長的時(shí)間。在漫長的等待之后,如果一切順利(我?guī)缀醪幌嘈艜@樣),這一步就算完成了??赡苡龅降膯栴}有:下載實(shí)在太慢,可以用其他下載工具把庫的代碼包下下來放到\extras\contrib\src 里邊;如果下載一半斷掉,可以把那個(gè)不完整的文件刪掉重新再運(yùn)行 make。這一步做完之后和 windows 上的編譯就幾乎一樣了。寫一個(gè)配置腳本然后運(yùn)行它。例如一個(gè)配置腳本:./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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論