您的位置:首页 > 其它

使用 NDK r9 编译ffmpeg

2014-05-13 15:15 316 查看
1. 环境 ubuntu 我的是12.04  ndk r9d 64位

2. 下载ffmpeg http://www.ffmpeg.org/download.html  找到 


FFmpeg 2.1.3 "Fourier"

2.1.3 was released on 2014-01-15. It is the latest stable FFmpeg release from the 2.1 release branch, which was cut from master on 2013-10-28. Amongst lots of other changes, it includes all changes from ffmpeg-mt, libav master of 2013-10-27, libav 9 as of 2013-10-27.

It includes the following library versions:
libavutil      52. 48.101
libavcodec     55. 39.101
libavformat    55. 19.104
libavdevice    55.  5.100
libavfilter     3. 90.100
libswscale      2.  5.101
libswresample   0. 17.104
libpostproc    52.  3.100


Download bzip2 tarball  下载

下载之后 解压到 $NDK/sources   文件夹下面,这是因为编译快捷以及方便使用

3.  找到 ffmpeg-xxx/configure
找到如下几行:

Java代码  


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)'  

 上面几行会导致libavcodec.so.<version>
(e.g. libavcodec.so.55),不会被android承认 ,修改为;

Java代码  


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

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

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'  

SLIB_INSTALL_LINKS='$(SLIBNAME)'  

 4. 复制下面的代码到文本中 并命名为 build_android.sh,注意这个文件应该保存到 ffmpeg-xxx/configure
同一个文件夹下

Java代码  


#!/bin/bash  

NDK=$HOME/Desktop/adt/android-ndk-r9  

SYSROOT=$NDK/platforms/android-9/arch-arm/  

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64  

function build_one  

{  

./configure \  

    --prefix=$PREFIX \  

    --enable-shared \  

    --disable-static \  

    --disable-doc \  

    --disable-ffmpeg \  

    --disable-ffplay \  

    --disable-ffprobe \  

    --disable-ffserver \  

    --disable-avdevice \  

    --disable-doc \  

    --disable-symver \  

    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \  

    --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  

}  

CPU=arm  

PREFIX=$(pwd)/android/$CPU   

ADDI_CFLAGS="-marm"  

build_one  

 注意修改 NDK=$HOME/Desktop/adt/android-ndk-r9d
这行  

5. 执行 

Java代码  


sudo chmod +x build_android.sh  

  

./build_android.sh  

 6.输出  $NDK/sources/ffmpeg-xxx/android,
 arm/lib 和arm/include 

注意 arm/lib包含了两个 library files (e.g.: libavcodec-55.so) 和 symbolic links (e.g.: libavcodec.so) 我们需要删掉 symbolic links .

转载地址:http://wang-peng1.iteye.com/blog/2004897
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: