1. 準備環境
確保你的 Windows 系統已安裝以下工具:
-
Android Studio
-
NDK(Native Development Kit)
-
MSYS2(用于提供類 Unix 環境)
-
FFmpeg 源碼
-
Git Bash(可選,推薦使用)
安裝 MSYS2
-
下載并安裝?MSYS2。
-
打開 MSYS2 終端,更新包管理器:
pacman -Syu
? ? ? 3.安裝必要的工具:
pacman -S make pkg-config diffutils git
2. 下載 FFmpeg 源碼
在 MSYS2 終端中,克隆 FFmpeg 源碼:
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
3. 配置 FFmpeg 編譯腳本
在 FFmpeg 源碼目錄中創建一個?build_android.sh
?腳本,內容如下:
#!/bin/bash# 設置 NDK 路徑
NDK=/d/aaa/ndk/21.4.7075529
# 設置輸出目錄
OUTPUT=/d/output# 定義架構和 API 組合
ARCHS=("arm" "arm64")
CPUS=("armv7-a" "armv8-a")
APIS=(21 21)# 遍歷架構
for i in "${!ARCHS[@]}"; doARCH=${ARCHS[$i]}CPU=${CPUS[$i]}API=${APIS[$i]}# 設置工具鏈TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/windows-x86_64SYSROOT=$TOOLCHAIN/sysroot# 設置編譯器和編譯選項if [ "$ARCH" == "arm" ]; thenCC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clangCROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-elseCC=$TOOLCHAIN/bin/aarch64-linux-android$API-clangCROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-fiCFLAGS="-march=$CPU -Os -fPIC -D__ANDROID_API__=$API"LDFLAGS=""# 配置 FFmpeg./configure \--prefix=$OUTPUT/$ARCH \--enable-shared \--disable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-symver \--disable-asm \--enable-cross-compile \--cross-prefix=$CROSS_PREFIX \--target-os=android \--arch=$ARCH \--sysroot=$SYSROOT \--cc=$CC \--extra-cflags="$CFLAGS" \--extra-ldflags="$LDFLAGS"# 編譯并安裝make cleanmake -j4make install
done
確保你的 NDK 已經解壓或安裝到?D:\aaa
?目錄下。例如,NDK 的完整路徑可能是:
D:\aaa\ndk\25.1.8937393
在 FFmpeg 編譯腳本中,將 NDK 路徑設置為?D:\aaa
?目錄。由于 Windows 路徑使用反斜杠?\
,而在類 Unix 環境(如 MSYS2)中需要使用正斜杠?/
,因此需要將路徑轉換為類 Unix 格式。
4. 運行編譯腳本
-
在 MSYS2 終端中,進入 FFmpeg 源碼目錄。
-
運行編譯腳本:
chmod +x build_android.sh
./build_android.sh
編譯完成后,.so
?文件會生成在?OUTPUT
?指定的目錄中。
5.檢查編譯器版本
運行以下命令檢查?gcc
?或?clang
?的版本:
gcc --version
或
clang --version
6.?升級 GCC 或 Clang
pacman -Syu
pacman -S mingw-w64-x86_64-gcc
如果報錯,檢查
7.?檢查是否安裝了 GCC
運行以下命令檢查 GCC 是否已安裝:
which gcc
pacman -Q mingw-w64-x86_64-gcc
確認 GCC 的安裝路徑
GCC 的可執行文件通常安裝在 MSYS2 的?mingw64/bin
?目錄下。運行以下命令,檢查 GCC 是否存在:
ls /mingw64/bin/gcc.exe
8.配置環境變量(如果需要)
如果?gcc --version
?仍然報錯,可能是因為 GCC 的路徑沒有添加到系統的環境變量中。
-
確保 MSYS2 的?
mingw64/bin
?或?usr/bin
?目錄在環境變量中。 -
打開 MSYS2 終端,運行以下命令檢查路徑:
echo $PATH
如果路徑中沒有?mingw64/bin
?或?usr/bin
,手動添加:
export PATH=/mingw64/bin:$PATH
臨時添加(僅當前終端會話有效)
運行以下命令:
export PATH=/mingw64/bin:$PATH
永久添加(對所有終端會話有效)
編輯你的 shell 配置文件(如?~/.bashrc
?或?~/.bash_profile
),添加以下行:
export PATH=/mingw64/bin:$PATH
然后運行以下命令使配置生效:
source ~/.bashrc