Mac에서 NDK 컴파일을 사용하여 FFmpeg 생성 so 파일

2945 단어
전제: NDK가 설치되어 있고 정상적으로 사용할 수 있습니다.
구체적인 단계:
  • FFmpeg 홈페이지를 방문하여 FFmpeg 압축 패키지를 다운로드하고 압축을 풀다.
  • 컴파일된 so 라이브러리가 안드로이드에 적합하도록 프로필을 수정해야 합니다.
  • 편집기(sublime)로/ffmpeg-3.2.4/configure 파일을 엽니다.
  • SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
    SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
    

    아래 설정으로 위의 설정을 바꾸십시오
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
    SLIB_INSTALL_LINKS='$(SLIBNAME)'
    
  • ffmpeg-3.2.4/에서buildffmpeg를 만듭니다.sh 파일, 다음 내용을 이 파일로 복사
  • #!/bin/bash
    export TMPDIR=/Users/yeoggc/Dev/DevProject3/FFmpegProject/tempdirforffmpeg
    NDK=/Users/yeoggc/Library/Android/sdk/ndk-bundle
    SYSROOT=$NDK/platforms/android-18/arch-arm/
    TOOLCHAIN=/Users/yeoggc/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
    CPU=arm
    PREFIX=/Users/yeoggc/Dev/DevProject3/FFmpegProject/outputso/arm/
    ADDI_CFLAGS="-marm"
    function build_one
    {
    ./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-doc \
    --disable-symver \
    --enable-small \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    }
    build_one
    
  • 수정 중 다섯 가지 내용은
  • 임시 디렉터리 지정 export TMPDIR=/Users/yeoggc/Dev/Dev Project3/FFmpeg Project/tempdirforffmpeg는 임시 디렉터리를 지정합니다. 모든 경로가 가능하지만, 존재하지 않으면 오류가 발생할 수 있습니다.

  • NDK 경로 지정 NDK=/Users/yeoggc/Library/Android/sdk/ndk-bundle
  • NDK Platform 버전 SYSROOT=$NDK/platforms/android-18/arch-arm/여기서 지정한 ndk platform 경로를 사용하려면 반드시 목표 기기보다 낮은 버전을 선택해야 한다. 예를 들어 핸드폰이android-15 버전이면 15 이하
  • 를 선택해야 한다.
  • 지정 컴파일 도구 체인 $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x8664
  • 컴파일된 설치 디렉토리 PREFIX=./android/$CPU 이 디렉터리는 ffmpeg에서 컴파일한 so의 출력 디렉터리입니다.include와lib 폴더가 생성됩니다.
  • 설정buildffmpeg.sh 권한 및 실행
  • 터미널에서 다음 명령을 입력하여 사용 권한을 설정합니다.
    chmod 777 /Users/yeoggc/Dev/DevProject3/FFmpegProject/ffmpeg-3.2.4/build_android.sh
    

    터미널 및 ffmpeg-3.2.4 경로에서 다음 명령을 입력합니다.
    ./build_ffmpeg.sh
    

    10분도 안 되어sh 파일에 지정된 임시 디렉터리를 엽니다. 이 디렉터리에include와lib 두 개의 폴더를 생성하고lib 폴더에 있는 pkgconfig 디렉터리와 so의 링크 파일을 삭제하고 so 파일만 보존한 다음include와lib 두 개의 디렉터리를 복사합니다. 이것이 바로 제가 원하는 것입니다.
    참조:
  • ffmpeg-compile-shared-library-for-android
  • FFmpeg 중 하나ForAndroid
  • 컴파일

    좋은 웹페이지 즐겨찾기