FFMPEG源码编译(Windows篇)
环境: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篇)相关推荐
- FFmpeg学习之八(FFmpeg源码编译)
FFmpeg学习之八(FFmpeg源码编译) Mac下 FFmpeg源码编译 安装 1. 使用终端安装FFmpeg 2. 手动编译 2.1 编译环境 - Xcode 2.2 安装依赖库 2.3 安装F ...
- Grafana源码编译--Windows
Grafana源码编译–Windows 准备工作 1.系统:Windows 2.软件: (1)GO:尽量使用跟Grafana源码版本一样的Go版本,通过Github上https://github.co ...
- ThingsBoard 3.3.1源码编译-windows版
ThingsBoard 3.3.1源码编译-windows版 前期环境准备 环境版本尽量保持一致: 建议先把文章看完再操作,不要直接看一步操作一步! 编译过程要有耐心!不要看到执行到哪一步很久不动了, ...
- FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库
先决条件: 需要安装msys2(是一个在windows中模拟linux操作系统的软件) 由于在linux中编译ffmpeg比较简单, 所以利用一下msys2, 直接去官网下载安装即可 需要安装visu ...
- UOS系统下FFmpeg源码编译安装及注意事项
条件 当前编译环境:国产UOS系统(基于linux),CPU是ARM架构 需要安装ffmpeg 3.4版本. 通过源码编译进行安装使用 下载源码 在github上将ffmpeg源码下载到本地:下载地址 ...
- Android FFmpeg源码编译及在Android studio的集成
准备工具: 1,ubuntu server 18.04.4(其他发行版服务器或桌面版都行,我这里以ubuntu为例,可以使用虚拟机,也可以使用公网的服务器) 2,ndk R17c linux版 (下载 ...
- 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 ...
- Firefox源码编译(Windows)
1.系统要求 内存:最低4GB,推荐8GB+. 磁盘空间:至少40GB的可用磁盘空间. 操作系统:Windows10. 2.系统准备 下载安装Visual Studio 2019的构建工具,选择以下项 ...
- 我的docker随笔13:docker源码编译进阶篇
本文与前面文章相同,但多了一些分析的步骤. 一.环境搭建 docker的编译,需要在宿主机预先安装docker软件.因为编译docker的源码时,会构建一个docker镜像并运行,在这个容器里面进行b ...
最新文章
- Fedora 14下安装使用rarlinux
- Spring MVC常用注解说明
- 搭乘“云原生”硬核实践之舟,移动云助力开发者畅游未来创新之旅
- arm-linux-readelf
- php 对象方法作为参数,在C++中对象如何作为参数传递和返回?(代码示例)
- WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能
- 309. Best Time to Buy and Sell Stock with Cooldown 最佳买卖股票时机含冷冻期
- 刪除github上的一個repository
- 走近分形与混沌(part15)--有钱的人会愈来愈有钱,不一定是在于他们的能力,而是因为财富会产生财富
- typora 公式_如何用Typora写Markdown上传至知乎
- python1.学生管理系统
- 大数据在金融领域的应用及问题时
- python会什么比c慢
- 一个完整的、全面k8s化的集群稳定架构(值得借鉴)
- 第一次爬虫之Select 小猪短租
- PS如何制作炫酷的字体,有什么好的教程吗
- 微软量子计算“天使梦”破碎,扬言的巨大胜利终究是一个“错误”
- C#组件系列——NPOI使用手册
- 玩转Luat——导读
- C语言程序设计卢萍,卢萍