美文网首页FFmpegFFMpegFFmpeg
FFMpeg系列一:Mac上FFMpeg4.0.2编译

FFMpeg系列一:Mac上FFMpeg4.0.2编译

作者: 噬魂Miss | 来源:发表于2018-08-07 13:10 被阅读106次

    嗨~,大家好!
    我叫石头~
    mac 上编译FFMpeg4.0.2

    亲自测试可以用,可以放心的往下读~~~~

    凝视物语

    编译环境

    • mac系统版本:10.13.6

    • NDK版本: r16b版本

    • ffmpeg版本:4.0.2

      对应自己的系统选择ndk

    选择自己系统对应的ndk


    环境变量配置

    命令行中配置:

    1. 输入 vim ~/.bash_profile 或者 open ~/.bash_profile
    2. 加入
    //  /Users/shitou/Downloads/android-ndk-r16b 换成你自己的r16b的路径
    // 命令行进入r16b的文件夹,输入pwd,复制路径
    export NDK_HOME=/Users/shitou/Downloads/android-ndk-r16b
    export PATH=$PATH:$NDK_HOME/
    
    1. 等等还有第三步呢,输入 source ~/.bash_profile 使环境生效
    编译脚本

    强调下 下面的脚本是没有开启neon跟硬解码的

    1. 创建一个文件比如 ffmpeg-build.sh, 复制粘贴下面的内容
      记得修改自己的 ndk路径 , 编译之后输入的目录
    #!/bin/bash
    ADDI_CFLAGS="-marm"
    API=27
    PLATFORM=arm-linux-androideabi
    CPU=armv7-a
    NDK=/Users/shitou/Documents/android-ndk-r16b # 修改自己本地的ndk路径
    SYSROOT=$NDK/platforms/android-$API/arch-arm/
    ISYSROOT=$NDK/sysroot
    ASM=$ISYSROOT/usr/include/$PLATFORM
    TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
    OUTPUT=/Users/cvte/Documents/share #自己指定一个输出目录
    function build_one
    {
    ./configure \
    --prefix=$OUTPUT \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=android \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
    --extra-ldflags="-marm" \
    $ADDITIONAL_CONFIGURE_FLAG
      make clean
      make 
      make install
    }
    echo "开始编译ffmpeg..."
    build_one
    echo "完成编译..."
    
    
    1. ffmpeg-build.sh放入ffmpeg4.0.2 文件夹中

      加入脚本文件
    2. 修改编译脚本的权限 比如ffmpeg-build.sh

    // 命令行进入ffmpeg4.0.2文件夹
    chmod 777 ffmpeg-build.sh
    
    1. 执行 ./ffmpeg-build.sh
      5.编译完成之后会出现:
      编译成功会出现

    目录所在地:


    编译之后的文件夹

    好了,到这里应该大家都编译成功了吧.


    接下来我们应该是讲怎么导入生成的这些文件进入Android studio,不过先不急,让我们
    先说说4.x.x跟之前3.x.x的区别,不然等下你用之前的代码第一句就有问题,哈哈~~,先听我唠叨唠叨.
    我们可能看之前的博客,第一句代码就是

    //注册所有封装器 -- 4.x以上废弃
    av_register_all();
    

    结果发现

    attribute_deprecated
    void av_register_all(void);
    

    与此同时,解码器的注册函数也废弃掉了

    //注册所有的解码器 -- 4.x以上废弃
    avcodec_register_all();
    

    所有说4.x的版本版本跟3.x还有一些不同的,

    这些注册函数都不需要我们手动调用了,组件可以直接用

    但是我们怎么查找哪些方法有被废弃,或者被替代呢?
    在我们从官网下载下来的ffmpeg4.0.2文件夹中,找到doc文件夹,里面有个APIchanges的文件,用编辑器打开,我们就能发现在这个版本里面的api变更.

    ctrl+F查找对应的api

    现在我们就能对比跟之前的版本,哪些api有变化了.
    接下来进入Android studio集成ffmpeg的部分.

    相关文章

      网友评论

      • 霸气明哥:你好,你这Android studio集成ffmpeg的部分也尽快贴出来吧.我现在弄一半卡到了.
      • 7725a3a9f83b:楼主,你文尾的链接错了

      本文标题:FFMpeg系列一:Mac上FFMpeg4.0.2编译

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