最近工作需要,需要封装一款自己播放器,经过功能(4K/8K, HDR,硬解),平台可移植性等考虑,最终选择libvlc作为我们播放器开发框架,各播放器框架比较:https://www.jianshu.com/p/e66b96436bfe
经过几天折腾才把vlc-android编译过,记录下编译过程。
一、VLC官网地址
libvlc,sample,以及编译说明网址,我们大部分工作都是基于这三个官方网站展开。
1,https://www.videolan.org/vlc/libvlc.html
2,https://code.videolan.org/videolan/libvlc-android-samples
3,https://wiki.videolan.org/AndroidCompile/
二、先把sample跑起来。
libvlc-android-samples是基于gitlab管理,直接去网站下载sample, 并使用android studio编译即可。
这里需要注意,native_sample需要依赖自己编译的aar包,可以先把注释掉(setting.gradle),只编译java_sample。
//include ':native_sample', ':java_sample', ':libvlc'
include ':java_sample'
sample跑起来,也就播放一个视频,可以自己修改测试下其他播放功能。
三、编译libvlc库
第一天在我的android编译环境ubuntu14.04上面折腾了很久,发现各种编译错误,经过google各种错误,得出的结论是我的编译环境太老了,vlc更新太快,它编译依赖的很多工具都是需要最近版本,如果我在ubuntu14.04上面折腾,肯定会破坏我的android编译环境,最终考虑下,还是在虚拟机里面安装ubuntu18.04来编译。
搭建ubuntu18.04虚拟机
这个不多说了,直接下载虚拟机安装,http://releases.ubuntu.com/18.04/, 选择64bit 桌面版。
安装依赖工具
sudo apt-get update
sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \
patch pkg-config protobuf-compiler ragel subversion unzip git \
openjdk-8-jre openjdk-8-jdk flex python wget
这里需要说明下ubuntu18.04默认的java版本是java11,我们手动安装完openjdk-8之后,还需要手动调为jdk8(sudo update-alternatives --config java), 否则编译的过程中,会报javac版本不对,留意下报错就可以。
下载android sdk
参考博客: https://blog.csdn.net/qq_38182842/article/details/110170630
上面博客已经说明很清楚,怎么使用sdkmager命令行工具下载android sdk,我就不重复造轮子。
这里强调下下载android sdk遇到的最大问题是网络不可达, 防火墙问题,这里有几个解决思路,仅供参考:
方案1: (优选方案)
配置/etc/hosts文件,下面是我这边配置的,不要参考我下面的ip地址映射,你要根据自己ping域名或者的ip地址,或者 网站查询ip地址,我遇到过有时候怎么ping dl.google.com都ping不通,网站查询的地址也ping不通,晚上公司人少的时候,ping通很快,下载sdk也很快(* ̄︶ ̄)。
xxx@ubuntu18:~/samba/android-studio$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu18.04 ubuntu18
# add for vlc-android download
203.208.50.65 dl.google.com
140.82.114.4 github.com
213.36.253.2 download.videolan.org
213.36.253.9 code.videolan.org
方案2) 下载android studio工具
因为现在没有android sdk独立下载的地方,只能通过sdkmanager或者android studio工具,我们平时window下面使用android studio都是可以直接下载的,ubuntu18.04也可以下载android studio工具直接下载sdk。这里也会遇到dl.google.com连接失败问题,解决方法参考方案1.
方案3) 使用国内代理(找了好几个,自己测试过,都不好使,如果有好使代理,可以留言推荐)
因为没有成功过,这个方案暂时保留。
https://www.cnblogs.com/my-blogs-for-everone/p/6268886.html
方案4) 翻墙吧,服务环境不好翻墙,自己搭建ubunt18.04也是为最后可以翻墙预留。
ubuntu18.04下面搭建翻墙软件吧,网上也很多方案,这个是我最后的招, 因为晚上突然ping dl.google.com没有问题,所以这招没有使用上。
下载android ndk
ndk没啥好说的,直接去官网下载。
https://developer.android.com/ndk/downloads/index.html
配置android sdk, ndk环境
这个没啥好说的,配置.bashrc文件即可,参考编译vlc-android
开始编译
我这里是arm64平台,也就是Arm Cotex A8,
buildsystem/compile.sh -a arm64
ubuntu18.04上面把资源下载依赖问题,基本上编译没有问题,如果网络不好,资源下载失败,可以多编译几次,应该就可以编译完成。
编译过程多看下compile.sh脚本,对理解编译过程和解决编译过程中的问题很有帮助。
参考博客
网上上也有很多人总结vlc-androd编译遇到的问题,
1, https://www.codeleading.com/article/12094354372/
2,https://blog.csdn.net/hulaonline/article/details/107418934
3,https://www.jianshu.com/p/319e7a8faa6a
网友评论