VLC 精简

VLC默认包含了大量的功能,超过2百个插件;Windows下安装包大小接近10MB,安装之后超过35MB。有时候如果我们只需要部分的功能,应该如何精简它呢?
例如在SimpleTV中,Roger仅保留了播放和录制格式为MPEG2,以UDP组播或者http方式传输的视频流的功能,这样整个VLC打包后只有1.2MB,解压后也仅有2M多一点。
精简VLC的第一步是重新配置编译选项,将不需要的功能去掉。以下是Roger用于SimpleTV0.4版的VLC配置脚本,VLC的版本是0.8.6i。

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 \
–with-freetype-config-path=/usr/win32-branch/bin \
–with-fribidi-config-path=/usr/win32-branch/bin \
–disable-ffmpeg \
–disable-live555 \
–disable-cddax \
–disable-vcdx \
–disable-skins2 \
–disable-wxwidgets \
–disable-mozilla \
–disable-httpd \
–disable-dvdnav \
–disable-libcdio \
–disable-libcddb \
–disable-cdda \
–disable-sdl \
–disable-sdl-image \
–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 \
–disable-vorbis \
–disable-real \
–disable-xml \
–disable-x264 \
–enable-sout \
–enable-activex \
–enable-release

从这个脚本可见,主要是禁用了大量的功能。运行 ./configure -h 可以显示每一个配置项的意义;如果还不清楚可以再去搜一下选项对应的库的位置。ffmpeg是一个庞大的编解码库,但是MPEG2的解码可以利用另一个库libmpeg2,所以在这里不需要它。
注意make完之后要用make package-win32-base来打一下包,打包时会用strip工具来压缩每一个可执行文件。
但是这样还没有结束。配置项并不是很全面的,而且还会有一些小问题,例如xml禁用了还会有。。。于是还需要手动的清理一下plugins目录里面的插件,挑出没有用处的,这也需要对VLC模块的熟悉。或者使用Roger的笨方法,一个一个试,对功能没有影响的就拿掉。SImpleTV0.4所使用的plugin如以下所示:

liba52sys_plugin.dll liba52 用于AC3格式的音频解码,CCTV高清频道需要
liba52tofloat32_plugin.dll
liba52tospdif_plugin.dll
liba52_plugin.dll
libaccess_file_plugin.dll 文件访问,播放文件需要
libaccess_http_plugin.dll HTTP访问模块
libaccess_output_file_plugin.dll sout的文件模块,用于录制
libaccess_udp_plugin.dll UDP访问模块
libaout_directx_plugin.dll DirectX的声音输出,默认的声音输出模块
libdeinterlace_plugin.dll 解交错的vout-filter模块
libdirect3d_plugin.dll Direct3D视频输出模块,在上面可以半透明。。。
libfixed32tofloat32_plugin.dll 一些数据转换模块
libfixed32tos16_plugin.dll
libfloat32tos16_plugin.dll
libfloat32tos8_plugin.dll
libfloat32tou16_plugin.dll
libfloat32tou8_plugin.dll
libfloat32_mixer_plugin.dll
libglwin32_plugin.dll OpenGL视频输出模块
libi420_ymga_plugin.dll
libi422_yuy2_plugin.dll
libipv4_plugin.dll IPv4网络模块
libipv6_plugin.dll IPv6网络模块
liblibmpeg2_plugin.dll libmpeg2,解码全靠它
liblogger_plugin.dll 日志模块,调试必备
libmemcpy_plugin.dll 好像是利用各种CPU指令加速内存拷贝的
libmpeg_audio_plugin.dll MPEG音频的解码模块
libmpgatofixed32_plugin.dll
libmpga_plugin.dll
libmux_dummy_plugin.dll
libpacketizer_mpegvideo_plugin.dll
libs16tofixed32_plugin.dll
libs16tofloat32swab_plugin.dll
libs16tofloat32_plugin.dll
libs8tofloat32_plugin.dll
libsimple_channel_mixer_plugin.dll
libstream_out_display_plugin.dll sout的模块 。。。
libstream_out_duplicate_plugin.dll
libstream_out_standard_plugin.dll
libtrivial_channel_mixer_plugin.dll
libtrivial_mixer_plugin.dll
libtrivial_resampler_plugin.dll
libts_plugin.dll TS流的解复用模块
libu8tofixed32_plugin.dll
libu8tofloat32_plugin.dll
libugly_resampler_plugin.dll
libvout_directx_plugin.dll DirectX视频输出模块
libwingdi_plugin.dll GDI视频输出模块

作为ActiveX控件的VLC,只需要这些模块和axvlc.dll就足够了。当然如果使用了libvlc.dll还要带上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值