zoukankan      html  css  js  c++  java
  • 【Codecs】VLC开源播放器以及源码编译

    Date: 2018.5.31


    1、参考:

    http://xhc66.iteye.com/blog/797291

    2、VLC简介

    VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。
    下载地址:
    http://www.videolan.org/videolan/

    3、VLC源码编译:

    3.1 Windows平台编译

    第一步,要创建编译VLC的环境。VLC在Windows下可以用Msys+MingW 或者Cygwin的方式来编译,二者大同小异,这里主要介绍Cygwin。
    Cygwin是一个在Windows下面模拟Linux环境的东西。它提供了很多库和应用程序,让你可以像在Linux上一样来使用Windows。
    第一次安装,除了默认的库以外,我们还需要加入一些库来支持VLC的编译,包括 Archive (目录) 、 unzip、 zip 、 Devel 、 autoconf 、automake 、binutils 、 cvs 、expat 、gcc 等。

    然后是下载所需要版本的VLC的源代码。对于Release版本,可以从这里下载:http://download.videolan.org/pub/videolan/vlc/,如果你需要下载实时最新的库,就要从VLC的源码库上取下来了。现在VLC改用git了,使用命令: git clone git://git.videolan.org/vlc.git

    VLC还需要很多第三方的库,你可以取得源码来编译,这部分可以参考Linux上的VLC编译的文章。在Windows上VLC做了一个编译好的win32第三方库的包,可以从http://download.videolan.org/pub/testing/win32/ 下载。包需要解压到根目录 ‘/’,事实上这些库都位于’/usr/win32-branch’里边。

    在cygwin中进入vlc的主目录,运行bootstrap,’./bootstrap’。在等待它结束之前,我们先来看一下如何配置VLC的编译。运行 ‘./configure -h >cfg_opt.txt’就可以把配置的选项信息都输出到 cfg_opt.txt中,然后慢慢来研究。里面大多是启用、禁用某些特性和功能模块,或者配置某些模块需要的库的路径等信息。为了方便可以写一个简单的脚本来做这件事,当然这个不是必需的。
    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
    –host=i686-pc-mingw32
    –disable-gtk
    –enable-nls –enable-sdl –with-sdl-config-path=/usr/win32-branch/bin
    –enable-ffmpeg –with-ffmpeg-mp3lame –with-ffmpeg-faac
    –with-ffmpeg-zlib –enable-faad –enable-flac –enable-theora
    –with-wx-config-path=/usr/win32-branch/bin
    –with-freetype-config-path=/usr/win32-branch/bin
    –with-fribidi-config-path=/usr/win32-branch/bin
    –enable-live555 –with-live555-tree=/usr/win32-branch/live.com
    –enable-caca –with-caca-config-path=/usr/win32-branch/bin
    –with-xml2-config-path=/usr/win32-branch/bin
    –with-dvdnav-config-path=/usr/win32-branch/bin
    –disable-cddax –disable-vcdx –enable-goom
    –enable-twolame –enable-dvdread
    –enable-release –enable-dca
    –enable-mkv
    –enable-quicktime –enable-mozilla
    –with-mozilla-sdk-path=/usr/win32-branch/gecko-sdk
    –enable-mostly-builtin
    && make

    例如把这个文件保存为 ‘mybuild’,等bootstrp运行结束之后,我们只需要运行一下 mybuild就会开始配置和编译了。这通常需要挺长的时间,如果运气好,在漫长的等待之后make运行成功,vlc就编译好了。直接双击主目录里边的vlc.exe应该就可以运行了。
    为了方便可以把它打包,最简单的是 ‘make package-win32-base’,它将创建一个子目录来存放所有运行所需的东西,这个目录就是一个绿色版的VLC啦。
    当然如果你运气没那么棒,可能会碰到各种各样的错误,例如在boottrap或者configure中出错,通常是因为没安装某个库或者库的版本不合适;也可能碰到编译的错误,尝试去google一下。

    本文参考 http://wiki.videolan.org/Win32CompileCygwinNew

    3.2 Linux平台编译

    先下载源代码,把源代码解压之后也是先运行一下bootstrap,看看缺什么工具没有,例如gcc、make、libtool、automake、autoconfig等是否有合适的版本。如果不合适的话就用你喜欢的方式去升级或者安装。

    下面最麻烦的一步来了。VLC在Linux上没有给出和Windows上类似的第三方库的预编译包,你必须去自己获得并编译这些库。这些库的数量取决于你的配置选项。VLC给出了一个自动化的解决方案,关注一下主目录extrascontrib,里边有一些工具来帮助你自动下载、patch和编译所有可能用到的第三方库。先运行一下那个目录下的bootstrap,如果缺少*.mak的话可以到VLC的代码库中找一下,是一个系统相关的文件,然后简单的一句make就可以了。如果你对这些库比较熟悉的话最好先手动筛选一下,有一些可能不是你所需要的,而下载他们可能需要很长的时间。
    在漫长的等待之后,如果一切顺利(我几乎不相信会这样),这一步就算完成了。可能遇到的问题有:下载实在太慢,可以用其他下载工具把库的代码包下下来放到extrascontribsrc里边;如果下载一半断掉,可以把那个不完整的文件删掉重新再运行make。
    这一步做完之后和windows上的编译就几乎一样了。写一个配置脚本然后运行它。例如一个配置脚本:
    ./configure
    –enable-release
    –disable-skins2
    –disable-wxwidgets
    –enable-mozilla
    –with-mozilla-sdk-path=./gecko-sdk
    –disable-sout
    –disable-httpd
    –enable-live555
    –disable-dvdnav
    –disable-libcdio
    –disable-libcddb
    –disable-cdda
    –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
    –enable-faad
    –enable-mostly-builtin

    参考:http://wiki.videolan.org/UnixCompile


    END!

  • 相关阅读:
    让windows cmd也用上linux命令
    数据库工具toad与plsql
    Oracle表&DATA复制
    主流WEB开发语言简单对比
    游戏中的碰撞检测
    LRU算法总结及其C算法实现
    MTU
    多款as3游戏框架
    请问2.3e+71,是不是表示23后面有70个0?
    希望OFFICE有一个小阳台,在阳光斜照的下午,开发人员能喝着茶,在蓝色的天空下讨论问题,这样思绪更为清楚
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532431.html
Copyright © 2011-2022 走看看