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

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

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

《FFMpeg系列一:Mac上FFMpeg4.0.2编译》 凝视物语

编译环境

  • mac系统版本:10.13.6

  • NDK版本: r16b版本

  • ffmpeg版本:4.0.2

    《FFMpeg系列一:Mac上FFMpeg4.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 文件夹中

    《FFMpeg系列一:Mac上FFMpeg4.0.2编译》 加入脚本文件

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

// 命令行进入ffmpeg4.0.2文件夹
chmod 777 ffmpeg-build.sh
  1. 执行 ./ffmpeg-build.sh
    5.编译完成之后会出现:
    《FFMpeg系列一:Mac上FFMpeg4.0.2编译》 编译成功会出现

目录所在地:

《FFMpeg系列一:Mac上FFMpeg4.0.2编译》 编译之后的文件夹

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

接下来我们应该是讲怎么导入生成的这些文件进入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变更.

《FFMpeg系列一:Mac上FFMpeg4.0.2编译》 ctrl+F查找对应的api

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

    原文作者:噬魂Miss
    原文地址: https://www.jianshu.com/p/42c27b6da3ff
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞