• mac上编译Android的arm64位ffmpeg


    在涉及对视频进行操作的场景,ffmpeg可以很好地满足一些需求,下面以arm64的Android系统为例,记录ffmpeg编译的实现。

    一、下载源码

        可以通过git的方式获取源码,这里直接从ffmpeg.org下载到4.3.1的tar包

    二、配置和编译

      ffmpeg的编译方式跟其他unix*开源工具类似,先configure再make即可。但这里我们是要在mac上编译用于Android的二进制文件,所以需要使用交叉编译工具链。

      1. 引用Android ndk编译,这里使用的是ndk r21版本,亲测可用

    NDK=$ANDROID_NDK_HOME

      2. 指定需要用到的toolchain和sysroot路径

    TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
    SYSROOT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
    CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang # c compiler path
    CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++ # c++ compiler path

      3. 根据实际需求打开或关闭ffmpeg的feature,这些可以从configure中获得

    ./configure --enabe-* --disable-*
    make
    make install

      4. 最后放出完整脚本

    #!/bin/bash
    NDK=$ANDROID_NDK_HOME
    
    ARCH=aarch64
    TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
    SYSROOT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
    ROOT_FOLDER=$PWD/..
    OUTPUT=$ROOT_FOLDER/output/android/ffmpeg/arm64
    CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang # c compiler path
    CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++ # c++ compiler path
    
    ADDI_CFLAGS="-fPIE -pie -mfloat-abi=softfp -mfpu=neon"
    ADDI_LDFLAGS="-fPIE -pie"
    
    echo "sysroot:$SYSROOT"
    echo "output:$OUTPUT"
    echo "arch:$ARCH"
    echo "CC:$CC"
    echo "CXX:$CXX"
    
    ./configure 
        --disable-shared 
        --enable-static 
        --disable-stripping 
        --enable-debug 
        --prefix=$OUTPUT 
        --toolchain=clang-usan 
        --enable-cross-compile 
        --target-os=linux 
        --arch=$ARCH 
        --sysroot=$SYSROOT 
        --cc=$CC 
        --cxx=$CXX 
        --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- 
        --extra-cflags="$ADDI_CFLAGS" 
        --extra-ldflags="$ADDI_LDFLAGS" 
        --extra-libs=-ldl 
        --disable-avdevice 
        --disable-ffplay 
        --disable-network 
        --disable-doc 
        --disable-symver 
        --disable-ffprobe 
        --disable-opencl 
        --enable-neon 
        --enable-gpl 
        --enable-pthreads 
        --enable-encoder=aac 
        --enable-encoder=gif 
        --enable-encoder=mpeg4 
        --enable-encoder=yuv4 
        --enable-decoder=h264 
        --enable-bsf=h264_mp4toannexb 
        --enable-bsf=hevc_mp4toannexb 
        --enable-bsf=mpeg4_unpack_bframes
        
    rm -rf $OUTPUT
    make clean
    make -j9
    make install

      

  • 相关阅读:
    模拟登入教务处(header)
    Hash开散列 拉链法
    struts2--上传总结(限制大小和类型 非法上传的跳转)
    struts2--文件上传大小
    struts2--文件上传类型3
    Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”
    毕业设计论文撰写指南(06)—— 第四章 ***系统分析与结构设计
    毕业设计论文撰写指南(05)—— 第三章 ****系统需求分析
    毕业设计论文撰写指南(04)—— 第二章 相关技术
    毕业设计论文撰写指南(03)—— 第一章 引言
  • 原文地址:https://www.cnblogs.com/jacobchen/p/14333172.html
Copyright © 2020-2023  润新知