vlc编译的爱恨情仇。
:是因为vlc支持大量的音视频传输、封装和编码格式。
:对于Android没有windows编译,只有Linux或者OSX 编译,很烦躁
:使用过程中是相当的方便
:自己编译不过去只能用别人编译好的。
结识vlc已有三年,期间一次次的编译,一次次的失败,算是对自己打击颇深,其中有一方面也是自己没有一台linux的电脑,机缘巧合在双11的时候入手阿里云服务器一台,彻底解决了我的苦恼,慢慢长征路开始啦。
开始编译前我们当然是看官方给出的编译文档
官方编译文档(官方文档)
紧接着我们照着他往下走就ok
1.编译环境
(1)编译系统:Ubuntu18.04 Ubuntu20.04(CPU:2核,4G内存,60G硬盘,阿里云香港节点)

(2)Android SDK:android-sdk_r24.4.1-linux 下载地址:http://tools.android-studio.org/index.php/sdk/

(3)Android NDK:android-ndk-r18b-linux-x86_64 android-ndk-r21b-linux-x86_64 下载地址:https://developer.android.google.cn/ndk/downloads/older_releases

(4)JDK:jdk-8u261-linux-x64 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2.编译过程
(1)下载必要的软件包,如果不成功先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 vim

(2)配置Android ndk,Android sdk,JDK

修改配置文件

vim /etc/profile

把下面配置信息放到profile文件里面,/var/www/bak/backup是我存放这几个平台的路径可以替换为自己的路径

export ANDROID_SDK=/var/www/bak/backup/android-sdk-linux
export ANDROID_NDK=/var/www/bak/backup/android-ndk-r21b
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
export JAVA_HOME=/var/www/bak/backup/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

最后执行

source /etc/profile

至此准备工作已完成,我们来条华丽的分割线
——————————————————————————————————————————————————————————————————————
根据官方文档我们需要
1、下载源代码

git clone https://code.videolan.org/videolan/vlc-android.git

一个漫长的等待
**2、编译(最简单的~~~~~~~)**
官方提供了两种
**第一种:**编译相对应的api的arr包,相应的体积会小一点

buildsystem/compile.sh -a <ABI>

**第二种 😗*可以编译支持所有的api的(将 替换未all),也可以是相对应的api

buildsystem/compile.sh -l -a <ABI> -r

这又是一个漫长的等待
*
当出现


BUILD SUCCESSFUL in 1m 27s
29 actionable tasks: 29 executed

证明我们编译成功
执行这行代码

 cd libvlc/build/outputs/aar

我们就能看到自己编译出来的aar了
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

期间可能或出现的错误

出现这个错误

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address 

只需执行这两行代码

git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

————————————————————————————————————
出现这个错误

NOTE: checks can be bypass by adding '-b' option to this script.
Checking presence of patch ../libvlc/patches/vlc3/0001-compat-Workaround-sendmsg-bug-on-android.patch
Cannot find patch ../libvlc/patches/vlc3/0001-compat-Workaround-sendmsg-bug-on-android.patch in tree, aborting.
There can be two reasons for that:
- you forgot to apply the patch on this tree, or
- you applied the patch without the 'git am --message-id ...' option.

只需在编译代码的后边添加“-b”即可
buildsystem/compile.sh -a <ABI> -b 或者buildsystem/compile.sh -l -a <ABI> -r -b


出现这个错误

../../contrib/src/aom/rules.mak:12: recipe for target '../../contrib/tarballs/aom-v1.0.0.errata.1.tar.gz' failed
make: *** [../../contrib/tarballs/aom-v1.0.0.errata.1.tar.gz] Error 4

只需要在本地下载相应的AOM文件放到“vlc-android/vlc/contrib/tarballs”目录下即可
———————————————————————————————————
出现这个错误

/src/metadata_services/vlc/VLCMetadataService.h:55:42: error: unknown type name 'libvlc_picture_t'

这个错误是我在使用编译某一个api的时候存在,在编译所有的api时不存在,所以我使用了编译所有api,放弃了单个api
最后将成果物上传下载地址

最后附参考链接
🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞🤞

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐