编译libvlc。。。

https://wiki.videolan.org/Win32Compile按照官网教程,安装所需工具,参考 :http://qjw.qiujinwu.com/blog/2014/12/08/cross_build_vlc_in_linux

git vlc:  git clone git://git.videolan.org/vlc.git vlc

vlc版本:3.0.0-git

cd vlc/contrib

mkdir win32 && cd win32

../bootstrap --host=i686-w64-mingw32make prebuilt

不知道要不要移除,反正我移除了:rm -f ../i686-w64-mingw32/bin/moc ../i686-w64-mingw32/bin/uic ../i686-w64-mingw32/bin/rcc

编译自己的ffmpeg来进一步缩小体积:下载ffmpeg2.5,另存为vlc/contrib/tarballs/ffmpeg-HEAD.tar.gz,去掉contrib/src中的其他目录,除了ffmpeg,gsm,lame,openjpeg,zlib及一些sh和mak文件,

make fetch,会下载gsm,lame,openjpeg,zlib的包。

修改contrib/src/ffmpeg/rules.mak:在中间加上下面一段,去掉不需要的解码器,复用器,协议等

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. FFMPEGCONF +=  --enable-memalign-hack   
  2. --disable-decoders   
  3. --enable-decoder=mpeg4   
  4. --enable-decoder=flv   
  5. --enable-decoder=h264   
  6. --enable-decoder=wmv2   
  7. --enable-decoder=wmv3   
  8. --enable-decoder=rv40   
  9. --enable-decoder=flac   
  10. --enable-decoder=mp3   
  11. --enable-decoder=pcm_alaw   
  12. --enable-decoder=pcm_s8   
  13. --enable-decoder=pcm_s8_planar   
  14. --enable-decoder=pcm_u16be   
  15. --enable-decoder=pcm_u16le   
  16. --enable-decoder=pcm_u8   
  17. --enable-decoder=pcm_mulaw   
  18. --enable-decoder=pcm_s16be   
  19. --enable-decoder=pcm_s16le   
  20. --enable-decoder=pcm_s16le_planar   
  21. --enable-decoder=ac3   
  22. --enable-decoder=aac   
  23. --enable-decoder=ape   
  24. --enable-decoder=wmav2   
  25. --enable-decoder=vorbis   
  26. --enable-decoder=mp1   
  27. --enable-decoder=mp2   
  28. --disable-demuxers   
  29. --enable-demuxer=aac   
  30. --enable-demuxer=ac3   
  31. --enable-demuxer=pcm_u8   
  32. --enable-demuxer=ape   
  33. --enable-demuxer=asf   
  34. --enable-demuxer=rm   
  35. --enable-demuxer=m4v   
  36. --enable-demuxer=avi   
  37. --enable-demuxer=mov   
  38. --enable-demuxer=mp3   
  39. --enable-demuxer=mtv   
  40. --enable-demuxer=mv   
  41. --enable-demuxer=ogg   
  42. --enable-demuxer=flac   
  43. --enable-demuxer=wav   
  44. --enable-demuxer=h264   
  45. --enable-demuxer=flv   
  46. --enable-demuxer=matroska   
  47. --disable-protocols   
  48. --disable-hwaccels  

修改contrib/win32/config.mak:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. BUILD := x86_64-linux-gnu  
  2. HOST := i686-w64-mingw32  
  3. PKGS_DISABLE :=   
  4. PKGS_ENABLE :=   
  5. BUILD_DISCS := 1  
  6. #BUILD_ENCODERS := 1  
  7. #BUILD_NETWORK := 1  
  8. GPL := 1  
  9. HAVE_WIN32 := 1  
  10. ENABLE_SMALL := 1  

在contrib/win32目录make,会编译精简版的ffmpeg,生成的.o会替换掉contrib/i686-w64-mingw32的同名文件。链接的时候会链接自己编译的链接库。

cd 到vlc的根目录

mkdir win32 && cd win32

添加pkgconfig路径,不然编译vlc的时候会找不到外部库:

export PKG_CONFIG_LIBDIR=$HOME/vlc/contrib/i686-w64-mingw32/lib/pkgconfig

编译vlc:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. export CFLAGS="-O2"  
  2. export CXXFLAGS="-O2"  
  3. ../extras/package/win32/configure.sh --host=i686-w64-mingw32   
  4. --disable-debug   
  5. --disable-gprof   
  6. --disable-cprof   
  7. --disable-lua   
  8. --disable-sout   
  9. --disable-httpd   
  10. --disable-vlm   
  11. --disable-archive   
  12. --disable-live555   
  13. --disable-dc1394   
  14. --disable-dv1394   
  15. --disable-linsys   
  16. --disable-dvdread   
  17. --disable-dvdnav   
  18. --disable-bluray   
  19. --disable-chromaprint   
  20. --disable-chromecast   
  21. --disable-qt   
  22. --disable-skins2   
  23. --disable-x265   
  24. --disable-gnutls   
  25. --disable-taglib   
  26. --disable-opencv   
  27. --disable-smbclient   
  28. --disable-dsm   
  29. --disable-sftp   
  30. --disable-v4l2   
  31. --disable-decklink   
  32. --disable-gnomevfs   
  33. --disable-vcdx   
  34. --disable-vcd   
  35. --disable-screen   
  36. --disable-libcddb   
  37. --disable-vnc   
  38. --disable-freerdp   
  39. --disable-realrtsp   
  40. --disable-macosx-eyetv   
  41. --disable-macosx-qtkit   
  42. --disable-macosx-avfoundation   
  43. --disable-silent-rules   
  44. --disable-asdcp   
  45. --disable-dvbpsi   
  46. --disable-gme   
  47. --disable-shout   
  48. --disable-mod   
  49. --disable-mpc   
  50. --disable-omxil   
  51. --disable-omxil-vout   
  52. --disable-mad   
  53. --disable-shine   
  54. --disable-gst-decode   
  55. --disable-crystalhd   
  56. --disable-postproc   
  57. --disable-vpx   
  58. --disable-faad   
  59. --disable-fdkaac    
  60. --disable-quicktime    
  61. --disable-dca   
  62. --disable-gles2   
  63. --disable-gles1   
  64. --disable-tremor   
  65. --disable-rpi-omxil   
  66. --disable-macosx-quartztext    
  67. --disable-android-surface    
  68. --disable-macosx   
  69. --disable-minimal-macosx   
  70. --disable-macosx-dialog-provider   
  71. --disable-directfb   
  72. --disable-x26410b   
  73. --disable-aa    
  74. --disable-alsa   
  75. --disable-jack   
  76. --disable-update-check   
  77. --disable-fluidsynth   
  78. --disable-ncurses   
  79. --disable-opus   
  80. --disable-sdl   
  81. --disable-sdl-image   
  82. --disable-opensles   
  83. --disable-png   
  84. --disable-jpeg   
  85. --disable-zvbi   
  86. --disable-telx   
  87. --disable-libtar   
  88. --disable-libxml2   
  89. --disable-sid   
  90. --disable-kva   
  91. --disable-merge-ffmpeg   
  92. --disable-samplerate   
  93. --disable-directx   
  94. --disable-daala   
  95. --disable-mfx   
  96. --disable-vda   
  97. --disable-dxva2   
  98. --disable-flac   
  99. --disable-mpg123   
  100. --disable-vorbis   
  101. --disable-mkv   
  102. --disable-a52   
  103. --disable-libmpeg2   
  104. --disable-theora   
  105. --disable-x264   
  106. --disable-twolame   
  107. --disable-glx   
  108. --disable-ogg   
  109. --disable-mux_ogg   
  110. --disable-x262   
  111. --disable-growl   
  112. --disable-macosx-vlc-app   
  113. --disable-chromaprint   
  114. --disable-chromecast   
  115. --disable-audioqueue   
  116. --disable-libgcrypt   
  117. --disable-aribsub   
  118. --disable-aribb25   
  119. --disable-kate   
  120. --disable-tiger   
  121. --disable-xcb   
  122. --disable-xvideo   
  123. --disable-vdpau   
  124. --disable-wayland   
  125. --disable-svg   
  126. --disable-svgdec   
  127. --disable-mmal   
  128. --disable-speex   
  129. --disable-schroedinger   
  130. --disable-atmo   
  131. --disable-glspectrum   
  132. --disable-libass   
  133. --disable-udev   
  134. --disable-mtp   
  135. --disable-upnp   
  136. --disable-bonjour   
  137. --disable-goom   
  138. --disable-projectm   
  139. --disable-vsxu   
  140. --with-libiconv-prefix  

会需要一些库,自己添加比如iconv,然后

make package-win-common,会把编译好的所有文件放到vlc/win32/vlc-版本号 文件夹中,进入上述文件夹中:

find . -name "*.dll" -type f | xargs -i strip --strip-all {}

去掉dll中的调试信息。

生成的所有所需插件都在plugins中,经过筛选,仅留下下列dll:

libavformat_plugin.dll
libavcodec_plugin.dll
libfilesystem_plugin.dll
libdirect3d_plugin.dll
libdrawable_plugin.dll
libwaveout_plugin.dll
libaudio_format_plugin.dll
libpacketizer_flac_plugin.dll

转载:http://blog.csdn.net/sx5486510/article/details/43117559

原文地址:https://www.cnblogs.com/canphp/p/4475514.html