环境:win10 64位,VS2019,MSYS(是一个小型的GNU环境,包括基本的bash,make等等。与MinGW,Cygwin等工具类似,主要是能够在windows下使用Linux的命令和库)

环境配置

1.进入vs2019的命令行编译工具

此处选择x64的工具来进行。

2.在命令行编译工具中打开MSYS

进入到msys的安装目录中修改 msys2_shell.cmd 文件,将其中的外部环境继承项 MSYS2_PATH_TYPE=inherit 的注释打开

然后打开64位编译工具,然后进入到MSYS的安装目录,并拉起msys的环境

进入到msys窗口检查是否能使用vs2019的编译命令,并将窗口的编码方式更改位GBK来消除乱码

3.在msys中安装需要的依赖库

pacman -S nasm #汇编工具
pacman -S yasm #汇编工具
pacman -S make cmake #常规编译工具
pacman -S diffutils  # 比较工具,ffmpeg configure 生成makefile时用到
pacman -S pkg-config # 库配置工具,编译支持x264和x265会用到
pacman -S git  # 从版本库下载源码

若出现无法获取安装包的情况,则需要换源,进入到msys64\etc\pacman.d 目录下有三个文件。

mirrorlist.msys:

##
## MSYS2 repository mirrorlist
#### Primary
Server = https://repo.msys2.org/msys/$arch/
## Mirrors
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch/
Server = https://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
Server = https://mirror.yandex.ru/mirrors/msys2/msys/$arch/
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://mirror.bit.edu.cn/msys2/msys/$arch/
Server = https://mirror.selfnet.de/msys2/msys/$arch/
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/msys/$arch/
Server = https://mirror.jmu.edu/pub/msys2/msys/$arch/
Server = https://ftp.cc.uoc.gr/mirrors/msys2/msys/$arch/
Server = https://ftp.acc.umu.se/mirror/msys2.org/msys/$arch/
Server = https://mirrors.piconets.webwerks.in/msys2-mirror/msys/$arch/
Server = https://quantum-mirror.hu/mirrors/pub/msys2/msys/$arch/
Server = https://mirrors.dotsrc.org/msys2/msys/$arch/
Server = https://mirror.ufro.cl/msys2/msys/$arch/
Server = https://mirror.clarkson.edu/msys2/msys/$arch/
Server = https://ftp.nluug.nl/pub/os/windows/msys2/builds/msys/$arch/
Server = https://download.nus.edu.sg/mirror/msys2/msys/$arch/
Server = https://ftp.osuosl.org/pub/msys2/msys/$arch/
Server = https://fastmirror.pp.ua/msys2/msys/$arch/

mirrorlist.mingw64:

##
## 64-bit Mingw-w64 repository mirrorlist
#### Primary
Server = https://repo.msys2.org/mingw/x86_64/
## Mirrors
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64/
Server = https://www2.futureware.at/~nickoe/msys2-mirror/mingw/x86_64/
Server = https://mirror.yandex.ru/mirrors/msys2/mingw/x86_64/
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://mirror.bit.edu.cn/msys2/mingw/x86_64/
Server = https://mirror.selfnet.de/msys2/mingw/x86_64/
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/mingw/x86_64/
Server = https://mirror.jmu.edu/pub/msys2/mingw/x86_64/
Server = https://ftp.cc.uoc.gr/mirrors/msys2/mingw/x86_64/
Server = https://ftp.acc.umu.se/mirror/msys2.org/mingw/x86_64/
Server = https://mirrors.piconets.webwerks.in/msys2-mirror/mingw/x86_64/
Server = https://quantum-mirror.hu/mirrors/pub/msys2/mingw/x86_64/
Server = https://mirrors.dotsrc.org/msys2/mingw/x86_64/
Server = https://mirror.ufro.cl/msys2/mingw/x86_64/
Server = https://mirror.clarkson.edu/msys2/mingw/x86_64/
Server = https://ftp.nluug.nl/pub/os/windows/msys2/builds/mingw/x86_64/
Server = https://download.nus.edu.sg/mirror/msys2/mingw/x86_64/
Server = https://ftp.osuosl.org/pub/msys2/mingw/x86_64/
Server = https://fastmirror.pp.ua/msys2/mingw/x86_64/

mirrorlist.mingw32:

##
## 32-bit Mingw-w64 repository mirrorlist
#### Primary
Server = https://repo.msys2.org/mingw/i686/
## Mirrors
Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686/
Server = https://www2.futureware.at/~nickoe/msys2-mirror/mingw/i686/
Server = https://mirror.yandex.ru/mirrors/msys2/mingw/i686/
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://mirror.bit.edu.cn/msys2/mingw/i686/
Server = https://mirror.selfnet.de/msys2/mingw/i686/
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/mingw/i686/
Server = https://mirror.jmu.edu/pub/msys2/mingw/i686/
Server = https://ftp.cc.uoc.gr/mirrors/msys2/mingw/i686/
Server = https://ftp.acc.umu.se/mirror/msys2.org/mingw/i686/
Server = https://mirrors.piconets.webwerks.in/msys2-mirror/mingw/i686/
Server = https://quantum-mirror.hu/mirrors/pub/msys2/mingw/i686/
Server = https://mirrors.dotsrc.org/msys2/mingw/i686/
Server = https://mirror.ufro.cl/msys2/mingw/i686/
Server = https://mirror.clarkson.edu/msys2/mingw/i686/
Server = https://ftp.nluug.nl/pub/os/windows/msys2/builds/mingw/i686/
Server = https://download.nus.edu.sg/mirror/msys2/mingw/i686/
Server = https://ftp.osuosl.org/pub/msys2/mingw/i686/
Server = https://fastmirror.pp.ua/msys2/mingw/i686/

重新运行 msys64\msys2.exe。测试一下软件源是否可用:

pacman -Sy

下载x264、x265和aac源码并进行编译

X264:https://www.videolan.org/developers/x264.html

X265: https://www.x265.org/

fdk-aac: https://github.com/mstorsjo/fdk-aac

1.编译x264(在MSYS下编译)

cd x264-master
CC=cl ./congfigure --enable-shared
make -j16
make install 

2.编译x265(在MSYS下调用外部环境的cmake编译)

可以先将MSYS环境中的cmake换一个名字,然后再进行以下操作,保证调用的是外部环境的cmake

cd x265_3.3/build/msys-cl
./make-Makefiles.sh
nmake install #需要在root权限下进行,在开启vs编译工具时使用管理员权限打开

安装完成后,进入到编译安装目录下,将lib库拷贝到MSYS2中的 /usr/local 目录下

同时修改 .pc文件,将其中的路径更换为 /usr/local

3.编译fdk-aac(在外部环境编译,不使用MSYS)

打开vs2019编译环境即可进行一下操作

nmake -f Makefile.vc
nmake -f Makefile.vc -prefix=.\install install

安装时,在vs2019编译工具中安装不成功,报错如下:

因此切换到MSYS2环境下进行安装

由于没有生成 .pc文件,因此需要将fdk-aac.pc.in 文件更名为fdk-acc.pc,并进行修改后,放入到/usr/local/lib/pkgconfig

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/includeName: Fraunhofer FDK AAC Codec Library
Description: AAC codec library
Version:
Libs: -L${libdir} -lfdk-aac
Libs.private:
Cflags: -I${includedir}

编译ffmpeg

源码:https://ffmpeg.org/download.html

CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265#--prefix=./install --toolchain=msvc 指定安装路径和工具链vs
#--enable-shared 编译为动态链接库
#--disable-xxx  暂时不编译工具
#--enable-gpl --enable-libx264 --enable-libx265 支持x264 x265
#--enable-libfdk-aac --enable-nonfree aac音频编码 aac必须包含-enable-nonfree

报错1:找不到头文件

解决:将/usr/local/lib/pkgconfig 剪切粘贴到/mingw64/lib

报错2:找不到.lib

解决:将/usr/local/lib/libx264.dll.lib 更名为 libx264.lib

报错3:找不到x265的库

解决:将/usr/local/lib/libx265.lib 重命名为x265.lib

不报错后,成功生成Makefile文件,然后执行

make -j8
make install

完成整个FFMPEG在Windos下的编译!

FFMPEG源码编译(Windows篇)相关推荐

  1. FFmpeg学习之八(FFmpeg源码编译)

    FFmpeg学习之八(FFmpeg源码编译) Mac下 FFmpeg源码编译 安装 1. 使用终端安装FFmpeg 2. 手动编译 2.1 编译环境 - Xcode 2.2 安装依赖库 2.3 安装F ...

  2. Grafana源码编译--Windows

    Grafana源码编译–Windows 准备工作 1.系统:Windows 2.软件: (1)GO:尽量使用跟Grafana源码版本一样的Go版本,通过Github上https://github.co ...

  3. ThingsBoard 3.3.1源码编译-windows版

    ThingsBoard 3.3.1源码编译-windows版 前期环境准备 环境版本尽量保持一致: 建议先把文章看完再操作,不要直接看一步操作一步! 编译过程要有耐心!不要看到执行到哪一步很久不动了, ...

  4. FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库

    先决条件: 需要安装msys2(是一个在windows中模拟linux操作系统的软件) 由于在linux中编译ffmpeg比较简单, 所以利用一下msys2, 直接去官网下载安装即可 需要安装visu ...

  5. UOS系统下FFmpeg源码编译安装及注意事项

    条件 当前编译环境:国产UOS系统(基于linux),CPU是ARM架构 需要安装ffmpeg 3.4版本. 通过源码编译进行安装使用 下载源码 在github上将ffmpeg源码下载到本地:下载地址 ...

  6. Android FFmpeg源码编译及在Android studio的集成

    准备工具: 1,ubuntu server 18.04.4(其他发行版服务器或桌面版都行,我这里以ubuntu为例,可以使用虚拟机,也可以使用公网的服务器) 2,ndk R17c linux版 (下载 ...

  7. RedisDesktopManager源码编译windows版(基于2022.1版本)

    一.环境依赖 1.Git 2.Visual Studio Community 2019 3.Qt 5.x 4.Python 3.9 5.CMake 6.Windows Openssl 7.NSIS 8 ...

  8. Firefox源码编译(Windows)

    1.系统要求 内存:最低4GB,推荐8GB+. 磁盘空间:至少40GB的可用磁盘空间. 操作系统:Windows10. 2.系统准备 下载安装Visual Studio 2019的构建工具,选择以下项 ...

  9. 我的docker随笔13:docker源码编译进阶篇

    本文与前面文章相同,但多了一些分析的步骤. 一.环境搭建 docker的编译,需要在宿主机预先安装docker软件.因为编译docker的源码时,会构建一个docker镜像并运行,在这个容器里面进行b ...

最新文章

  1. Fedora 14下安装使用rarlinux
  2. Spring MVC常用注解说明
  3. 搭乘“云原生”硬核实践之舟,移动云助力开发者畅游未来创新之旅
  4. arm-linux-readelf
  5. php 对象方法作为参数,在C++中对象如何作为参数传递和返回?(代码示例)
  6. WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能
  7. 309. Best Time to Buy and Sell Stock with Cooldown 最佳买卖股票时机含冷冻期
  8. 刪除github上的一個repository
  9. 走近分形与混沌(part15)--有钱的人会愈来愈有钱,不一定是在于他们的能力,而是因为财富会产生财富
  10. typora 公式_如何用Typora写Markdown上传至知乎
  11. python1.学生管理系统
  12. 大数据在金融领域的应用及问题时
  13. python会什么比c慢
  14. 一个完整的、全面k8s化的集群稳定架构(值得借鉴)
  15. 第一次爬虫之Select 小猪短租
  16. PS如何制作炫酷的字体,有什么好的教程吗
  17. 微软量子计算“天使梦”破碎,扬言的巨大胜利终究是一个“错误”
  18. C#组件系列——NPOI使用手册
  19. 玩转Luat——导读
  20. C语言程序设计卢萍,卢萍

热门文章

  1. 比情商智商重要的是财商——财商!
  2. Android Studio操作
  3. 一元多项式的除法C++实现
  4. python-docx结合lxml读取word文档段落格式、字体格式等信息
  5. 恢复微信撤回的图片(不容root,极其简单)
  6. scrum立会报告+燃尽图(第三周第三次)
  7. 将本地文件上传到码云(gitee远程仓库)
  8. 【02】水果蔬菜识别系统-基于tensorflow2.3开发
  9. 【线代】矩阵的秩和线性方程组的解的情况
  10. 最优传输系列(一):最优传输入门及Monge-Kantorovitch Problem