Mac OS 下编译Vlc for android

VLC for Android简介

关于VLC for Android,做过音视频相关的开发者应该都听说过他的大名,官方(VideoLAN)是这么介绍的:

VLC for Android
VLC media player is a free and open source cross-platform multimedia player that plays most multimedia files as well as discs, devices, and network streaming protocols.
VLC for Android can play any video and audio files, as well as network streams and DVD ISOs, like the desktop version of VLC.
VLC for Android is a full audio player, with a complete database, an equalizer and filters, playing all weird audio formats.

翻译成中文呢。。。咳咳,不好意思,英文水平有限就不翻译了,大概就是说:
VLC for Android可以播放任何视频和音频文件,并且是一个完整的音频播放器,可以播放所有的音频格式。

听起来是不是很吊炸天啊,嗯嗯,而事实也确实是这样的。那么我们就来编译一下VLC for Android的源码。

为啥要写这篇文章

其实已经有很多人编译过VLC for Android的源码,大家去网络上搜索一下,也可以搜索到很多相关的文章。当然,我也一样去搜索。但是,But,当我按照他们的编译步骤去做的时候,呵呵。。不说了。可能是我的电脑有点特殊,就是死活编译不过去。无奈,不看你们的了,我自己玩吧。所以就记录一下这个历程吧。

正题

1、准备工作

1.1、获取源码

既然我们要编译源码,那么首先我们要先获取源码:

git clone https://code.videolan.org/videolan/vlc-android.git
1.2、编译环境配置

获取到源码之后呢,就要配置编译环境。这里先给出官方的编译指南
Android的SDK、NDK 环境这个自不必说,做Android开发的应该都已经配置好了,这个地方提一点,就是这个环境变量的名字,最好是和官方的保持一致:ANDROID_SDKANDROID_NDK。至于路径,你开心就好。
除了SDK、NDK 官方还给出了以下一堆的编译工具:

sudo apt-get install automake ant autopoint cmake build-essential libtool \
     patch pkg-config protobuf-compiler ragel subversion unzip git \
    openjdk-8-jre openjdk-8-jdk

其中sudo apt-get installLinux下的软件安装命令,可以不看。其实啊,就我个人来看,这些软件并没有全部用上。我在编译的过程中,是遇到哪一个提示“找不到指令”是才去安装的,并没有一下子全部安装。而且,就算你一下子去安装所有,我可以保证的是,有几个是找不到安装资源的。别问我为什么知道。我这里给出我安装的几个:

automake 、ant  、cmake、libtool

有人会问,gitsubversion为什么不安装,其实我在想,你为什么会问这个问题。难道你这些常用的代码同步软件你不用的吗?
哦,忘记一个关键问题,就是在Mac下命令行安装软件用的是 Homebrew

2、正式编译

2.1、sh compile.sh

使用上面的 git clone 命令,如果不做更正,会在终端当前的文件夹(终端查看当前文件夹,直接输入:pwd)下生成一个vlc-android的文件夹,进入这个文件夹,会看到两个.sh文件:

sh.png

其中compile-libvlc.sh只编译vlc 库文件,不编译Vlc for android,如果想编译Vlc for android就要用compile.sh
编译平台可以参考官方的编译指南

sh compile.sh -a <ABI>
//也可以不指定,直接使用:sh compile.sh
//注意:指定的是说明使用默认的编译平台:ARMv7

我编译的时候,未指定编译平台,直接使用默认的。

2.2、资源下载

执行上面的命令之后,会检测你的环境和资源是否完整,如果不完整会下载相关的资源,至于会下载多久,视你的网络状况而定。

2.3、编译

这一步是最关键的一步,如果你运气好的话,看到如下字样的时候,

good luck.png

下面的就不用看了,如果运气不好,希望接下来的文字对你有所帮助。如果没有帮助,也没有办法,毕竟每个人的电脑环境都不一样,遇到的问题也不一样,谁知道你电脑里面有什么不干净的东西,反正我的电脑在一个月前重装了系统。

3、编译过程中的问题

其实,上面说了那么多,只有到这里,才是最关键的,因为上面说的,和别人说的都一样,不一样的就是大家遇到的问题不一样。不然,我这一篇文章也就没有必要去写了。

好多人都曾经尝试过编译VLC,但是当遇到了问题,或百度、或谷歌、或者其他的搜索,结果却没有得到一个有实用价值的答案,最后不了了之。这就扼杀了许多有志码农学习VLC的愿望。还记得1年前我也是其中一员,如今,又走上了这条不归路。。

3.1、相关资源下载问题。

其实这不是个问题,翻下墙就好了。不过,这次编译,好像并没有翻墙。。。

  • early EOF
    关于这个问题,多试几次就好了
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

没必要去百度git early EOF的解决方案。

  • contribs: make fetch failed
    同上,多试几次。
3.2、编译问题
  • 编译FFmpeg 是出现:{standard input}:146: Error: unknown register alias 'GP'
    解决方案:
    在vlc-android/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 \
    --disable-avdevice \
    --disable-devices \
    --disable-avfilter \
    --disable-filters \
    --disable-protocol=concat \
    --disable-bsfs \
    --disable-bzlib \
    --disable-avresample
  • medialibrary 编译错误
  CXX      src/libmedialibrary_la-Album.lo
  CXX      src/libmedialibrary_la-AlbumTrack.lo
  CXX      src/libmedialibrary_la-Artist.lo
  CXX      src/libmedialibrary_la-AudioTrack.lo
clang38++: error: no such file or directory: '@includedirs@'
clang38++: error: no such file or directory: '@includedirs@'
clang38++: error: no such file or directory: '@includedirs@'
clang38++: error: no such file or directory: '@includedirs@'
make[1]: *** [src/libmedialibrary_la-AlbumTrack.lo] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [src/libmedialibrary_la-Album.lo] Error 1
make[1]: *** [src/libmedialibrary_la-AudioTrack.lo] Error 1
make[1]: *** [src/libmedialibrary_la-Artist.lo] Error 1

解决方案:
打开/vlc-android/medialibrary/medialibrary/build-android-armeabi-v7a/的Makefile 文件,修改第624行:

//修改之前
VLC_CFLAGS = @includedirs@ 
//修改之后

vlc_path = /vlc-android/vlc  //这里指向你的vlc-android/vlc的路径,全路径
vlc_include = ${vlc_path}/include
vlc_version_include = ${vlc_path}/build-android-arm-linux-androideabi/include
VLC_CFLAGS =  -I${vlc_include}  -I${vlc_version_include}

差不多就这些问题吧,感觉这次编译要比之前编译的时候,容易了很多,如果有问题,欢迎大家留言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容