編譯PC版vlc

         編譯環境: Ubuntu 16.04    64位

      VLC的源碼包在VLC的官網有,可以直接下載。也可以使用git來clone一個。

git的地址git clone git://git.videolan.org/vlc.git

源碼包地址 http://get.videolan.org/vlc/2.2.0/vlc-2.2.0.tar.xz

我的下載地址:http://pan.baidu.com/s/1dFeAJCX


下載和解壓
xz壓縮的檔案包使用J參數來解壓

wget http://get.videolan.org/vlc/2.2.0/vlc-2.2.0.tar.xz
o@o-pc:~/work/vlc$ tar -xJvf vlc-2.2.0.tar.xz 
...
o@o-pc:~/work/vlc$ ls vlc-2.2.0
ABOUT-NLS   autotools  ChangeLog    configure     COPYING      extras   lib         Makefile.am  NEWS    share  THANKS
aclocal.m4  bin        compat       configure.ac  COPYING.LIB  include  m4          Makefile.in  po      src
AUTHORS     bootstrap  config.h.in  contrib       doc          INSTALL  make-alias  modules      README  test

2.配置編譯環境

下面說的東西很多,嫌麻煩的可以先安裝依賴包,能夠少很多問題。

$ sudo apt-get build-dep vlc

2.1使用configure腳本來配置

o@o-pc:~/work/vlc$ ./configure --prefix=/usr/local/vlc
...
checking for LUA... no
configure: WARNING: , trying lua 5.1 instead
checking for LUA... no
configure: WARNING: , trying lua >= 5.1 instead
checking for LUA... no
configure: WARNING: , trying manual detection instead
checking lua.h usability... no
checking lua.h presence... no
checking for lua.h... no
checking lauxlib.h usability... no
checking lauxlib.h presence... no
checking for lauxlib.h... no
checking lualib.h usability... no
checking lualib.h presence... no
checking for lualib.h... no
checking for luaL_newstate in -llua5.2 ... no
checking for luaL_newstate in -llua5.1 ... no
checking for luaL_newstate in -llua51 ... no
checking for luaL_newstate in -llua ... no

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.

看到上面的錯誤提示了吧,lua沒有發現。Lua是需要一些接口(RC,TELNET,HTTP)以及許多其他的自定義腳本.可以使用--disable-lua來忽略這個錯誤。
我的電腦上確實沒有安裝lua,我也不打算忽略這個錯誤。

o@o-pc:~/work/vlc/vlc-2.2.0$ lua
程序 'lua' 已包含在下列軟件包中:
 * lua5.2
 * lua5.1
 * lua50
請嘗試:sudo apt-get install <選定的軟件包>

2.2安裝lua開發環境,再重新./configure

先安裝一個lua5.2

o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install lua5.2

僅僅安裝這個lua是不行的,這個lua5.2只是一個腳本解釋器而已。
去lua官網下載一個lua的源碼包。http://www.lua.org/ftp/lua-5.2.4.tar.gz
下載之後再編譯lua。編譯的時候需要指定平臺

o@o-pc:~/work/lua/lua-5.2.4$ make
Please do 'make PLATFORM' where PLATFORM is one of these:
   aix ansi bsd freebsd generic linux macosx mingw posix solaris
See doc/readme.html for complete instructions.
o@o-pc:~/work/lua/lua-5.2.4$ make linux 
cd src && make linux
...
lua.c:67:31: fatal error: readline/readline.h: 沒有那個文件或目錄
 #include <readline/readline.h>
                               ^
...

編譯的時候提示錯誤,找不到頭文件readline/readline.h,那麼去下載一個。

wget ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz

解壓後在make編譯安裝readline
./configure指定了其安裝的目錄,其實不指定目錄更好。

o@o-pc:~/work/lua$ tar -xzvf readline-6.3.tar.gz
...
o@o-pc:~/work/lua/readline-6.3$ ./configure --prefix=/usr/local/readline
...
o@o-pc:~/work/lua/readline-6.3$ make
...
o@o-pc:~/work/lua/readline-6.3$ sudo make install

編譯安裝readline庫。修改lua的src/Makefile

如果前面配置編譯readline的時候不指定目錄,就不需要修改了。所以前面說不指定目錄更好。
注意:這裏修改的Makefile文件的位置,是src目錄下的Makefile。

o@o-pc:~/work/lua/lua-5.2.4$ vi src/Makefile 

修改MYCFLAGSMYLDFLAGS兩個變量的值(應該是22,23行)。
MYCFLAGS= -I/usr/loacl/readline/include MYLDFLAGS= -L/usr/local/readline/lib
**再次make linux
可以看到找不到頭文件的錯誤已經沒有了,但是有了新的錯誤。
這個錯誤是因爲不能鏈接上動態庫的原因。

cd src && make linux
make[1]: 正在進入目錄 `/home/o/work/lua/lua-5.2.4/src'
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
make[2]: 正在進入目錄 `/home/o/work/lua/lua-5.2.4/src'
gcc -O2 -Wall -DLUA_COMPAT_ALL -DLUA_USE_LINUX -I/usr/local/readline/include   -c -o lua.o lua.c
gcc -o lua  -L/usr/local/readline/lib lua.o liblua.a -lm -Wl,-E -ldl -lreadline 
/usr/local/readline/lib/libreadline.so:對‘tputs’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘tgoto’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘tgetflag’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘UP’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘tgetent’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘tgetnum’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘PC’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘tgetstr’未定義的引用
/usr/local/readline/lib/libreadline.so:對‘BC’未定義的引用
collect2: error: ld returned 1 exit status
make[2]: *** [lua] 錯誤 1
make[2]:正在離開目錄 `/home/o/work/lua/lua-5.2.4/src'
make[1]: *** [linux] 錯誤 2
make[1]:正在離開目錄 `/home/o/work/lua/lua-5.2.4/src'
make: *** [linux] 錯誤 2

編譯安裝ncurses庫,然後修改src/Makefile

現在解決這個錯誤。先得知道這個錯誤的原因。原因是因爲readline這個庫,還依賴於ncurses這個庫。於是我們還需要去下載這個`ncurses`庫。

o@o-pc:~/work/lua$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
...
o@o-pc:~/work/lua$ tar -xzvf ncurses-5.9.tar.gz 
...
o@o-pc:~/work/lua/ncurses-5.9$ ./configure 
...
** Configuration summary for NCURSES 5.9 20110404:

     extended funcs: yes
     xterm terminfo: xterm-new

      bin directory: /usr/bin
      lib directory: /usr/lib
  include directory: /usr/include
      man directory: /usr/man
 terminfo directory: /usr/share/terminfo

這次我們.configure的時候沒有指定安裝路徑,使用默認的配置。

o@o-pc:~/work/lua/ncurses-5.9$ make
...
o@o-pc:~/work/lua/ncurses-5.9$ sudo make install

我們還得修改src/Makefile文件
linux編譯target=linux,在SYSLIBS變量中追加-lncurses選項即可。如下(應該是105,106行):
linux: $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
上述操作完成後,再次make linux就沒問題了。

重新編譯安裝lua

o@o-pc:~/work/lua/lua-5.2.4$ make linux
...
o@o-pc:~/work/lua/lua-5.2.4$ sudo make install 
cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.2 /usr/local/lib/lua/5.2
cd src && install -p -m 0755 lua luac /usr/local/bin
cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h lua.hpp /usr/local/include
cd src && install -p -m 0644 liblua.a /usr/local/lib
cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1

2.3 安裝libmad庫,重新./configure

再次./configure後又報錯了,這次的錯誤原因是沒有發現libmad庫。它還提供了一個地址給我們,那麼就去這個地址看看。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc
configure: error: Could not find libmad on your system: you may get it from http://www.underbit.com/products/mad/. Alternatively you can use --disable-mad to disable the mad plugin.

在  http://www.underbit.com/products/mad/  這個頁面,可以找到一個ftp的下載站點  ftp://ftp.mars.org/pub/mpeg/ 那就從這裏開始吧。
下載/配置/編譯/安裝

o@o-pc:~/work/vlc$ wget ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz
o@o-pc:~/work/vlc$ tar -xzvf libmad-0.15.1b.tar.gz 
o@o-pc:~/work/vlc/libmad-0.15.1b$ ./configure 
o@o-pc:~/work/vlc/libmad-0.15.1b$ make
...
 gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_DEFAULT -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -MT version.lo -MD -MP -MF .deps/version.Tpo -c version.c  -fPIC -DPIC -o .libs/version.o
gcc: error: unrecognized command line option '-fforce-mem'
make[2]: *** [version.lo] 錯誤 1
...

在make的時候報錯了。錯誤的原因是gcc沒有選項-fforce-mem。原因是因爲當前的gcc版本太高了,就不提供這個選項了。我們修改Makefile來適應當前的gcc編譯器。
打開Makefile文件
找到關鍵的一行(應該是129)CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 將-fforce-mem刪除即可。
重新make編譯安裝

o@o-pc:~/work/vlc/libmad-0.15.1b$ sudo make install
[sudo] password for o: 
make  install-recursive
...
chmod 644 /usr/local/lib/libmad.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
...
Libraries have been installed in:
   /usr/local/lib
...
mkdir -p -- . /usr/local/include
 /usr/bin/install -c -m 644 mad.h /usr/local/include/mad.h
 ...

2.4 忽略avcodec/swscale/liba52

經過上面的步驟,我們再./configure的時候,又會報錯

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc
...
checking for AVCODEC... no
configure: error: . Pass --disable-avcodec to ignore this error.

這次是沒有檢查到AVCODEC,我們這次就不再去下載編譯它了。如果需要,就下載ffmpeg編譯安裝就是。
如果指示忽略掉avcodec之後還會報錯,還需要忽略兩個。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc --disable-avcodec --disable-swscale --disable-a52
...
configure: error: in `/home/o/work/vlc/vlc-2.2.0':
configure: error: The pkg-config script could not be found or is too old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
...

2.5 解決pkg-config問題

又報錯了,這個從的錯誤是這個pkg-config無法找到或者太舊。確保它
在PATH或者設置PKG_CONFIG環境變量完整。

安裝pkg-config和autoconf

要解決它,先安裝一下pkg-config和autoconf。然後運行一下bootstrap腳本。

o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install pkg-config
o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install autoconf
o@o-pc:~/work/vlc/vlc-2.2.0$ ./bootstrap
...
autoreconf: running: libtoolize --copy --force
Can't exec "libtoolize": 沒有那個文件或目錄 at /usr/share/autoconf/Autom4te/FileUtils.pm line 345, <GEN3> line 6.
autoreconf: failed to run libtoolize: 沒有那個文件或目錄
autoreconf: libtoolize is needed because this package uses Libtool

還有錯誤,要安裝libtool

o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install libtool

安裝之後再次./bootstrap,可以看到成功了。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./bootstrap 
...
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
...
Successfully bootstrapped

2.6 解決 XCB 包問題

然後在./configure可以看到,還有錯誤。這次的錯誤是xcb包的問題。
看錯誤輸出
包裝要求(XCB>=1.6)沒有得到滿足:沒有發現包'XCB'
試想,如果你調整PKG_CONFIG_PATH環境變量,安裝的軟件在一個非標準的前綴。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc --disable-avcodec --disable-swscale --disable-a52
...
configure: error: Package requirements (xcb >= 1.6) were not met:
No package 'xcb' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables XCB_CFLAGS
and XCB_LIBS to avoid the need to call pkg-config.

它也給了我們解決的辦法

Alternatively, you may set the environment variables XCB_CFLAGS
and XCB_LIBS to avoid the need to call pkg-config.
或者,您可以設置環境變量XCB_CFLAGS和XCB_LIBS以避免需要調用pkg配置。

安裝libxcb庫

那麼我們還是需要下載安裝libxcb

wget http://xcb.freedesktop.org/dist/libxcb-1.7.tar.gz
wget http://xcb.freedesktop.org/dist/xcb-proto-1.7.tar.gz

先編譯安裝xcb-proto,再去配置linxcb編譯環境的時候,這時候還會報錯

o@o-pc:~/work/vlc/xcb/libxcb-1.7$ ./configure 
configure: error: Package requirements (pthread-stubs xau >= 0.99.2) were not met:

No package 'pthread-stubs' found
No package 'xau' found

我們再安裝libxau-devlibpthread-stubs0-dev

o@o-pc:~/work/vlc/xcb/libxcb-1.7$ sudo apt-get install libpthread-stubs0-dev o@o-pc:~/work/vlc/xcb/libxcb-1.7$ sudo apt-get install libxau-dev

然後添加環境變量
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
再次./configure就成功了

o@o-pc:~/work/vlc/xcb/libxcb-1.7$ ./configure 
  Package: libxcb 1.7
...
  Used CFLAGS:
    CPPFLAGS............: 
    CFLAGS..............: -g -O2
    Warning CFLAGS......: -Wall -pedantic -Wpointer-arith       -Wstrict-prototypes -Wmissing-declarations -Wnested-externs
...
  Installation:
    Prefix..............: /usr/local
o@o-pc:~/work/vlc/xcb/libxcb-1.7$ make
o@o-pc:~/work/vlc/xcb/libxcb-1.7$ sudo make install

2.7 alsa問題

回到 vlc-2.2.0 目錄,再次./configure ...,又報錯了

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc --disable-avcodec --disable-swscale --disable-a52
...
checking for ALSA... no
configure: error: No package 'alsa' found. alsa-lib 1.0.24 or later required.

這次是找不到alsa包,那麼還是去安裝一個吧。

o@o-pc:~/work/vlc/xcb/libxcb-1.7$ sudo apt-get install libalsa-ocaml-dev 
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關係樹       
正在讀取狀態信息... 完成       
將會安裝下列額外的軟件包:
  camlp4 ledit libasound2-dev libfindlib-ocaml libfindlib-ocaml-dev
  libncurses5-dev libtinfo-dev ocaml-compiler-libs ocaml-findlib ocaml-interp
  ocaml-nox
...

我們看到它提示會額外安裝libasound2-dev,其實我們這裏需要的就是這個。

2.8 lingcrypt 問題

之前安裝了libalsa-ocaml-dev之後,再次configure還有錯誤,沒關係,繼續解決。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc --disable-avcodec --disable-swscale --disable-a52
...
checking whether GCRYCTL_SET_THREAD_CBS is declared... no
configure: error: libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.

這裏提示我們沒有發現libgcrypt 1.1.94或者更高的版本,那麼就安裝一個。

o@o-pc:~/work/vlc/xcb/libxcb-1.7$ sudo apt-get install libgcrypt20-dev 
...      
將會安裝下列額外的軟件包:
  libgcrypt20 libgpg-error-dev
  ...

2.9 成功的 configure

o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc --disable-avcodec --disable-swscale --disable-a52
...
libvlc configuration
--------------------
version               : 2.2.0
system                : linux
architecture          : x86_64 mmx sse sse2
optimizations         : yes
vlc aliases           : cvlc rvlc

To build vlc and its plugins, type `make', or `./compile' if you like nice colors.

3. make編譯安裝

make的過程會又大量的 warning ,這是正常的,不用管它。但是有錯誤必須解決

o@o-pc:~/work/vlc/vlc-2.2.0$ make
...
/usr/bin/ld: //usr/local/lib/liblua.a(lapi.o): relocation R_X86_64_32 against `luaO_nilobject_' can not be used when making a shared object; recompile with -fPIC
//usr/local/lib/liblua.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[4]: *** [liblua_plugin.la] 錯誤 1
...

3.1解決lua共享庫文件重定位問題

這裏出現的錯誤提示:創建共享目標時,對'luaO_nilobject_文件的重定位R_X86_64_32不能使用;重新編譯,使用-fPIC選項。

-fPIC 作用於編譯階段,告訴編譯器產生與位置無關代碼(Position-Independent Code),則產生的代碼中,沒有絕對地址,全部使用相對地址,故而代碼可以被加載器加載到內存的任意位置,都可以正確的執行。這正是共享庫所要求的,共享庫被加載時,在內存的位置不是固定的。

那麼我們還是需要去修改Makefile文件了,不過不是vlc的Makefile文件,而是lua的。
進入lua-5.2.4目錄,然後修改src目錄下的Makefile。

o@o-pc:~/work/lua/lua-5.2.4$ vi src/Makefile 

修改MYCFLAGS變量的值(應該是22行),爲其加上-fPIC選項。
MYCFLAGS= -I/usr/loacl/readline/include -fPIC
修改完成之後重新make編譯安裝

回到vlc-2.2.0目錄,重新make,這次就成功了。

o@o-pc:~/work/vlc/vlc-2.2.0$ make
  GEN      ../modules/plugins.dat
...
  GEN      cvlc
  GEN      rvlc
  GEN      vlc
  ...

3.2運行一下編譯後的程序

處理 core *** error錯誤

出現了三個錯誤,是因爲之前./configure配置的時候,我們忽略了一些警告。可以安裝libxml2-devlibvlc-dev等庫,然後重新./configuremake

o@o-pc:~/work/vlc/vlc-2.2.0$ ./vlc 
VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[0000000002132a28] core xml reader error: XML reader not found
[0000000002158b58] core interface error: no suitable interface module
[000000000209a3f8] core libvlc error: interface "globalhotkeys,none" initialization failed
[000000000209a3f8] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[0000000002158b58] [cli] lua interface: Listening on host "*console".
VLC media player 2.2.0 Weatherwax
Command Line Interface initialized. Type `help' for help.

安裝libxml2-dev之後重新./configuremake後去運行,少了一個錯誤了。剩下的兩個錯誤也可以通過這個辦法解決。(安裝libmodplug-dev,libdvbpsi-dev庫會更好,core libvlc error錯誤可以安裝libvlc-dev庫,這個庫我們已經編譯了)

o@o-pc:~/work/vlc/vlc-2.2.0$ ./vlc 
VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[000000000262e748] core interface error: no suitable interface module
[000000000256c3f8] core libvlc error: interface "globalhotkeys,none" initialization failed
[000000000256c3f8] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[000000000262aed8] [cli] lua interface: Listening on host "*console".
VLC media player 2.2.0 Weatherwax
Command Line Interface initialized. Type `help' for help.
> quit
Shutting down.
[000000000262aed8] [cli] lua interface: Requested shutdown.

處理解碼支持問題

已經提示我們輸入命令行參數去初始化接口了
可以嘗試一下添加一個視頻文件到播放列表,可以看到這次是解碼出錯了,因爲h264編碼不支持。繼續解決。

o@o-pc:~/work/vlc/vlc-2.2.0$ ./vlc 
VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[0000000001dcf938] core interface error: no suitable interface module
[0000000001d093f8] core libvlc error: interface "globalhotkeys,none" initialization failed
[0000000001d093f8] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[0000000001e35898] [cli] lua interface: Listening on host "*console".
VLC media player 2.2.0 Weatherwax
Command Line Interface initialized. Type `help' for help.
> add ../../../視頻/NextLight.flv
> [00007f1fe4c7df38] core decoder error: Codec `h264' (H264 - MPEG-4 AVC (part 10)) is not supported.
[00007f1fe4c7df38] core decoder error: Codec not supported
[00007f1fe4c7df38] core decoder error: VLC could not decode the format "h264" (H264 - MPEG-4 AVC (part 10))
[00007f1fe4c7df38] core decoder error: Codec `mp4a' (MPEG AAC Audio) is not supported.
[00007f1fe4c7df38] core decoder error: Codec not supported
[00007f1fe4c7df38] core decoder error: VLC could not decode the format "mp4a" (MPEG AAC Audio)

安裝libavcodec-devlibavformat-dev庫,然後重新./configure,這次沒有添加--disable-avcodec等選項。順便把libswscale-devliba52這兩個庫。

o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install libavcodec-dev 
o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install libavformat-dev 
o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install libswscale-dev
o@o-pc:~/work/vlc/vlc-2.2.0$ sudo apt-get install liba52-0.7.4-dev 
o@o-pc:~/work/vlc/vlc-2.2.0$ ./configure --prefix=/usr/local/vlc 

重新編譯

o@o-pc:~/work/vlc/vlc-2.2.0$ make
...
  CC       libpacketizer_avparser_plugin_la-avparser.lo
avparser.c: In function ‘OpenPacketizer’:
avparser.c:108:9: error: implicit declaration of function ‘avcodec_free_context’ [-Werror=implicit-function-declaration]
         avcodec_free_context( &p_codec_ctx );
         ^
cc1: some warnings being treated as errors
make[5]: *** [libpacketizer_avparser_plugin_la-avparser.lo] 錯誤 1

處理 vcodec_free_context 函數隱式聲明問題

make的時候有一處錯誤:avparser.c:108:9: error:implicit declaration offunction ‘avcodec_free_context’[-Werror=implicit-function-declaration]
解決方法是:打開/vlc-2.2.0/modules/packetizer/Makefile文件,把裏面的-Werror-implicit-function-declaration刪除掉可。
然後重現編譯就通過了。

o@o-pc:~/work/vlc/vlc-2.2.0$ make
...
  GEN      cvlc
  GEN      rvlc
  GEN      vlc
  ...

可以來播放視頻了
不斷的報音頻輸出錯誤alsa audio output error:cannot estimate delay:是因爲...

o@o-pc:~/work/vlc/vlc-2.2.0$ ./vlc 
VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[0000000002409388] core interface error: no suitable interface module
[0000000002313398] core libvlc error: interface "globalhotkeys,none" initialization failed
[0000000002313398] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00000000023daf48] [cli] lua interface: Listening on host "*console".
VLC media player 2.2.0 Weatherwax
Command Line Interface initialized. Type `help' for help.
> add ../../MediaFiles/NextLight.flv
> [00007fdf18001478] xcb_window window error: X11 key press support not compiled-in
[00000000023c5b78] alsa audio output error: cannot estimate delay: 輸入/輸出錯誤
[00000000023c5b78] alsa audio output error: cannot estimate delay: 輸入/輸出錯誤
[00000000023c5b78] alsa audio output error: cannot estimate delay: 輸入/輸出錯誤
原創:http://www.cnblogs.com/oloroso/p/4595136.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章