Android studio 3.0 集成 FFmpeg - 从编译到配置

本文介绍了如何在Android Studio 3.0中集成FFmpeg和libx264,包括环境准备(Ubuntu、NDK)、FFmpeg及libx264的编译,以及在Android项目中的配置和使用步骤。通过编译脚本和CMakeLists.txt设置,成功导入和链接FFmpeg库。
摘要由CSDN通过智能技术生成

更新:
最近在做摄像头画面H.264编码,拿起MediaCodec咔咔一顿写,抱着一遍过的心态,然后果不其然的直接崩了,看了错误日志才发现,我的手机没有H.264的编码器,然后查了一下才发现,不同设备对MediaCodec硬编的支持参差不齐,于是索性换成软编,然后想起了FFmpeg,这次有了前车之鉴,先查了一下,发现FFmpeg默认没有集成这个编码器,需要引入libx264,好吧,革命事业曲折离奇,然后又是一顿踩坑之后,有了下面这段更新。

  1. 编译libx264
git clone git://git.videolan.org/x264.git

直接克隆下来,省时省力,然后进入文件目录下,创建待会儿要使用的shell脚本,如下:

#!/bin/bash
export NDK=/home/download/android-ndk-r15c
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=/usr/local/x264
export ADDI_CFLAGS="-marm"

./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--disable-gpac \
--disable-cli \
--disable-asm \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--host=arm-linux \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make j8
make install

这个脚本和下面编译FFmpeg的脚本非常类似,主要一定要加入跨平台编译,不然编译出来的so文件是64位的,在android armeabi-v7a上没法使用。下面是重头戏,也是在整个编译过程中一直困扰我的,就是在编译过程中经常出现一个log2f,起初没注意,每次编译到这儿就会停顿一下,后面混编的时候一直找不到libx264也是这个原因(这是libx264 not found的一个隐藏得比较深的原因,还可能是其他原因)。我们需要把libx264文件夹下的config.h里面的#define HAVE_LOG2F 1关闭,也就是修改成:

#define HAVE_LOG2F 0

这下再make也就不会出现log2f了。

  1. FFmpeg+libx264混编
    混编也就是在下面编译FFmpeg的脚本中开启libx264,以及告诉FFmpeg,libx264的so文件和头文件的位置。直接给出来,并标出不同的地方:
#!/bin/bash
export NDK=/home/download/android-ndk-r15c
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export PREFIX=/usr/local/ffmpeg/
# 下面这两句就是告诉FFmpeg x264相关文件的位置
export ADDI_CFLAGS="-I/usr/local/x264/include"
export ADDI_LDFLAGS="-L/usr/local/x264/lib"

./configure --target-os=android \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-x86asm \
--disable-symver \
--enable-gpl \
# 开启libx264
--enable-libx264 \
--enable-encoder=libx264 \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--en
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值