#!/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!"