编译Android平台可用的ffmpeg源码

这篇文章的目的是使用NDK编译ffmpeg源码,将编译成功的库文件在Android平台使用开发音视频。

我这里使用的是xShell链接阿里云的服务器,当然你也可以使用自己的Linux操作平台,我这里使用的是Ubantu。

然后下载NDK,根据自己的平台可以下载最新版本或者旧版本,我这里使用的是版本17的NDK,完成后解压。

编译Android平台可用的ffmpeg源码_第1张图片

然后下载ffmpeg源码,下载并解压。

最终如下所示


新建一个build.sh文件,放在ffmpeg-4.0.2目录下,里面执行的是shell语句:
shell语法可以查看shell脚本记录

#!/bin/bash

CPU=arm-linux-androideabi

TOOLCHAIN=$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC"
INCLUDES=" -isystem $NDK_ROOT/sources/android/support/include"

PREFIX=`pwd`/android/armeabi-v7a_lsn11

./configure \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/$CPU- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS $INCLUDES" \
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" \
--arch=arm \
--target-os=android 

注意

  • FLAGS和INCLUDES是从AndroidStudio可以获得,复制过来可能编译会报错,把报错的代码删除即可:
externalNativeBuild/xxx/build.ninja
  • build.sh中的NDK路径如何设置?
    定位到android-ndk-r17c目录下,执行pwd


然后设置NDK的环境变量即可:

export NDK=/root/softffmpeg/android-ndk-r17c

查看NDK的路径:


  • 如果执行build.sh没有权限,则需要执行:
chmod +x build.sh 

build.sh的作用是执行configure,生成Makefile文件,下面是成功执行的结果:


接着执行

make
make install

执行成功会在当前目录下生成一个android目录,里面就是所需的静态库和头文件。


通过执行

tree lib/

可以看到静态库的树形结构

编译Android平台可用的ffmpeg源码_第2张图片

你可能感兴趣的:(编译Android平台可用的ffmpeg源码)