VLC 是一款自由剔桨、開源的跨平臺(tái)多媒體播放器及框架。
官網(wǎng)地址:http://www.videolan.org/
vlc是基于ffmpeg上實(shí)現(xiàn)的一款多媒體播放器删壮,功能強(qiáng)大骂因,開源且免費(fèi),然而編譯起來也是問題多多绍哎,這里我整體下vlc-android編譯過程中遇到的問題以及編譯過程
1.看官方文檔
AndroidCompile地址:??https://wiki.videolan.org/AndroidCompile
我這里使用的環(huán)境是MacOs10.13来农,AndroidStudio,
官網(wǎng)介紹是直接git clone?https://code.videolan.org/videolan/vlc-android.git,但是感覺打標(biāo)簽的版本會(huì)相對(duì)容易編譯通過,和穩(wěn)定崇堰,因此我下載的是3.2.8的發(fā)布版沃于,這里要注意的是涩咖,一定要注意官方文檔要求下的一些工具包
2. 配置環(huán)境編譯
在安裝好了第一步需要的工具包以及下載好了對(duì)應(yīng)的源碼后,開始配置SDK,NDK,打開命令行工具輸入
vim ~/.bash_profile
export ANDROID_SDK=android-sdk 路徑
export ANDROID_NDK=android-ndk 路徑
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
然后輸入:wq退出保存繁莹,再輸入source ~/.bash_profile生效
然后開始編譯檩互,這里是第一個(gè)坑,官網(wǎng)是編譯命令是 buildsystem/compile.sh -a <ABI>?
但是我下載的最新發(fā)布版本的包是沒有buildsystem包蒋困,但這是小問題盾似,找到compile.sh文件,
執(zhí)行sh compile.sh命令即可開始坑人的編譯之路
(小提示:編譯過程中需要下載很多第三方包雪标,因此需要穩(wěn)定的外網(wǎng)連接零院,否則會(huì)編譯失敗)
3.遇到的編譯問題
1.提示 NDK v18 needed, cf. https://developer.android.com/ndk/downloads/
看到這個(gè)便知道這是ndk版本不對(duì)村刨,但是我不想換版本告抄,于是找到compile-libvlc.sh文件中找到對(duì)應(yīng)的地方修改如下,將版本判斷改掉即可
2.編譯提示./compile-libvlc.sh: line 110: realpath: command not found
這是某個(gè)工具包的命令沒找到嵌牺,這里修改如下
#? VLC_BUILD_DIR=`realpath $VLC_SRC_DIR/build-android-${TARGET_TUPLE}`
? ? VLC_BUILD_DIR= $VLC_SRC_DIR/build-android-${TARGET_TUPLE}? ? //路徑一樣的
3.提示{standard input}:146: Error: unknown register alias 'GP'
這里大部分都碰到過打洼,因此網(wǎng)上查到對(duì)應(yīng)的修改是如下
/vlc/contrib/src/ffmpeg/rules.mak文件中
FFMPEGCONF = \
? --cc="$(CC)" \
? --pkg-config="$(PKG_CONFIG)" \
? --disable-doc \
? --disable-asm \? ? ? ? ? //添加此行代碼
? --disable-encoder=vorbis \
? --disable-decoder=opus \
? --enable-libgsm \
? --enable-libopenjpeg \
? --disable-debug \
4.提示:Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext
修改:先安裝:brew install gettext 后,
修改 ~/.bash_profile:
加入一行 export PATH=${PATH}:/usr/local/opt/gettext/bin
5.提示'TargetConditionals.h' file not found
這個(gè)問題最坑人了逆粹,查了好久募疮,然后網(wǎng)上似乎沒有其它碰到過,只能自己解決僻弹,這里最后是將這個(gè)庫(kù)給關(guān)閉編譯了
在CmakeCache.txt中
//Enable CoreText shaper backend on macOS
HB_HAVE_CORETEXT:BOOL=OFF
6.提示?sha1sum: command not found
解決:brew install md5sha1sum
這里還碰到過相似的編譯問題阿浓,要求安裝python3,根據(jù)提示缺少什么安裝什么就好
7.提示?Process 'command 'git'' finished with non-zero exit value 128
這里找到對(duì)應(yīng)的代碼
可以看到代碼是返回代碼庫(kù)的版本號(hào)蹋绽,這里我們自己返回一個(gè)構(gòu)件版本字符串即可
def vlcRevision(){
? ? ? return "3.2.8"
}
4.結(jié)語
世上無難事芭毙,只怕有心人,生活總會(huì)碰到各種問題卸耘,沉下心一一解決便好退敦。