libvpx 交叉编译到arm 后,在android手机上运行

最近又开始将libvpx交叉编译到android下,并在android手机上运行起来。主要目地是为了测试vp9在手机上编码的性能。
准备:
1:首先我用的libvpx-v1.3.0版本,现在有libvpx-1.4.0版本,这两个版本都可以在官网上下载。
2:ubuntu 12.04 上编译。
3:adnroid手机用的是三星 gt-n5100 平板。
libvpx包含了vp8和vp9的源码,且往各个平台都有写,所以我们只要直接用NDK进行交叉编译即可,编译的过程中,可以选择编译vp8或vp9,或两者都编译,因为我只想应用vp9,所以我只编译了v9.
开始编译:

1cd /libvpx-v1.3.0
2:./configure --help   可以查看到所有的编译参数和支持的平台。
3export ARM_ROOT=/ndk  //ndk路径
  export ARM_INC=$ARM_ROOT/platforms/android-14/arch-arm/usr/include
  export ARM_LIB=$ARM_ROOT/platforms/android-14/arch-arm/usr/lib
  export CXXFLAGS=" -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mfloat-abi=softfp -mfp u= neon -I/ndk/platforms/android-14/arch-arm/usr/include"
   export LDFLAGS="-Wl,-Bsymbolic --sysroot=/ndk/platforms/android-14/arch-arm -lgcc -no-canonical-prefixes -Wl,--n o-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -L/ndk/platforms/android-14/arch-arm/usr/lib -lm "

这些都是在设置编译器的信息,然后

4:sudo ./configure --target=armv5te-android-gcc   --sdk-path=/ndk --disable-install-docs --enable-vp9  --disable-vp8           //--sdk-path为ndk路径
5:make
6:make install

这样libvpx就编译完成了,生成了静态库和二进制执行文件vpxenc 和vpxdec,接下来我们要做的就是在android手机上运行这两个二进制可执行文件,我们要用到的就是adb,这个在sdk里面,只要你电脑sdk配置好了,就不需要在电脑配置了。adb可以让我们在电脑端,通过命令控制android手机,什么是adb,大家上网看看。我们都知道,在ubuntu下无法识别android手机,所以,第一步,就是让手机能正常链接到电脑上,供电脑操作,网上搜索adb 手机配置就有很多,可以参考http://waynehu16.iteye.com/blog/1637664。这些都完成后,在linux终端输入
adb devices 查看手机是否能正常链接到电脑
2:然后要将手机root,获得手机的root权限,网上参考教程。
3:将手机usb链接到电脑后,开始往手机里复制文件 。

adb push /libvpx-v1.3.0/vpxenc  /data/ //将电脑上的vpxenc复制到data目录下
adb push /RaceHorses_176x144.yuv  /data/ //将要编码的yuv视频复制到data目录下
4:adb shell          //进入adb shell下
5:cd /data
6./vpxenc -p 1 -w 176 -h 144 --psnr --target-bitrate=3000 -o RaceHorses.bin RaceHorses_176x144.yuv  

就可完成,但在手机上编码速度特别慢,毕竟手机的处理器有限。
这样就通过在ubuntu下adb shell下输入命令,让vp9编码在android手机上运行。
在往设备中push 数据和运行./vpxenc 都会遇到权限问题,不要紧张,网上找找解决办法很多。

你可能感兴趣的:(android,编译,vp9,libvpx)