ubuntu下交叉编译安卓FFmpeg 和 官方指导链接

将之前的编译方法在此记录

Linux系统:Ubuntu 18.04.6 LTS

交叉编译工具链:gcc-aarch64-linux-gnu g+±aarch64-linux-gnu

ffmpeg版本:5.1.3

1.下载源码

ffmpeg官网:https://ffmpeg.org/download.html#releases

img

下载完成后,压缩包解压到Ubuntu中。

2.安装依赖

a.安装交叉编译工具链
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
b.安装依赖项
sudo apt-get install -y pkg-config-aarch64-linux-gnu
sudo apt-get install libmp3lame-dev libx264-dev libxvidcore-dev
sudo apt-get update && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev \
  libunistring-dev

3.生成Makefile文件

首先cd到解压好的ffmpeg源码目录中。(如果之前编译过,需要先make clean 一下)

chmod +x configure
./configure --enable-cross-compile --target-os=android --arch=aarch64 --enable-neon --cross-prefix=/usr/bin/aarch64-linux-gnu- --cc=/usr/bin/aarch64-linux-gnu-gcc --cxx=/usr/bin/aarch64-linux-gnu--g++ --prefix=/home/LIB/ffmpeg-5.1.3_linux_arm64 --disable-asm  --enable-parsers --disable-decoders --enable-decoder=h264 --enable-decoder=aac --disable-debug --enable-ffmpeg --enable-shared --disable-static --disable-stripping --disable-doc 
//可不加此配置--extra-ldflags="-L/usr/aarch64-linux-gnu/lib -lm"
解释:
--enable-cross-compile 表示启用交叉编译模式。
--target-os=android 表示编译目标平台为安卓系统。
--arch=aarch64 表示编译目标架构为aarch64。
--cross-prefix 指定交叉编译工具链的前缀路径。上文下载gcc-aarch64-linux-gnu之后,默认安装到了/usr/bin/aarch64-linux-gnu-gcc,这里使用/usr/bin/aarch64-linux-gnu-。
--cc 和 --cxx 分别指定C编译器和 C++ 编译器的路径。
--prefix 指定安装目录,在执行make install之后才会安装。
--disable-asm 表示禁用汇编优化。
--enable-parsers 表示启用解析器。
--disable-decoders 表示禁用所有解码器。
--enable-decoder=h264 和 --enable-decoder=aac 表示启用 H.264 和 AAC 解码器。
--disable-debug 表示禁用调试信息。
--enable-ffmpeg 表示编译 FFmpeg 命令行工具。
--enable-shared 表示编译动态链接库,生成共享库文件。
--disable-static 表示禁用静态链接库。
--disable-stripping 表示禁用剥离符号表。
--disable-doc 表示禁用文档生成。
./configure --prefix=/home/mdz/Documents/Project/ffmpeg_android \
--enable-shared \
--disable-static \
--disable-doc \
--disable-programs \
--disable-avdevice \
--disable-swscale \
--disable-postproc \
--disable-avfilter \
--disable-network \
--disable-everything \
--enable-decoder=h264 \
--enable-protocol=file \
--enable-muxer=mp4 \
--enable-demuxer=mov \
--enable-parser=h264 \
--enable-bsf=h264_mp4toannexb \
--enable-openssl \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec \
--cross-prefix=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30- \
--target-os=android \
--arch=aarch64 \
--sysroot=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
--extra-cflags="-Os -fpic $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/arm-linux-androideabi" \
--extra-ldflags="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android"

4.编译

需要sudo自己加

make -j$(nproc)

$(nproc)表示本系统线程数,为了多线程编译。也可写-j4。

如果出现xxx权限不够,使用chmod加执行权限

sudo chmod -R 777 ./

5.安装

需要sudo自己加

 make install

此时,编译好的库文件就会被安装到上面configure配置的安装目录中了,找到复制完成文件夹就可以在android项目开发时使用。

6.移动和使用

由于安装的链接库目录中存在link,所以需要打包后再进行移动,解压后再在项目中使用。

tar -zcvf 压缩包 被压缩1

官方的FFmpeg编译说明和指导

安卓:
在Ubuntu下,clone这个仓库,配置好所需环境,即可开始编译。
编译说明:https://github.com/arthenica/ffmpeg-kit/tree/main/android#21-prerequisites

其他:
参考官方指导:https://trac.ffmpeg.org/wiki/CompilationGuide

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Linux 下使用 FFmpeg 交叉编译 Android 需要以下步骤: 1. 安装 Android NDK:可以从 Android 官网下载最新版本的 NDK,解压后将其路径添加到环境变量中。 2. 下载 FFmpeg 源码:可以从 FFmpeg 官网下载最新版本的源码包,解压后进入源码目录。 3. 配置交叉编译工具链:在 FFmpeg 源码目录下执行以下命令: ``` ./configure --target-os=android --arch=arm --enable-cross-compile --cross-prefix=$NDK/bin/arm-linux-androideabi- --sysroot=$NDK/platforms/android-21/arch-arm/ ``` 其中,$NDK 是你安装 Android NDK 的路径。 4. 编译 FFmpeg:执行以下命令进行编译: ``` make -j4 ``` 其中,-j4 表示使用 4 个线程编译。 5. 生成动态库:执行以下命令将编译好的动态库生成到指定目录: ``` make install PREFIX=/path/to/output/directory ``` 其中,/path/to/output/directory 是指生成的动态库要存放的目录路径。 完成上述步骤后,你就可以在 Android 项目中使用 FFmpeg 了。在 Android.mk 文件中添加以下代码: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ffmpeg LOCAL_SRC_FILES := /path/to/output/directory/lib/libavformat.so /path/to/output/directory/lib/libavcodec.so /path/to/output/directory/lib/libswscale.so /path/to/output/directory/lib/libavutil.so include $(PREBUILT_SHARED_LIBRARY) ``` 其中,/path/to/output/directory 是指生成的动态库存放的目录路径。在 Android.mk 文件中添加以上代码后,就可以在 Android 项目中使用 FFmpeg 了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值