您的位置:首页 > 移动开发 > Android开发

Ubuntu 14.10+NDK+ffmpeg编译+Android

2015-07-10 11:26 681 查看

本文就是自己记录 在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/bash
NDK=/home/cms/android-ndk/android-ndk-r10d
SYSROOT=$NDK/platforms/android-8/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_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_FLAG
make clean
make
make 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.3
chmod u+x build-linux-NDK-r10.sh
build-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 系统下生成静态库结束,动态库下一次再写,看下上一篇博客,应该能搞定!

明天继续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: