Compiler-Umgebung:
- Mac OS Monterey (12.3.1)
- android-ndk (21.0.6113669)
-
ffmpeg-4.2.2
Laden Sie ffmpeg herunter: wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2, oder laden Sie es vom offiziellen Git herunter.
Hinweis: Die von mir verwendete NDK-Version ist 21.0.6113669. Ich habe Version 24.0.8215888 ausprobiert. Das Fehlen bestimmter Dateien führt dazu, dass die Kompilierung fehlschlägt. Dies sollte möglich sein, wenn die größere Version 21 ist, der konkrete Grund wurde jedoch nicht überprüft.
Hinweis: Nach Android NDK r17c hat Google GCC offiziell entfernt und unterstützt GCC nicht mehr. Neue Versionen von NDK werden mit CLANG kompiliert. Deshalb verwenden wir hier CLANG zur Kompilierung.
1. Skript konfigurieren
Cross_prefix_clang-Parameter hinzufügen
Öffnen Sie die Konfigurationsdatei im Stammverzeichnis von ffmpeg-4.2.2 (Hinweis: Doppelklicken Sie nicht, um sie auszuführen), suchen Sie nach CMDLINE_SET. Sie können den folgenden Code finden und dann eine Befehlszeile hinzufügen Option: cross_prefix_clang
CMDLINE_SET="
$PATHS_LIST
ar
arch
as
assert_level
build_suffix
cc
objcc
cpu
cross_prefix
# 新增命令行参数
cross_prefix_clang
custom_allocator
cxx
dep_cc
doxygen
env
extra_version
.
.
.
2. Ändern Sie die Pfadeinstellungen des Kompilierungswerkzeugs.
Suche ar_default="${cross_prefix}${ar_default}"
ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
cxx_default="${cross_prefix}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"
将中间两行改成
ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix_clang}${cc_default}"
cxx_default="${cross_prefix_clang}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"
Erstellen Sie ein neues Kompilierungskonfigurationsskript
Erstellen Sie ein neues Shell-Skript im Stammverzeichnis und benennen Sie es: build_android_clang.sh
#!/bin/bash
set -x
# 目标Android版本
API=24
CPU=armv7-a
#so库输出目录,自己喜欢放哪里就放哪里
# OUTPUT=$(pwd)/android/$CPU
OUTPUT=./output/$CPU
# NDK的路径,根据自己的NDK位置进行设置
NDK=/Users/kbq/Library/Android/sdk/ndk/21.0.6113669
# 编译工具链路径
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
# 编译环境
SYSROOT=$TOOLCHAIN/sysroot
function build
{
./configure \
--prefix=$OUTPUT \
--target-os=android \
--arch=arm \
--cpu=armv7-a \
--enable-asm \
--enable-neon \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--disable-ffmpeg \
--sysroot=$SYSROOT \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--cross-prefix-clang=$TOOLCHAIN/bin/armv7a-linux-androideabi$API- \
--extra-cflags="-fPIC"
make clean all
# 这里是定义用几个CPU编译
make -j12
make install
}
build
Der dritte Schritt startet die Kompilierung
Öffnen Sie das cmd-Terminal und wechseln Sie mit der CD in das Verzeichnis, in dem sich FFmpeg befindet
Geben Sie ./build_android_clang.sh ein
Während Sie darauf warten, dass die Kompilierung abgeschlossen ist, erhalten Sie zwei Verzeichnisse, include und lib, im Verzeichnis ffmpeg/android/armv7-a, bei denen es sich um Header-Dateien bzw. Bibliotheksdateien handelt.
Hinweis: Wenn die Fehlermeldung zsh: Erlaubnis verweigert: ./build_android_clang.sh angezeigt wird, bedeutet dies, dass die Dateiberechtigungen falsch sind. Führen Sie chmod u+x build_android_clang.sh aus