由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的。
不过若有已经编译好的Windows版本FFmpeg开发包,那就免去了繁琐的Windows编译过程,所以直接安装已编译的FFmpeg开发包,还是相对容易的。在Windows系统安装FFmpeg之前,要先安装MSYS2。
一、安装MSYS2​
MSYS2允许在Windows系统模拟Linux环境,它的命令行界面可以很好地仿真Linux终端,所以在Windows系统上编译和执行FFmpeg程序都要通过MSYS2的控制台操作。以下是在Windows系统安装MSYS2的步骤说明。
1、到这个网址下载MSYS2的安装包 https://github.com/msys2/msys2-installer/releases/,打开该页面后单击Assets文字以便展开安装包列表,接着单击MSYS2的Windows安装包链接,比如msys2-x86_64-20230318.exe,浏览器就开始下载Windows版本的安装文件。
2、双击下载好的msys2-x86_64-20230318.exe,根据安装向导的指引一步一步完成安装Windows版本的MSYS2。
3、MSYS2安装完毕,打开安装目录下的msys2_shell.cmd,去掉该文件第17行代码的注释,也就是删除关键字rem,修改之后的代码如下所示:

set MSYS2_PATH_TYPE=inherit

之所以把该行代码去掉注释,是因为要让MSYS2继承Windows系统的Path环境变量,否则后面编译会报错。
4、依次选择Windows开始菜单的“Windows系统”——“命令提示符”,打开Windows的命令行界面。接着先进入msys64目录,再打开MSYS2的命令行窗口,也就是依次执行以下命令:

cd E:\msys64
msys2_shell.cmd -mingw64

之所以要在msys2_shell.cmd后面添加“ -mingw64”,是为了让MinGW运行于64位模式,而非默认的32位模式。MinGW允许在Windows系统执行Linux的编译命令。如果说MSYS2相当于Windows环境的Linux模拟器,那么MinGW给MSYS2准备了32位和64位两套编译器,而我们的目标是在Windows系统模拟64位的Linux开发环境。
5、虽然安装完了MSYS2,可是一开始里面只支持cd和ls等基本命令,竟然连gcc和make这些编译命令都没有,因此要先给它安装常用的编译工具。在MSYS2的命令行输入以下命令安装几个编译工具:

pacman -S gcc make nasm pkg-config diffutils zlib vim

pacman在安装过程中会提示[Y/n]确认是否继续安装,此时输入Y确定安装即可。等待pacman将编译工具安装完毕,会在mingw64\bin下面找到相应的可执行程序了。如果在打开MSYS2窗口时,msys2_shell.cmd命令后面没加“ -mingw64”,那么编译工具会默认装到mingw32\bin目录;只有在msys2_shell.cmd命令后面加上“ -mingw64”,编译工具才会装到mingw64\bin目录。
二、安装FFmpeg
安装好了MSYS2,再来安装FFmpeg,具体的安装步骤说明如下:
1、到这个网址下载Windows环境编译好的FFmpeg安装包https://github.com/BtbN/FFmpeg-Builds/releases,比如ffmpeg-master-latest-win64-gpl-shared.zip。
2、把ffmpeg-master-latest-win64-gpl-shared.zip解压到指定目录,并将解压后的目录改名为ffmpeg,比如E:\Program Files\ffmpeg。
3、编辑Windows系统变量列表里的Path变量,给它添加两个目录,第一个是FFmpeg的可执行程序及其动态库目录,比如E:\Program Files\ffmpeg\bin;第二个是MSYS2的可执行程序目录,比如E:\msys64\usr\bin。之所以给Path变量添加这两个目录,是为了在命令行输入相关命令时,Windows能够自动找到对应的可执行程序。
4、在MSYS2的控制台执行以下命令查看FFmpeg的版本信息:

ffmpeg -version

发现控制台回显如下所示的FFmpeg版本与编译器版本信息,说明FFmpeg程序成功跑起来了。

ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
Built with gcc 12.2.0 (Rev4, Built by MSYS2 project)

​三、编写测试程序
关于C语言的代码验证,可采用上一篇文章介绍的测试代码及其编译命令,这里不再赘述了。

FFmpeg开发笔记(二)搭建Windows系统的开发环境的更多相关文章

  1. PHP环境搭建-Windows系统下PHP环境搭建

    1.PHP环境搭建的前提是 Apache HTTP Server (Apache 服务器)已经安装部署成功,并可以正常访问到服务器的主页面.Apache HTTP Server 的安装部署已经在上一篇 ...

  2. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  3. Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2]

    Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2] 2015-07   北京海淀区  ...

  4. 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    转自:http://www.cnblogs.com/shaddock2013/p/3155024.html 最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是V ...

  5. WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是VMware Workstation + Win8 Pro的虚拟环境, 在漫长的WPexpress_full下 ...

  6. 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告

    20155236 <信息安全概论>实验二(Windows系统口令破解)实验报告 北京电子科技学院(BESTI) 实验报告 课程:信息安全概论 班级:1552 姓名:范晨歌 学号:20155 ...

  7. Windows下USB磁盘开发系列二:枚举系统中所有USB设备

    上篇 <Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>介绍了很简单的获取系统U盘盘符的办法,现在介绍下如何枚举系统中所有USB设备(不光是U盘). 主要调用的API如下: 1 ...

  8. SDL开发笔记(二):音频基础介绍、使用SDL播放音频

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. WSL2:在Windows系统中开发Linux程序的又一神器

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  10. php手动搭建wamp环境(一)--之 Windows系统下PHP环境搭建

    1.PHP环境搭建的前提是 Apache HTTP Server (Apache 服务器)已经安装部署成功,并可以正常访问到服务器的主页面.Apache HTTP Server 的安装部署已经在上一篇 ...

随机推荐

  1. [Vue warn]: Duplicate keys detected: ''. This may cause an update error. found in

    原因: 使用element-ui 导致 使用路由模式之后  index 没写 导致 解决办法: 删掉  或者天添加路由

  2. python学习记录(三)-数据类型

    字符串格式化 var = 'abcde' # 切片 print(var[2],var[-1]) # c e print(var[1:3:1],var[-2:-5:-1],var[::-1]) # bc ...

  3. MariaDB简介

    一.什么是数据库 DB 与 DBMS :DB(DataBase)即数据库,存储已经组织好的数据的容器.DBMS(DataBase Manage System)是数据库管理系统用来对数据库及数据库中的数 ...

  4. UAC的详细讲解(转载)

    win32中也有对UAC的操作方法 网址:https://blog.csdn.net/zuishikonghuan/article/details/46965159?locationNum=7& ...

  5. 【Python】validator进行数据校验

    https://pypi.org/project/validator.py/ 校验参数必要性 from validator import Required, In, InstanceOf, Lengt ...

  6. LeetCode86 分隔链表

    idea: 烦死了,这个题一直因为创立的指针为空,或者接入结点方法不对,结果将两个小链表搞混乱了,不过具体思路ok.将小值结点成一组,大值结点成一组,最后在首尾相连,实现起来也比较简单 /**  *  ...

  7. MAC范洪攻击-macof

    macof 目的:攻击交换机的路由表,实现网络信息嗅探 macof是dsniff中的一个小工具 概要:交换机中存在着一个记录着MAC地址的表,为了完成数据的快速转发,这个表有着自动学习机制,学习后可以 ...

  8. Redis中 HyperLogLog数据类型使用总结

    转载请注明出处: 目录 1. HyperLogLog 的原理 2.使用步骤 3.实现请求ip去重的浏览量使用示例 4.Jedis客户端使用 5.Redission使用依赖 6.HyperLogLog ...

  9. 快速部署LAMP黄金架构,搭建disuz论坛

    快速部署LAMP架构 [root@zhanghuan ~]# iptables -F[root@zhanghuan ~]# systemctl stop firewalld[root@zhanghua ...

  10. JVM加载中初始化时机?什么时候不会进行初始化?

    初始化的过程是给静态变量赋予指定值以及执行静态代码块的过程. 当遇到new,getstatic,putstatic,invokestatic指令时要进行初始化,也就是new实例化对象,调用静态变量以及 ...