ffmpegコンパイル(android)

3853 ワード

ffmpegコンパイル(android)
  • 怠け者専用リンク
  • //コンパイルされたsoライブラリを直接ダウンロードし、ffmpeg-androidを使用します.https://github.com/tbxyxs/ffmpeg-android.git

  • コンパイル環境
  • ubuntu 17.10 x64
  • ndk r14b

  • インストールyasm
        sudo apt install yasm
    
  • ffmpegソースgit
        mkdir ffmpeg-android
        cd ffmpeg-android
        git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
        cd ffmpeg
        git checkout -B latest n3.3.7  // :n4.0           ,  ,      n3.3.7  ,n4.0         
    
  • コンパイルスクリプト
        //      copy  ,   ffmpeg_build.sh(       unix  ,     windows     )
        //         NDK_HOME  ,     ndk  
        ==============================       =================================
         #!/bin/bash
        
        export NDK_HOME=/home/tolin/android/android-ndk-r14b
        export NDK_HOST_PLATFORM=linux-x86_64
        
        COMMON_OPTIONS="\
            --prefix=android/ \
            --target-os=android \
            --disable-static \
            --enable-shared \
            --enable-small \
            --disable-programs \
            --disable-ffmpeg \
            --disable-ffplay \
            --disable-ffprobe \
            --disable-doc \
            --disable-symver \
            --disable-asm \
            "
       
        function build_android {
            ./configure \
            --libdir=${PREFIX}/libs/armeabi-v7a \
            --incdir=${PREFIX}/includes/armeabi-v7a \
            --pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \
            --arch=arm \
            --cpu=armv7-a \
            --cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \
            --sysroot="${NDK_HOME}/platforms/android-24/arch-arm/" \
            --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \
            --extra-ldexeflags=-pie \
            ${COMMON_OPTIONS}
            make clean
            make -j8 
            make install
        
            ./configure \
            --libdir=${PREFIX}/libs/arm64-v8a \
            --incdir=${PREFIX}/includes/arm64-v8a \
            --pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \
            --arch=aarch64 \
            --cpu=armv8-a \
            --cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \
            --sysroot="${NDK_HOME}/platforms/android-24/arch-arm64/" \
            --extra-ldexeflags=-pie \
            ${COMMON_OPTIONS} 
            make clean
            make -j8 
            make install
        
            ./configure \
            --libdir=${PREFIX}/libs/x86 \
            --incdir=${PREFIX}/includes/x86 \
            --pkgconfigdir=${PREFIX}/pkgconfig/x86 \
            --arch=x86 \
            --cpu=i686 \
            --cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \
            --sysroot="${NDK_HOME}/platforms/android-24/arch-x86/" \
            --extra-ldexeflags=-pie \
            ${COMMON_OPTIONS} 
            make clean
            make -j8 
            make install
        
            ./configure \
            --libdir=${PREFIX}/libs/x86_64 \
            --incdir=${PREFIX}/includes/x86_64 \
            --pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \
            --arch=x86_64 \
            --cpu=x86_64 \
            --cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \
            --sysroot="${NDK_HOME}/platforms/android-24/arch-x86_64/" \
            --extra-ldexeflags=-pie \
            ${COMMON_OPTIONS}
            make clean
            make -j8 
            make install
            
        };
        PREFIX=$(pwd)/android/$CPU 
        build_android
    
  • スクリプトに実行権限を付与
        // ffmpeg_build.sh    ffmpeg/   , ./configure    。
        
        chmod +x ffmpeg_build.sh //       
    
  • 実行スクリプト
        ./ffmpeg_build.sh  //       ,             android  ,  libs           。