有关于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)"等自己的名字。