这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库。Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库。我11年的时候也弄过视频播放器,当时也是基于FFMpeg来做。那时候网上有关Android视频解码库的资料不多,只在git上找到一个人移植FFMpeg,把它弄下来编译,有兴趣可以看看当时的文章:Android 视频播放器 faplayer 编译。

言归正传,今天的主角是大名鼎鼎的VLC,做过视频播放器的人,应该都听过它大名,基本上所有平台都有它的身影。Android上今年也发布了beta版。这次编译不太顺利,主要是因为编译前我看了网上一些其他人写的编译过程。然后选了一个来按照它编译。最后在一个地方折腾了好久。原因是:那篇文章是去年的,现在VLC项目重新更新了,编译方式简化了。当然大部分编译过程是一致的。最后查了半天,找到了VLC官网的编译说明,

最后还是按照官方的重新编译一次。有关VLC的说明这里就不说了,有兴趣可以去官网了解。

官方编译说明:点这里

1、下面是我编译的环境:

  • 主机系统:window7 64位旗舰版

  • 虚拟机:Vmware Workstation 7.1.2

  • Linux版本:Ubuntu 10.10

  • AndroidSDK:adt-bundle-linux-x86-20130522

  • JDK:jdk-7u25-linux-i586.tar

  • NDK:android-ndk-r8e-linux-x86.tar

版本说明:SDK、JDK、NDK我目前都是使用最新的版本,都是官网下载。唯独Linux是比较旧的版本,因为这个系统我用了两年多,一直没有升级到12.04。这个最后也导致我编译的时候遇到一些因为某些软件部版本低,导致编译中断。所以如果你还没装Linux系统,建议你直接安装12.04稳定版。AndroidSDK是google的集成包,里面包含Eclipse和ADT以及4.2的SDK。建议大家如果没有配置好环境,就下载这个集成包。在配置JDK、SDK、NDK前,先把LVC编译需要的一些第三方软件包安装好。

2、请保证你的机器已经安装了下面软件(最好安装该软件最新版)

  • apt-get install gcc

  • apt-get install g++

  • apt-get build-dep vlc

  • apt-get install git

  • apt-get install wget

  • apt-get install autoconf

  • apt-get install libtool

  • apt-get install subversion

  • apt-get install cmake

  • apt-get install ant

这个是必须安装的软件,而且最好是安装最新版的软件,我编译的时候,因为ant使用了比较旧的版本,导致生成APK的时候失败了,ant必须是1.8以上的版本才行。

3、JDK安装配置

从Oracle官网下载JDK:点击这里

我是用最新的JDK7,32位还是64位根据你的系统来选,我这里选择的是32位

下载压缩包解压后放到一个目录,我这里放到/home/mythou/android-dev/目录下,下面SDK、NDK我也会放到这目录下。解压后,需要配置环境变量,网上也很多教程,我简单说说:

终端输入:sudo gedit /etc/profile

添加环境变量,路径是你解压后jdk的路径,下面是我实际配置的路径。方便终端使用,加入PATH路径里面。

export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25
export JRE_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME

修改environment配置

终端输入:sudo gedit /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25
export JRE_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

4、配置Android SDK

1、从Google android官网下载SDK集成开发包:点击这里

我这里选择的是Linux 32-bit,建议下载ADT Bundle的集成开发包,如果单纯下载SDK,还得下载配置eclipse和ADT,比较复杂。下载后也是解压到目标文件夹,我这里是:/home/mythou/android-dev/adt-bundle-linux-x86-20130522目录下。

同样需要配置环境变量

终端输入:sudo gedit /etc/profile 增加下面配置。

export ANDROID_SDK=/home/mythou/android-dev/adt-bundle-linux-x86-20130522/sdk
PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

5、配置NDK

从Google官网下载DNK:点击这里

同样,我这里下载Linux的32bit版。

下载后,同样解压到目标文件夹,我这里的是:/home/mythou/android-dev/

解压后,终端输入:sudo gedit /etc/profile 增加下面配置。

export ANDROID_NDK=/home/mythou/android-dev/android-ndk-r8e
PATH=$PATH:$NDKR6B:$ANDROID_NDK

到这里,JDK、NDK、SDK都已经配置好,你可以打开adt-bundle-linux-x86-20130522目录下的eclipse软件,如果能正常打开说明环境基本配置好。

你也可以直接编个应用测试一下。或者终端检查版本,例如检查JDK版本:

6、其他环境变量配置

除了上面几个,还有部分环境变量需要配置,当然你可以选择直接在终端配置,不写入配置文件,看个人喜欢。因为我经常需要重复编译,

所以写在配置文件比较方便。

增加ant变量

export ANT_HOME=/home/mythou/android-dev/apache-ant-1.8.0

需要说明的是,我的ant是自己重新下载源码包安装,因为系统默认安装版本太低。后面会说到这个问题。

需要配置CPU类型,Android支持的CPU类型包含ARM和X86,所以编译前需要指定CPU类型。

X86系列的

  export ANDROID_ABI=x86

ARM的Cortex-A8 or Cortex-A9系列

export ANDROID_ABI=armeabi-v7a

ARMv6

export ANDROID_ABI=armeabi

ARMv6 不带 FPU

export ANDROID_ABI=armeabi
export NO_FPU=1

ARMv5 或者 模拟器

export ANDROID_ABI=armeabi
export NO_ARMV6=1

MIPS 系列

export ANDROID_ABI=mips

上面你可以直接输入环境变量或者在profile设置。上面配置,我编译的时候,选择了ANDROID_ABI=armeabi-v7a 因为我测试机器是ARM A9系列的。到这里,环境配置已经完成。如果你是修改etc/profile 需要注销重启,或者终端更新用户配置source /etc/profile才能生效。

下面是我profile最后配置的样式

双击代码全选
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 export ANDROID_NDK=/home/mythou/android-dev/android-ndk-r8e export NDKR5C=/home/mythou/ndkr5c export NDKR6B=/home/mythou/ndkr6b PATH=$PATH:$NDKR6B:$ANDROID_NDK export ANDROID_ABI=armeabi-v7a export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1. 7 .0_25 export JRE_HOME=/home/mythou/android-dev/jdk/jdk1. 7 .0_25/jre export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export ANT_HOME=/home/mythou/android-dev/apache-ant- 1.8 . 0 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME export ANDROID_SDK=/home/mythou/android-dev/adt-bundle-linux-x86- 20130522 /sdk PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

7、获取源码:

从git获取源码:

git clone git://git.videolan.org/vlc-ports/android.git

获取后,它会在你当前目录下,创建android目录,里面包含下面文件

此时其实还没有下载VLC源码,这个是VLC的目录结构和编译的配置。

执行:

sh compile.sh

这个默认是编译debug版本,如果需要编译release版本,需要执行

sh compile.sh release

第一次编译先编译debug版。

此时才开始下载VLC的源码。大概有200M的源码。

然后就会自动编译直到生成VLC的apk文件为止。

8、编译过程遇到问题

虽然是自动编译,不过中间多多少少会有问题,下面是我编译过程遇到问题。

(1)checkout的问题

这个貌似是大小写不匹配。可以修改complie或者再执行sh compile.sh都可以解决。

(2)libmpeg2库没法下载

需要说明一点是编译过程中,需要下载很多第三方的库,所以导致整个编译过程很漫长。当然这个跟你网络情况有关。

既然无法下载库,只能手动自己下载一个了,自己百度找一个libmpeg2库下载下来,放到指定文件夹即可。

把下载的libmpeg2库,拷贝到下面路径:

(3)config.sub文件太旧问题

10.10版本的Ubuntu,存在系统文件太旧额问题

下载这两个文件替换即可:config.guess和config.sub,将此两个文件拷贝到/usr/share/misc目录下覆盖,重新执行编译命令。

(4)gettext版本太低

这个就是我上面说的getext需要0.18版本。自己手动找个0.18版本,然后编译安装。

这个解决后,就可以成功把解码库编译出来:

我这里编译的是armeabi-v7a版本,会自动把解码库拷贝到LVC的android工程下的libs文件夹下。

接着编译打包apk的时候出现了一个问题:

ant版本太低问题,需要ant1.8或以上版本。老方法,自己找对应版本编译安装。

最后就可以成功编译出vlc的apk安装包:

因为是debug版,出来的是VLC-debug.apk文件。

到这里就算圆满编译出来,你也可以把java的工程移植出来放到eclipse上面使用修改。(vlc-android目录下面就是对应的android应用工程)

如果是移植出来还要把java-libs文件夹下面关联的3个工程移植出来。Eclipse下的工程关联:

下面放两张运行截图:

下面提供eclipse下可以使用的工程,我只在4.2SDK下编译,其他的没有尝试。

整个包含解码库的编译工程太大了,有1.6G,我就不放上来了,有兴趣可以自己编译。只给出eclipse下可以编译的工程,方便改界面。

不过还是建议自己编译一下,因为现在的VLC只是beta版,后面出正式版,还需要重新编译解码库。

VLC在Eclipse下可用工程源码:armeabi-v7a-Debug版

出处:http://www.cnblogs.com/mythou/p/3162595.html



更多相关文章

  1. Android百度地图——SDK版本v2.0.0初探
  2. Android SDK 版本的简称
  3. 解决安卓9.0版本不能访问http请求问题
  4. windows下命令行编译android工程 javac Apk数字签名
  5. Android studio工程有重复包时报错
  6. apktool高版本产生compileSdkVersion等错误

随机推荐

  1. Android多媒体开发(5)————利用Android(
  2. Android内核的根文件系统
  3. Android动画一
  4. Android常见错误解析
  5. Android(安卓)常用布局
  6. Anfdroid网络编程方法
  7. Android进程和线程
  8. android双击返回键退出程序
  9. android中进度条控件
  10. Android(安卓)Notification下载实例