ubuntu下 android ndk编译x264和ffmpeg

前端之家收集整理的这篇文章主要介绍了ubuntu下 android ndk编译x264和ffmpeg前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文:http://www.jb51.cc/article/p-xyabmdzp-ben.html

首先默认你的电脑已经配置好了ndk环境。

一、编译x264

1.下载x264

http://www.videolan.org/developers/x264.html

将下载下来的压缩包解压,我这里是解压到download目录下x264文件

1.在终端下进入x264目录:

cd /home/kim/download/x264(换成你自己的路径)

2. 在x264文件夹下建立build_x264.sh

gedit build_x264.sh

3.在新建的文件中输入如下内容修改为自己的目录):

export NDK=/home/kim/Android-ndk
export PREBUILT=$NDK/toolchains/arm-Linux-androideabi-4.9/prebuilt
export PLATFORM=$NDK/platforms/android-21/arch-arm
export PREFIX=/home/kim/download/x264
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux\
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM

4.在终端中输入

make

OK!一切顺利的话,你将会在x264文件夹下看到一个libx264.a的文件,编译成功!


…………………………………………………………error………………………………………………………………

当然,编译的过程有些人并非能一帆风顺,比如我就在make 的时候遇到一个错误:no working c compiler found x264,网上搜了很多方法,都没有解决。后来不得不去看config.log日志。发现是在配置-cross-prefix路径的时候填错了,编译的时候找不到路径。修改正确后,OK,编译通过!

所以,习惯看日志有多重要!!!

如果以上还是没能解决您的问题,这里留下我在编译的时候参考的文章,供您参考:

http://www.jb51.cc/article/p-odqhzzwn-qm.html

http://blog.csdn.net/seafit/article/details/46815263

http://www.jb51.cc/article/p-kocelkfe-bbt.html


二、编译ffmpeg

修改ffmpeg/configure文件

如果直接按照未修改的配置进行编译,结果编译出来的so文件类似libavcodec.so.55.39.101,版本号位于so之后,Android上似乎无法加载。因此需要按如下修改

将该文件中的如下四行:

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

替换为:

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'

编写build_android.sh脚本文件

build_android.sh的内容如下:(请替换为自己目录)
[html] view plain copy
  1. #!/bin/bash
  2. NDK=/home/kim/android-ndk
  3. SYSROOT=$NDK/platforms/android-21/arch-arm/
  4. TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
  5. functionbuild_one
  6. {
  7. ./configure\
  8. --prefix=$PREFIX\
  9. --enable-shared\
  10. --disable-static\
  11. --disable-doc\
  12. --disable-ffserver\
  13. --enable-cross-compile\
  14. --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-\
  15. --target-os=linux\
  16. --arch=arm\
  17. --sysroot=$SYSROOT\
  18. --extra-cflags="-Os-fpic$ADDI_CFLAGS"\
  19. --extra-ldflags="$ADDI_LDFLAGS"\
  20. $ADDITIONAL_CONFIGURE_FLAG
  21. }
  22. cpu=arm
  23. PREFIX=$(pwd)/android/$cpu
  24. ADDI_CFLAGS="-marm"
  25. build_one
给build_android.sh增加可执行权限:
copy
    $chmod+xbuild_android.sh
执行build_android.sh
copy
    $./build_android.sh
配置该脚本完成对ffmpeg的配置,会生成config.h等配置文件,后面的编译会用到。如果未经过配置直接进行编译会提示无法找到config.h文件错误
copy
    $make
  1. $makeinstall
至此,会在ffmpeg目录下生成一个android目录,其中ffmpeg/android/arm/lib目录下的so库文件如下:
[html] view plain copy
  1. -rwxr-xr-x1dennisdennis55208Mar2916:26libavdevice-55.so
  2. -rwxr-xr-x1dennisdennis632476Mar2916:26libavfilter-4.so
  3. -rwxr-xr-x1dennisdennis1442948Mar2916:26libavformat-55.so
  4. -rwxr-xr-x1dennisdennis7985396Mar2916:26libavcodec-55.so
  5. -rwxr-xr-x1dennisdennis83356Mar2916:26libswresample-0.so
  6. -rwxr-xr-x1dennisdennis308636Mar2916:26libswscale-2.so
  7. -rwxr-xr-x1dennisdennis300580Mar2916:26libavutil-52.so
注:以上列表去掉了符号链接文件和pkgconfig目录。
http://blog.csdn.net/leixiaohua1020/article/details/47008825

http://www.roman10.net/how-to-build-ffmpeg-for-android/

猜你在找的Ubuntu相关文章