Android 编译ffmpeg库

本文档详细介绍了如何在Android环境下编译FFmpeg库。首先从FFmpeg官网下载源码,然后选择合适的NDK版本,这里推荐使用NDK21。接着创建并编辑编译脚本build_ffmpeg.sh,设置编译参数以适应不同的架构(如arm64或arm)。通过执行脚本,可以生成针对不同架构的so库及头文件。最后,提供了不同FFmpeg版本的切换方法以及已编译库的下载链接和参考资料。
摘要由CSDN通过智能技术生成

Android 编译ffmpeg库

  1. 下载ffmpeg源码
    git clone https://git.ffmpeg.org/ffmpeg.git 或者 git clone https://github.com/FFmpeg/FFmpeg.git。

  2. 下载NDK版本, 目前我使用的是NDK21, 下载NDK和查看NDK目录文件的方法:
    (1) 进入AndroidStudio查看, 勾选Show Package Details ,可以查看当前已经下载的NDK版本, 如果需要下载其他版本可以点击下载. 存放目录在自己配置的Android/Sdk目录下面.
    (2) 在Android开发者文档可以下载到ndk源码,ndk下载链接。 根据实际需求选择对应ndk版本,建议下载ndk-r20b稳定版。(这个是github上建议下载)

  3. 创建编译脚本build_ffmpeg.sh

#!/bin/bash
make clean
set -e
archbit=64

if [ $archbit -eq 64 ];then
echo "build for 64bit"
ARCH=aarch64
CPU=armv8-a
API=21
PLATFORM=aarch64
ANDROID=android
CFLAGS=""
LDFLAGS=""

else
echo "build for 32bit"
ARCH=arm
CPU=armv7-a
API=16
PLATFORM=armv7a
ANDROID=androideabi
CFLAGS="-mfloat-abi=softfp -march=$CPU"
LDFLAGS="-Wl,--fix-cortex-a8"
fi

export NDK=/home/xzx/Android/Sdk/ndk/21.0.6113669    #这里是自己的NDK路径
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin  #注意这里是linux
export SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
export CROSS_PREFIX=$TOOLCHAIN/$ARCH-linux-$ANDROID-
export CC=$TOOLCHAIN/$PLATFORM-linux-$ANDROID$API-clang
export CXX=$TOOLCHAIN/$PLATFORM-linux-$ANDROID$API-clang++
export PREFIX=../ffmpeg-android/$CPU

function build_android {
    ./configure \
    --prefix=$PREFIX \
    --cross-prefix=$CROSS_PREFIX \
    --target-os=android \  #注意这里是android
    --arch=$ARCH \
    --cpu=$CPU \
    --cc=$CC \
    --cxx=$CXX \
    --nm=$TOOLCHAIN/$ARCH-linux-$ANDROID-nm \
    --strip=$TOOLCHAIN/$ARCH-linux-$ANDROID-strip \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="$CFLAGS" \
    --extra-ldflags="$LDFLAGS" \
    --extra-ldexeflags=-pie \
    --enable-runtime-cpudetect \
    --disable-static \
    --enable-shared \
    --enable-logging \
    --disable-ffprobe \
    --enable-ffplay \
    --disable-ffmpeg \
    --enable-debug \
    --disable-doc \
    --enable-avfilter \
    --enable-decoders \
    #--enable-version3 \
    #--enable-rkmpp \
    $ADDITIONAL_CONFIGURE_FLAG

    make
    make install
}
build_android

修改文件的权限chmod 777 build_ffmpeg.sh
执行编译脚本./build_ffmpeg.sh

  1. 编译完成生成ffmpeg-android文件, 我编译的arm64版本, 其他版本自己修改脚本编译.
xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg-android$ ls
armv8-a

生成的对应模块的so库, 还存在对应的头文件.

xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg-android/armv8-a/lib$ ls
libavcodec.so  libavdevice.so  libavfilter.so  libavformat.so  libavutil.so  libswresample.so  libswscale.so  pkgconfig
  1. 选择编译不同版本的ffmpeg, 请使用git checkout release/4.2不同的分支进行却换源码.
xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg$ git branch -a
  master
  release/4.0
* release/4.2
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/oldabi
  remotes/origin/release/0.10
  remotes/origin/release/0.11
  remotes/origin/release/0.5
  remotes/origin/release/0.6
  remotes/origin/release/0.7
  remotes/origin/release/0.8
  remotes/origin/release/0.9
  remotes/origin/release/1.0
  remotes/origin/release/1.1
  remotes/origin/release/1.2
  remotes/origin/release/2.0
  remotes/origin/release/2.1
  remotes/origin/release/2.2
  remotes/origin/release/2.3
  remotes/origin/release/2.4
  remotes/origin/release/2.5
  remotes/origin/release/2.6
  remotes/origin/release/2.7
  remotes/origin/release/2.8
  remotes/origin/release/3.0
  remotes/origin/release/3.1
  remotes/origin/release/3.2
  remotes/origin/release/3.3
  remotes/origin/release/3.4
  remotes/origin/release/4.0
  remotes/origin/release/4.1
  remotes/origin/release/4.2
  remotes/origin/release/4.3
  remotes/origin/release/4.4

  1. 编译出来的库下载链接: https://download.csdn.net/download/nihenmeila/35382760

  2. 参考编译链接:

FFmpeg官方文档

查看FFmpeg编译流程

查看FFmpeg常用命令行

https://github.com/xufuji456/FFmpegAndroid/blob/master/doc/FFmpeg_compile_shell.md

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小纸箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值