美文网首页
Mac下编译安卓用的FFmpeg

Mac下编译安卓用的FFmpeg

作者: hjm1fb | 来源:发表于2017-09-19 19:14 被阅读36次
    1. 先到官网下载最新版(我用的是3.3.4)并解压
      有时候编译还需要yasm,因此可以先通过homebrew 安装yasm
    brew install yasm
    
    1. 因为是在Mac下编译,而且是给安卓用的,需要改几个参数。
      根目录下找到configure文件,用编辑器打开(比如sublime)
      找到如下的代码块,大概在3304行:
    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)'
    

    然后在终端上cd 进入解压的ffmpeg文件夹根目录
    输入

    sh build.sh
    

    先别按enter键,这个时候,你可能发现, build.sh还没创建 🙂
    别担心,咱创建一下,文件内容如下,请根据注释修改:

    #!/bin/bash
    #换成自己的NDK地址
    NDK=/Users/apple/Documents/Android/NDK/android-ndk-r14b
    #换成自己要指定的API版本,这里是min_sdk为16 编译arm架构的意思
    SYSROOT=$NDK/platforms/android-16/arch-arm/
    #目标机器架构平台对应的工具链,我们是arm就选arm
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
    # 目标机器架构平台
    CPU=armv7-a
    #输出路径 换成自己的,真实存在的路径,真实存在,重要的事情说两遍
    PREFIX=/Users/apple/Documents/ffmpeg/output
    ADDI_CFLAGS="-marm"
    function build_one
    {
    ./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --enable-gpl \
    --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
    

    然后就可以愉快的按下enter键,会在我们指定好的文件夹下生产对应的文件。
    注意生成的so文件必须是以.so结尾,不然肯定是编译出问题了,而AS也是靠.so的后缀来识别是so文件的。
    参考自:
    在Mac下编译 FFmpeg
    FFMPEG学习第一篇--android studio 2.3 Cmake 编译并使用ffmpeg的动态so库
    感谢~

    相关文章

      网友评论

          本文标题:Mac下编译安卓用的FFmpeg

          本文链接:https://www.haomeiwen.com/subject/jmdgsxtx.html