91 lines
2.8 KiB
Bash
Executable File
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!" |