有關於VLC應用方面的介紹,好友jeremiah已經講的非常仔細。我這邊就關於自己在工作碰到的問題做個記錄,
一、源碼和第三方庫
源碼:http://download.videolan.org/pub/videolan/vlc/0.9.9/vlc-0.9.9.tar.bz2
庫: contrib-20090118-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2
二、Cygwin下載
Cygwin下載:http://www.cygwin.com/setup.exe。選擇通過網路安裝
三、執行
sed -i 's/AM_GNU_GETTEXT_VERSION(0.17)/AM_GNU_GETTEXT_VERSION(0.15)/g' configure.ac
./bootstrap
四、精簡VLC
儲存指令碼為configure-simple.sh
執行./configure-vlc01.sh
五、修改兩個檔案
libtool第156行:
修改global_symbol_pipe="" 為
global_symbol_pipe="sed -n -e 's/^.*[ ]//([ABCDGIRSTW][ABCDGIRSTW]*//)[ ][ ]*//(//)//([_A-Za-z][_A-Za
-z0-9]*//)/$///1//2//3 //3/p'"
Makefile.am第695行 修改
cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win32_destdir)/"
為
# cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win32_destdir)/"
Makefile.am第725行:
cp $(top_srcdir)/projects/mozilla/npvlc.dll.manifest $(win32_des
tdir)/mozilla/
為
# cp $(top_srcdir)/projects/mozilla/npvlc.dll.manifest $(win32_des
tdir)/mozilla/
Makefile.am第736行 修改
cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_destdir)/activex/
為
# cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_destdir)/activex/
六、執行make
七、打包
執行以下命令就會得到綠色版的vlc:
make package-win32-base
make package-win32-zip
如果想得到安裝檔案,首先需要下載NSIS 2.41,給個串連:[url]http://prdownloads.sourceforge.net/nsis/nsis-2.41-setup.exe?download[/url]。
安裝NSIS 2.41,然後在打包好的vlc-0.9.9a下面右鍵vlc.win32.nsi,選擇Compile NSIS 。
八、activex控制項的註冊
建立install.bat ,內容如下
regsvr32 axvlc.dll
reg add "HKEY_LOCAL_MACHINE/SOFTWARE/VideoLAN/VLC" /v "InstallDir" /t REG_SZ /d "%CD%//" /f
這樣就可以直接註冊當前檔案夾下的activex控制項axvlc.dll
九、cab包製作
如果要類似與test.html作個播放器伺服器,但是我們卻不能手動操縱用戶端去下載註冊vlc的ActiveX,解決方案就是自己製作cab檔案。
(1) 下載cabsdk.exe:[url]http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe[/url]
(2) 安裝cabsdk.exe
(3) 將axvlc.dll及vlc的安裝檔案拷貝到cabsdk安裝路徑/BIN/ 下。
(4) 在/BIN下建立文字檔axvlc.inf,內容如下:
; Version number and signature of INF file.
;
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
vlc-0.9.9a-win32.exe
axvlc.dll=axvlc.dll
[axvlc.dll]
FileVersion=0,9,9,0
clsid={9BE31822-FDAD-461B-AD51-BE1D1C159921}
RegisterServer=no
hook=nsiinstaller
[vlc-0.9.9a-win32.exe]
FileVersion=0,9,9,0
file-win32-x86=thiscab
[nsiinstaller]
run=%EXTRACT_DIR%/vlc-0.9.9a-win32.exe
注意:請根據安裝檔案的版本修改此檔案。
(5) 命令列到BIN目錄下,執行以下命令產生cab檔案:
CABARC.EXE N axvlc.cab axvlc.inf axvlc.dll vlc-0.9.9a-win32.exe
十、cab包使用
html頁面下使用cab檔案可以通過以下方式:
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
codebase="your/path/of/cabfile/axvlc.cab"
width="640" height="480" id="vlc" events="True">
<param name="Src" value="" />
<param name="ShowDisplay" value="True" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="False" />
</OBJECT>
這樣web用戶端無須手動註冊axvlc.dll就可以使用了。
十一、vlc自動安裝activex控制項
cab包其實就是讓客戶自動下載vlc的安裝檔案,然後啟動安裝。
Activex plugin預設是沒有被選中的,如何讓它這一步預設是選中的,或者選中並且是灰色的(比如像Media Player這一項),不讓客戶改變呢?我們需要修改編譯完的vlc的
vlc.win32.nsi檔案。然後用它重新製作vlc-0.9.9a-win32.exe.
具體修改過程如下:
在vlc.win32.nsi檔案中,找到:
Section /o $Name_Section04 SEC04
SectionIn 3
修改為:
Section $Name_Section04 SEC04
SectionIn 1 2 3
或者在1 2 3後面加入“空格RO”,表示這項是必須的不能去掉,就是選中並且是灰色的。$Name_Section04可以替換為"My ActiveX plugin (required)"等自己的名字。