ffmpeg编译(android)

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目录就是我们要的结果了。
    
    

你可能感兴趣的:(ffmpeg编译(android))