ubuntu上基于NDK21編譯ffmpeg4.2.2

下載ffmpeg4.2.2源代碼,https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/192d1d34eb3668fa27f433e96036340e1e5077a0

  1. 解壓cd 到該目錄里面

  2. 創(chuàng)建build目錄
    mkdir build

  3. 復制build.sh到build目錄, 注意修改ANDROID_NDK_HOME變量


#!/bin/bash


ANDROID_ABI=arm64
BUILD_DIR_FFMPEG="$( cd "$( dirname "$0" )" && pwd )"
BASE_DIR="$( cd "$( dirname "$BUILD_DIR_FFMPEG" )" && pwd )"

TARGET_TRIPLE_MACHINE_BINUTILS=arch64
HOST_TAG="linux-x86_64"

# 自己的ndk的安裝位置
ANDROID_NDK_HOME=/home/lv/Android/Sdk/ndk/21.0.6113669
TOOLCHAIN_PATH=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/${HOST_TAG}
SYSROOT_PATH=${TOOLCHAIN_PATH}/sysroot

BUILD_DIR_FFMPEG="$( cd "$( dirname "$0" )" && pwd )"
TARGET=aarch64-linux-android21
FAM_CC=${TOOLCHAIN_PATH}/bin/${TARGET}-clang
FAM_CXX=${FAM_CC}++
FAM_LD=${FAM_CC}
FAM_AS=${FAM_CC}
FAM_NM=${TOOLCHAIN_PATH}/bin/aarch64-linux-android-nm


../configure \
--prefix=${BUILD_DIR_FFMPEG}/android_out/${ANDROID_ABI} \
--enable-cross-compile \
--target-os=android \
--arch=aarch64 \
--sysroot=${SYSROOT_PATH} \
--cc=${FAM_CC} \
--cxx=${FAM_CXX} \
--ld=${FAM_LD} \
--ar=${FAM_AR} \
--as=${FAM_AS} \
--nm=${FAM_NM} \
--ranlib=${TOOLCHAIN_PATH}/bin/aarch64-linux-android-ranlib \
--strip=${TOOLCHAIN_PATH}/bin/aarch64-linux-android-strip \
--enable-shared \
--disable-static \
--disable-avdevice \
--disable-debug \
--enable-jni \
--pkg-config=/usr/bin/pkg-config

  1. 給該build.sh添加可執(zhí)行權限
    chmod +x build.sh

  2. 執(zhí)行腳本文件: ./build.sh
    內部其實做了一些參數的配置,并且執(zhí)行父目錄的 ../configure

  3. 執(zhí)行編譯: make 或make -j8 或者-j16
    步驟5會生成makefile文件, make即編譯出.so

  4. make install
    把編譯產物安裝到build.sh指定的目錄中

ok, 拿到頭文件和.so庫就可以在android studio上使用了
這里的編譯腳本只適用于arm-v8a, 更多架構的編譯腳本,可參考
https://github.com/Javernaut/ffmpeg-android-maker

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容