基于VLC Android播放器开发(一)

感谢开源的VLC,让我们能够站在巨人的肩膀开发出我们所需要的产品。

配置和编译VLC源码靠谱料:http://blog.csdn.net/lynxzong/article/details/12858667

官方文档:https://wiki.videolan.org/AndroidCompile

VLC Demo:https://bitbucket.org/edwardcw/libvlc-android-sample

一路下来,编译还算顺利。就是由于网络的原因会出现下载那些依赖的库非常缓慢。只要耐心点,当然遇到了些问题可能网上没有说明的,但是通过Console打印的log信息就能顺利解决。切记不要配置错环境变量。我用的是Mac贴上我的配置,在~/.bash_profile里(如果没有此文件,vim .bash_profile)

export ANDROID_NDK=/Users/RayMoo/Android/android-ndk-r10
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ANDROID_SDK=/Users/RayMoo/Android/sdk
export ANDROID_ABI=armeabi-v7a
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

配置完.bash_profile文件,你可以通过:source .bash_profile,让他生效。

配置完成可以在控制台通过输入:echo $ANDROID_SDK看看输出的路径是否是你配置的路径,ANDROID_NDK同样可以那样验证。

我编译出来的Android的版本(VersionName):1.1.0-git,目前来说应该是最新的。进入你编译的项目里你会发现有4个文件夹:

vlc-android: android工程,由java编写的应用层代码。

vlc:由C语言编写的解析,协议支持以及ffmpeg等编解码库。

libvlc:android工程抽取的一些公用模块如,工具类,事件等。

java-libs:android工程所依赖的第三方Library。

看到这么多代码是不是头晕了,其实还好。如果你的产品如果对视频工鞥不是很苛刻的话,修改vlc-android基本上就能满足你的需求了,不过提醒的是虽然vlc虽然支持的格式和协议都是很强大的,但是其实bug也还是不少的,如果要用这个需要衡量风险。

另外VLC for Android我发现的一个比较严重的bug是对hls协议的支持,在播放离线m3u8时候,快进快退都是不支持的,原因是因为没有获取到整个视频的时间,这个其实也很好改仔细跟进和debug下vlc目录下的C代码,修改就可以解决,然后重新编译就可以了。

下下来的源代码是用gradle构建的,哇,如此就非常方便,我是用Android Studio直接导入的工程,非常方便。但是有个很不舒服的就是看C代码特别不方便,Android Studio支持C支持的很差劲,下了个C/C++的Intellij插件,卡的一比。所以C代码(vlc目录)我就用Qt-Creator去阅读和修改了。