VLC精简

来源:互联网 发布:cf网络连接服务器失败 编辑:程序博客网 时间:2024/05/16 01:38

  精简

    VLC默认包含了大量的功能,超过2百个插件;Windows下安装包大小接近10MB,安装之后超过35MB。有时候如果我们只需要部分的功能,应该如何精简它呢?
    例如在SimpleTV中,如果仅保留了播放和录制格式为MPEG2,以UDP组播或者http方式传输的视频流的功能,这样整个VLC打包后只有1.2MB,解压后也仅有2M多一点。
    精简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模块的熟悉。需要如下功能控件。

    
    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还要带上。