Android FFmpeg 编译(2016,亲测)

Android FFmpeg的编译是通过jni调用ffmpeg库的前提。如果你要在android上使用ffmpeg,需要通ndk编译ffmpeg。然后才能在android项目中用jni来使用ffmpeg。

本文参考 http://blog.yikuyiku.com/?p=4533
本文讲解的是在Ubuntu上通过NDK-r9 编译ffmpeg库;
ndk请去android官网下载。
ffmpeg请去ffmpeg的官网去下载:http://ffmpeg.org/。我用的是2.6.3

1、把下载好的ndk和ffmpeg压缩包解压到指定目录(我都是解压到home下了),解压可以通过命令,或通过软甲打开解压。

2、修改FFmepg编译配置
把ffmpeg目录下的configure文件中的这几行:

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)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

目的是去掉默认生成的so包,例如libavcode.so.55中最后的那个“55”版本号.

3、编译FFmpeg,创建build_android.sh 执行文件
configure的配置有很多,有兴趣的可以自己研究下。由于本人不懂c,就用网上的流传的配置。
注意前三行要按照自己的路径正确配置。(我就是在这一步出的问题,ndk的路径没有写对,找了好久才找到)

#!/bin/bash  
NDK=/home/double/android-ndk-r9d
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

保存后执行:

sudo chmod +x build_android.sh
./build_android.sh

我就是ndk的路径没写对,出现了下面的问题,出现问题了可以代开config.log查看。
这里写图片描述
给大家做个参考。

4、查看编译结果。
编译成功后,会多出一个android文件夹,里面就是我们编译好东西了。

编译就到这里了,下期会写,在android项目中使用编译好的ffmpeg库。

补充:
编译后生成的android文件夹是带锁的。
用命令:sudo chmod +x android 解锁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值