android_multiviewwer/ffmpeg/build_ffmpeg.sh
2025-08-27 15:09:05 +09:00

91 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# 첫 번째 오류에서 스크립트 중단
set -e
# --- 사용자 설정: 이 부분을 자신의 환경에 맞게 수정하세요 ---
# Android NDK가 설치된 절대 경로 (매우 중요!)
NDK=~/Library/Android/sdk/ndk/29.0.13846066 # 예시 경로입니다. 자신의 NDK 버전 경로로 바꾸세요.
# 빌드할 안드로이드 API 레벨
API=26
# --- 설정 끝 ---
# 빌드 대상 아키텍처 목록
ARCHITECTURES="arm64-v8a" # armeabi-v7a x86_64 등을 추가할 수 있습니다.
# FFmpeg 소스 코드 폴더 (이 스크립트가 있는 폴더)
SOURCE_DIR="$(pwd)"
# 최종 결과물이 저장될 위치 (app/src/main/jniLibs)
OUTPUT_DIR="$SOURCE_DIR/../app/src/main/jniLibs"
# OS 확인 (macOS vs Linux)
HOST_TAG=""
if [[ $(uname) == "Darwin" ]]; then
HOST_TAG="darwin-x86_64"
elif [[ $(uname) == "Linux" ]]; then
HOST_TAG="linux-x86_64"
else
echo "Unsupported host OS. Must be Linux or macOS."
exit 1
fi
# 각 아키텍처에 대해 빌드 실행
for ARCH in $ARCHITECTURES; do
echo "Building for $ARCH"
# 아키텍처에 맞는 FFmpeg --arch 값 설정
FFMPEG_ARCH=""
if [ "$ARCH" == "arm64-v8a" ]; then
FFMPEG_ARCH="aarch64"
elif [ "$ARCH" == "armeabi-v7a" ]; then
FFMPEG_ARCH="arm"
elif [ "$ARCH" == "x86_64" ]; then
FFMPEG_ARCH="x86_64"
elif [ "$ARCH" == "x86" ]; then
FFMPEG_ARCH="x86"
fi
# NDK 툴체인 경로 설정
TOOLCHAIN="${NDK}/toolchains/llvm/prebuilt/${HOST_TAG}"
# 임시 빌드 폴더 생성 및 이동
BUILD_DIR_TEMP="${SOURCE_DIR}/build_temp/${ARCH}"
mkdir -p "$BUILD_DIR_TEMP"
cd "$BUILD_DIR_TEMP"
# configure 스크립트 실행
${SOURCE_DIR}/configure \
--prefix="${OUTPUT_DIR}/${ARCH}" \
--arch=${FFMPEG_ARCH} \
--target-os=android \
--cc="${TOOLCHAIN}/bin/${FFMPEG_ARCH}-linux-android${API}-clang" \
--cxx="${TOOLCHAIN}/bin/${FFMPEG_ARCH}-linux-android${API}-clang++" \
--ar="${TOOLCHAIN}/bin/llvm-ar" \
--as="${TOOLCHAIN}/bin/llvm-as" \
--ld="${TOOLCHAIN}/bin/ld.lld" \
--nm="${TOOLCHAIN}/bin/llvm-nm" \
--ranlib="${TOOLCHAIN}/bin/llvm-ranlib" \
--strip="${TOOLCHAIN}/bin/llvm-strip" \
--enable-cross-compile \
--enable-shared \
--disable-static \
--disable-doc \
--disable-programs \
--enable-protocol=pipe \
--disable-everything \
--enable-decoder=h264,hevc,mpeg4,mjpeg,png \
--enable-demuxer=mov,mp4,m4a,3gp,3g2,mj2,mjpeg,png_pipe \
--enable-parser=h264,hevc,mpeg4video \
--enable-bsf=h264_mp4toannexb,hevc_mp4toannexb
# 빌드 및 설치
make -j8
make install
# 소스 폴더로 복귀
cd "$SOURCE_DIR"
done
echo "All builds finished!"