zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    软件新人问题解答(一)
    项目上线流程
    面试题:如何测试登录功能
    软件测试人员在工作中如何运用Linux
    认识接口测试
    刚入职的新人如何快速了解公司业务
    软件测试人员每天的工作日常
    面试题分析(二)如何避免漏测
    [谨记]记线上事故并分析原因
    面试经验分享:遇到不会回答的问题怎么回答才好
  • 原文地址:https://www.cnblogs.com/jacobchen/p/14333172.html
Copyright © 2011-2022 走看看