FFmpeg(二):Windows下编译全平台架构的FFmpeg

前言

FFmpeg的源码编译,我不知道该怎么说好!难吧?但网上教程好像很简单。不难吧?就没有编译成功几次,一模一样的源码和脚本,也编译不成功!三个月来,只要一闲下来我就查阅各种资料进行各种实验,都达不到想要的结果。上周五,整整编译了一天,都没有编译成功,后来下班了,没关电脑让他编译了一个周末,才完全成功了的。FFmpeg的坑就在这儿,编译都能坑死多半的人!

本片文章主要将如何在Windows下使用MinGW+msys将FFmpeg-3.2.5的源码编译成全平台架构的so库

正文

  • 1 工具准备

平台:win10 64位
ndk版本: r14b
FFmpeg版本:3.2.5
minGW-w64.exe

  • 2 MinGW安装

双击下载的mingw-w64.exe如图配置安装:

FFmpeg(二):Windows下编译全平台架构的FFmpeg_第1张图片
其实这个有点类似迅雷的下载器,配置好一路Next才会下载MingGW,可能有点卡,耐心等待。二次下载安装完成后, 右键我的电脑->属性->高级系统设置->选择“高级”选项->选择下面“环境变量”->系统变量->Path
FFmpeg(二):Windows下编译全平台架构的FFmpeg_第2张图片
然后在开始菜单找到 MinGW Installation Manager并运行:
FFmpeg(二):Windows下编译全平台架构的FFmpeg_第3张图片

运行后大概就是这个样子,选择Basic Setup,
FFmpeg(二):Windows下编译全平台架构的FFmpeg_第4张图片
由于我的已经安装好了,所有有四个是绿色的。在前三个和最后一个(可能顺序不一致)上鼠标右键选择 Mark for installation,最后在 installation->apply changes后弹出的框框中点击 apply进行第三次安装即可
FFmpeg(二):Windows下编译全平台架构的FFmpeg_第5张图片

都完成以后cmd中运行 gcc -v,如图则一切顺利可进行后续操作:
FFmpeg(二):Windows下编译全平台架构的FFmpeg_第6张图片

  • 3 FFmpeg的so库编译
    FFmpeg的编译我完全是按照编译Android下可用的全平台FFmpeg(包含libx264与libfdk-aac)编译的,这里我给出跳转链接就好,但有两点请注意:
    1: 脚本中的ndk路径替换的时候,切记一定是“/”,如:D:/Java/android-ndk-r14b,可以简单的把MinGW+msys理解成模拟的linux系统,linux系统的文件分隔符是正斜杠“/”,而Windows的文件分隔符是反斜杠“\”,所以这个必须替换
    2: 脚本中的darwin-x86_64(mac系统),如果操作系统是Linux则改为linux-x86_64Windows系统则改为windows-x86_64,实际以ndk路径为准,当然我的已经替换过了。
    完成好配置后,进入MinGW的安装路径,如图找到mysy.bat右键管理员运行:
    FFmpeg(二):Windows下编译全平台架构的FFmpeg_第7张图片
    然后cd进入FFmpeg-3.2.5里,如图执行后就静静的等待吧:
    FFmpeg(二):Windows下编译全平台架构的FFmpeg_第8张图片

    最后会在FFmpeg下的android_more下生成每个架构的头文件和so库:
    FFmpeg(二):Windows下编译全平台架构的FFmpeg_第9张图片

结语

有人说我为什么完全照搬别人的东西,也不知道改一下,比如那么多脚本名称,长不说还是别人的名字!这里插播一个小故事,大学我们上计算机基础,有同学发现老师讲的PPT,署名是系里另一位老师的,同学们就嘲笑老师“不备课”就算了,用别人的东西还不知道改一下,老师付之一笑,淡淡的说道,首先我改了的话,性质就不一样,因为但你们并不知道这PPT并不是我做的,这算剽窃,其次我保留署名是为了表明我对他的辛苦付出的感恩。
作为程序员我们最怕的就是重复造轮子,而且还没有别人造的好,更何况这个系列的文章我的确是站在大佬们的肩膀上写下去,你觉得照搬的东西,而我是在尊重原版原作者,感恩开源!

下一节讲:
FFmpeg(三):初识CMakeList和native-lib
内容不多,了解CMake的可直接跳:
FFmpeg(四):CMake移植FFmpeg的静态库到AndroidStudio中

github源码

半停更说明

碎碎念:如果诸君喜欢,请点个赞
更多问题,欢迎加群:584275290

你可能感兴趣的:(FFmpeg(二):Windows下编译全平台架构的FFmpeg)