程序员

编译Android平台可用的ffmpeg源码

2019-09-30  本文已影响0人  凌烟醉卧

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

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

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

然后下载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 

注意

externalNativeBuild/xxx/build.ninja

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

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

查看NDK的路径:


chmod +x build.sh 

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


接着执行

make
make install

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


通过执行

tree lib/

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

上一篇 下一篇

猜你喜欢

热点阅读