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

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

2.安装依赖

a.安装交叉编译工具链
linux 复制代码
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
linux 复制代码
./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自己加

crystal 复制代码
make -j$(nproc)

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

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

cobol 复制代码
sudo chmod -R 777 ./

5.安装

需要sudo自己加

go 复制代码
 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 分钟前
安卓adb shell串口基础指令
android·adb
fatiaozhang95272 小时前
中兴云电脑W102D_晶晨S905X2_2+16G_mt7661无线_安卓9.0_线刷固件包
android·adb·电视盒子·魔百盒刷机·魔百盒固件
foo1st3 小时前
JDK(Ubuntu 18.04.6 LTS)安装笔记
java·笔记·ubuntu
CYRUS_STUDIO3 小时前
Android APP 热修复原理
android·app·hotfix
鸿蒙布道师4 小时前
鸿蒙NEXT开发通知工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师4 小时前
鸿蒙NEXT开发网络相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
大耳猫4 小时前
【解决】Android Gradle Sync 报错 Could not read workspace metadata
android·gradle·android studio
ta叫我小白4 小时前
实现 Android 图片信息获取和 EXIF 坐标解析
android·exif·经纬度
qq_316837755 小时前
使用ffmpeg 将图片合成为视频,填充模糊背景,并添加两段音乐
ffmpeg·音视频
dpxiaolong5 小时前
RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)
android·windows