敬告:
编译前尽量安装/更新必要的软件:vlc-dep, android-sdk, android-ndk
1. libmpeg2 下载源错误, 必须修改$(vlc-setup)/vlc/contrib/src/libmpeg2/rules.mak, 内容如下:
#$(vlc-setup)/vlc/contrib/src/libmpeg2/rules.mak
LIBMPEG2_VERSION = 0.5.1
#src:
#LIBMPEG2_URL := http://libmpeg2.sourceforge.net/files/libmpeg2-$(LIBMPEG2_VERSION).tar.gz
#mod:
LIBMPEG2_URL := ftp://mirror.ovh.net/gentoo-distfiles/distfiles/libmpeg2-0.5.1.tar.gz
P.S. vlc目录是通过git命令下载的,见compile.sh
2. 若出现该错误内容:android-sdk-linux/tools/ant/build.xml:539: Unable to resolve project target 'android-17',则必须更新SDK,命令如下:
android update sdk
3. 如果是在Ubuntu-64bit + Android-NDK(64bit)下编译,则在编译vlc/contrib/android/a52dec等模块时,会报错:arm-linux-androideabi not found。必须修改compile.sh: Ln77,内容如下:
# $(vlc-setup)/compile.sh
#src:
#NDK_TOOLCHAIN_PATH=${ANDROID_NDK}/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/`uname|tr A-Z a-z`-x86/bin
#mod
NDK_TOOLCHAIN_PATH=${ANDROID_NDK}/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/`uname|tr A-Z a-z`-`uname -m|tr A-Z a-z`/bin
#or
#NDK_TOOLCHAIN_PATH=${ANDROID_NDK}/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/`uname|tr A-Z a-z`-x86_64/bin
4. 值得注意的是, Android的多媒体框架是采用的OpenMAX标准, 并通过IPC来实现的. 而VLC-Android默认是采用Android多媒体框架的实现方式. 除此之外, 也支持直接调用Android-OMX动态库的实现方式. 就兼容性而言, 前者明显要好于后者, 而实际播放速度来说, 正好相反..
其中, VLC-Android通过编译宏(-DUSE_IOMX)来指定具体实现的版本, 详见$(vlc-setup)/vlc/modules/codec/omxil/Modules.am. 因此, 编译调用Android-OMX动态库的版本, 必须禁用-DUSE_IOMX. (用按此编译出来的版本, 在GoogleNexus的机器上, 播放1080p的高清影片, 播放速度基本流畅, 而基于Android多媒体框架的版本, 则相对比较吃力).