编译环境:Linux 5.0.0-27-generic #28~18.04.1-Ubuntu SMP Thu Aug 22 03:00:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
代码来源:https://github.com/videolan/vlc
主要过程:参考官网WIKI:https://wiki.videolan.org/UnixCompile/
首先:
$ cd contrib
$ mkdir native
$ cd native
$ ../bootstrap
$ make
然后:
$ cd vlc
$ ./bootstrap
$ ./configure
$ make
编译过程遇到的主要问题及解决方法:
1. rules.mak:43: *** protoc system version 3.0.0 and required version 3.1.0 do not match. Stop.
修改 ../src/protobuf/rules.mak 第二行为:PROTOBUF_VERSION := 3.0.0
手动下载protobuf-3.0.0-cpp.tar.gz ,并执行:sha512sum protobuf-3.0.0-cpp.tar.gz,计算出md5, 替换 ../src/protobuf/SHA512SUMS中的内容(3.1.0改位3.0.0)
重新make即可编译protobuf模块。
1. goomsl_yacc.y:1186:14: error: ‘FLOAT_TK’ undeclared (first use in this function)
rm -r native/goom; 然后重新make
2. vlc目录下,./bootstrap之后,./configure --prefix= 出错:configure: error: No package 'xcb-xkb' found. Pass --disable-xcb to skip X11 support.
sudo apt install libxcb-xkb-dev
https://my.oschina.net/u/4026445/blog/3066999/print
3. ./configure出错:configure: error: Requested 'Qt5Core >= 5.11.0' but version of Qt5 Core is 5.9.5
No package 'Qt5Quick' found
No package 'Qt5QuickWidgets' found
No package 'Qt5QuickControls2' found. If you want to build VLC without GUI, pass --disable-qt.
设置单独安装的Qt5.13.0路径,解决此问题:./configure --enable-debug --prefix=/home/user/0_workspace/video_proj_2/vlc/release/ PKG_CONFIG_PATH=/home/user/Qt5.13.0/5.13.0/gcc_64/lib/pkgconfig
https://forum.videolan.org/viewtopic.php?t=149022
4. vlc目录下make时,报错:
stream_out/chromecast/cast_channel.pb.cc:1016:27: error: ‘NewPermanentCallback’ is not a member of ‘google::protobuf’
::google::protobuf::NewPermanentCallback(
^~~~~~~~~~~~~~~~~~~~
stream_out/chromecast/cast_channel.pb.cc:1016:27: note: suggested alternative: ‘ResultCallback’
::google::protobuf::NewPermanentCallback(
措施:::google::protobuf::NewPermanentCallback 改为: ::google::protobuf::internal::NewPermanentCallback
参考 ~/0_workspace/video_proj_2/vlc/contrib/native/protobuf/src/google/protobuf/util/message_differencer.cc 文件中 NewPermanentCallback 方法的引用方法!
编译完成后:
执行:
user@xxx:~/0_workspace/video_proj_2/vlc$ ./vlc ~/Desktop/1.mp4
VLC media player 4.0.0-dev Otto Chriek (revision 4.0.0-dev-9289-gb8e08bd832)
[00005631ab142eb0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Failed to open VDPAU backend libvdpau_i965.so: cannot open shared object file: No such file or directory
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
[00007efd880a1d30] vaapi generic: Using Intel i965 driver for Intel(R) Haswell Mobile - 2.1.0