使用msys2編譯 ffmpeg.
第一步下載安裝 msys2 :msys2 下載地址:https://sourceforge.net/projects/msys2/
安裝完成后打開Mingw-w64锥咸,輸入命令:pacman -Syu 進行更新
執(zhí)行完成后會報如下警告厅翔,按ctrl + c 退出即可
然后執(zhí)行:pacman -S yasm 和?pacman -S make 安裝對應的包
第二步下載NDK,ndk下載地址:https://developer.android.google.cn/ndk/downloads/
第三步下載 ffmpeg, 我下載的是 ffmpeg-4.0.3(不同的版本編譯可能會不成功)?
ffmpeg下載地址:http://www.ffmpeg.org/download.html? 匕得。
第四步:在ffmpeg里新建一個shell腳本 纲刀,build_android.sh
build_android.sh 內(nèi)容:
#!/bin/bash
export TMPDIR=$(pwd)/temp
NDK=C:/android/sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-Os -fpic -marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--enable-asm \
--enable-neon \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--enable-pthreads \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-runtime-cpudetect \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one?
--enable-cross-compile? 打開交叉編譯扣甲。
–cross-prefix=PREFIX?設定交叉編譯工具鏈的前綴,不算gcc/nm/as命令
--arch=arm??目標架構
--prefix=$PREFIX? 生成文件保存路徑?
--enable-shared? 生成動態(tài)庫
--disable-static? 禁止生成靜態(tài)庫
更多的configure選項說明:?https://blog.csdn.net/fengsh998/article/details/79443503? 可以參考這篇文章
然后到 ffmpeg 更目錄下執(zhí)行命令? :?./build_android.sh? 就已經(jīng)開始編譯了笤休。
等待編譯完成就會在ffmpeg 目錄下多一個 android 目錄,
能找到這幾個so 文件就已經(jīng)編譯成功
下面說一下遇到的坑:?
1.NDK路徑填錯戈轿,直接復制目錄凌受,"\" 沒有改成 "/",
2. 下載的NDK思杯,沒有 include 包?
3. 報xxx命令找不到胜蛉,編譯需要的包沒有安裝完全。要是不知道是那個包沒有裝 色乾,試下這個命令:pacman -S base-devel? 誊册。