libvlc-源码编译流程记录

一、 安装编译vlc的必要工具
      VLC需要C11编译器以及开发工具链,建议使用高于4.9版本的gcc,另外clang/LLVM也是可以的。如果你是从git仓库构建,你还需要gnu构建系统即 autotools(autoconf,automake,libtol,gettext)来设置Makefile.并确保这些工具是最新且可用

sudo apt-get install git build-essential pkg-config libtool automake autopoint gettext flex bison

二、获取vlc源码
      可以使用ftp获取官方发布的正式版本,也可以使用git获取。如果使用的git开发版本,首先需要引导源代码树,如果autotool过时或者丢失 ./bootstrap会失败

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

     如果你下载的是官方发布版本,提取文件,然后进入源码目录

wget ftp://ftp.videolan.org/pub/videolan/vlc/2.2.4/vlc-2.2.4.tar.xz
tar xvJf vlc-2.2.4.tar.xz
cd vlc-2.2.4

三、  获取,安装第三方库
      现在可以配置VLC了,但是必须先确保所有的依赖关系都已经安装就绪。必须安装并启用所需的所有第三方库。如果未能安装所需的库,则可能导致vlc应用程序出现错误。完整的第三方库列表可以从https://wiki.videolan.org/Contrib_Status/获取

sudo apt-get -y install libvorbis-dev libogg-dev libtheora-dev speex libspeex-dev flac libflac-dev \
  x264 libx264-dev liba52-0.7.4-dev mpeg2dec libmpeg2-4-dev faad libfaad-dev faac libfaac-dev \
  lame libmp3lame-dev ffmpeg libavdevice-dev libmad0 libmad0-dev  liboil0.3 libschroedinger-dev \
  libdca-dev twolame libtwolame-dev libmpcdec-dev libvorbisidec1 libvorbisidec-dev libass-dev   \
  libebml-dev libmatroska-dev libdvbpsi-dev libmodplug1 libmodplug-dev libshout3 libshout3-dev \
  libdvdread4 libdvdnav4 libdvdnav-dev livemedia-utils liblivemedia-dev libcddb2 libcddb2-dev libcdio-dev \
  libcdio-utils vcdimager libvcdinfo0 libvcdinfo-dev libgpg-error0 libgpg-error-dev libgcrypt11 libgcrypt11-dev \
  gnutls-bin libgnutls26 libgnutls-dev libdap-dev libxml2 libxml2-dev \
  libjpeg8 libtiff-dev libsdl1.2-dev libsdl-image1.2 libsdl-image1.2-dev libc-bin gettext libfreetype6 libfreetype6-dev \
  libfribidi-dev libfribidi0 zlib1g zlib1g-dev libtag1-dev libcaca0 libslang2-dev libcaca-dev caca-utils  \
  libportaudio2 libupnp-dev libexpat1 libexpat1-dev yasm libxcb-xv0 libxcb-xv0-dev \
  libx11-xcb1 libx11-xcb-dev libswscale-dev lua5.2 libxcb-composite0-dev

        有一些非常重要的依赖关系如下:

  1. gettext:国际化支持;
  2. libdvbpsi是MPEG-TS支持;
  3. libmad:是MP3音频解码;
  4. libmpeg2:MPEG1和MPEG2视频支持;
  5. ffmpeg或者libav(libavcodec,libavformat,libpostproc,libswscale,以及libavio)对MPEG4和大多数音频和视频解码;
  6. liba52:杜比声音;
  7. dvdread:用于dvd回放,live555回放rtsp流。
  8. 对于音频输出,可能需要alsa-lib(linux)
  9. 对于视频输出通常需要XCB、XVideo或者OPenGL/GLX。

        需要安装这些库来编译VLC,在Debian/Ubuntu上,这些库的包名一般以-dev结尾。如果所使用的linux发行版未提供这些库,最好静态编译并链接到VLC.

四、配置VLC
     ./configure用于检测系统是否能够编译VLC,您还可以选择构建中的特性,使用./configure --help会列出各种构建选项

./configure

      对大多数用户来说,./configure不需要任何命令行选项。默认情况下会根据检测到的可用库自动选择要编译的特性。如果库不再默认目录,也不在vlc源码所在目录,为了./configure找到这些库,需要使用PKG_CONFIG_PATH去指定这些库的路径。

      有些特性在默认情况下是禁用的,如果需要它们,则必须使用configure选项来强制编译它们。您可以在./configure --help中搜索disable来找到默认被禁用的特性列表。

默认禁用选项:

  • --with-libfuzzer=DIR                                 从DIR指定目录中使用libFuzzer库
  • --enable-debug                                       使能运行时断言即显示日志
  • --enable-gprof                                       使用gprof配置文件
  • --enable-cprof                                       使用cprof配置文件
  • --enable-coverage                                    构建测试版
  • --with-sanitizer=(address/memory/undefined/thread)   使用sanitizer构建
  • --enable-run-as-root                                 允许允许vlc时候使用root权限
  • --enable-wma-fixed                                   libwma-fixed,模块
  • --enable-omxil                                       openmax il 编码器模块
  • --enable-merge-ffmpeg                                合并FFmpeg-based插件
  • --enable-tremor                                      Tremor解码支持
  • --enable-bpg                                         BPG支持
  • --enable-opensles                                    Android OpenSL ES audio module (default disabled)
  • --enable-minimal-macosx                              Mac OS X 最小化支持
  • --enable-lirc                                        lirc 支持
  • --enable-update-check                                检测升级系统

       如果你想把VLC安装在其他目录,可从https://wiki.videolan.org/Configure/ 获取典型的configure

./configure --prefix=/path/to/install/folder/

     拟采用https://wiki.videolan.org/Configure/推荐的linux GIT的示例配置

sudo ./configure PKG_CONFIG_PATH=/home/gy/Qt5.12.0/5.12.0/gcc_64/lib/pkgconfig --enable-x11 --enable-xvideo --disable-gtk --enable-sdl --enable-ffmpeg --with-ffmpeg-mp3lame --enable-mad --enable-libdvbpsi --enable-a52 --enable-dca --enable-libmpeg2 --enable-dvdnav --enable-faad --enable-vorbis --enable-ogg --enable-theora --enable-faac--enable-mkv --enable-freetype --enable-fribidi --enable-speex --enable-flac --enable-livedotcom --with-livedotcom-tree=/usr/lib/live --enable-caca --enable-skins --enable-skins2 --enable-alsa --disable-kde--enable-wxwindows   --enable-ncurses --enable-asa --enable-debug

中间遇到的错误以及对应解决办法:

#报错:
    configure: error:  No package 'xcb-xkb' found. Pass --disable-xcb to skip X11 support.
#解决:
    sudo apt-get install libxcb-xkb-dev 
#报错:
     error: No package 'Qt5Svg' found.
#解决:
    sudo apt-get install libxcb-xkb-dev 
#报错:
     configure: error: Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.
#解决:
    sudo apt-get install lua5.2-dev
#报错:
     configure: error: Could not find the LUA byte compiler.
#解决:
    sudo apt-get install lua5.2

五、编译 安装

#编译
make
#安装 如果不需要安装vlc,可以在vlc所在目录直接在命令行中运行vlc
sudo make install
#如果后来你想要卸载vlc,你可在保持构建树不变的情况下运行
sudo make uninstall
######删除编译产生的中间文件
sudo make clean

编译安装过程中出现的问题:

错误:Making all in share
make[2]: 进入目录“/home/gy/vlc/vlc/share”
  LUAC   lua/extensions/VLSub.luac
luac: lua/extensions/VLSub.lua:1100: unexpected symbol near `#'
解决:卸载lua50 重新安装lua5.1以上版本即可


 

你可能感兴趣的:(音视频学习)