本文就是自己记录 在Ubuntu 14.10-64位系统下,用android-ndk-r10d交叉编译ffmpeg用于Android调用ffmpeg


参考:

http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9

http://www.2cto.com/kf/201403/287834.html


1、在Ubuntu 系统下 安装android-ndk-r10d

去google官网下载:android-ndk-r10d

安装在目录: /home/cms/android-ndk/android-ndk-r10d


2、去ffmpeg官网下载源代码

主页:http://www.ffmpeg.org/download.html#releases

更早版本的源代码:http://www.ffmpeg.org/olddownload.html

我使用的是ffmpeg-2.5.3

解压缩,放在/home/cms/android-ndk/ffmpeg-ndk/目录下

ffmpeg源代码的目录是: /home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3



4、准备编译脚本:build-linux-NDK-r10.sh

这个是生成静态库

将脚本build-linux-NDK-r10.sh放到ffmpeg源代码的目录:/home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3下

#!/bin/bashNDK=/home/cms/android-ndk/android-ndk-r10dSYSROOT=$NDK/platforms/android-8/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64CPU=armPREFIX=$(pwd)/android/$CPUADDI_CFLAGS="-marm"function build_one{./configure \ --prefix=$PREFIX \ --disable-shared \ --enable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/arm-linux-androideabi/bin/ \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install}build_one


说明:

注意,configure过程中将临时文件放在/tmp目录下,与在cygwin下不同,不需要进行映射,因此不需要将环境变量 TEMPDIR定义为C:/cygwin/tmp


下面是指定生产静态库、不生成动态库
--disable-shared \--enable-static \


5、命令行下

输入命令:

cd /home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3chmod u+x build-linux-NDK-r10.shbuild-linux-NDK-r10.sh

等待大约10多分钟,编译结束,在各个库目录下会生成libav***.a库文件,并且在目录/home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3下在多一个 android的目录,android目录下有arm目录,arm目录下包含后续android开发需要的静态库、头文件

命令行中输入:查看各个静态库

ls /home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3/android/arm/lib/输出:libavcodec.a  libavfilter.a  libavformat.a  libavutil.a  libswresample.a  libswscale.a  pkgconfig
命令行中输入:查看各个库的头文件

ls /home/cms/android-ndk/ffmpeg-ndk/ffmpeg-2.5.3/android/arm/include/输出:libavcodec  libavfilter  libavformat  libavutil  libswresample  libswscale


今天到此为止吧! Ubuntu 系统下生成静态库结束,动态库下一次再写,看下上一篇博客,应该能搞定!

明天继续!

更多相关文章

  1. android 往sd卡中写入文件
  2. Android运行报错:Error: Static interface methods are only supp
  3. Android(安卓)NDK学习 C++ 支持
  4. 一个读取android根目录下的文件夹或文件
  5. Android(安卓)近百个项目的源代码,覆盖Android开发的每个领域
  6. android 获取路径目录方法
  7. Android默认设置静态IP
  8. Android(安卓)近百个项目的源代码,覆盖Android开发的每个领域
  9. Android(安卓)中 Handler 引起的内存泄露

随机推荐

  1. android获取手机存储状态
  2. android EditText 自动滚动条 显示最新内
  3. Security and Permissions安全与权限(五)
  4. Android(安卓)Tint ImageView 无法设置Ti
  5. 备忘
  6. android获取app的版本信息
  7. android srcollview按钮顶部停留
  8. Android练习之Linkify文字链接
  9. Android滑动解锁控件
  10. 获取amlogic源码