FFmpeg开发笔记(二)搭建Windows系统的开发环境

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
简介: 在Windows上学习FFmpeg通常较困难,但通过安装预编译的FFmpeg开发包可以简化流程。首先需要安装MSYS2来模拟Linux环境。下载并执行MSYS2安装包,然后修改msys2_shell.cmd以继承Windows的Path变量。使用pacman安装必要的编译工具。接着,下载预编译的FFmpeg Windows包,解压并配置系统Path。最后,在MSYS2环境中运行`ffmpeg -version`确认安装成功。欲深入学习FFmpeg开发,推荐阅读《FFmpeg开发实战:从零基础到短视频上线》。

由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的。更多详细的FFmpeg开发知识参见《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开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

目录
相关文章
|
23天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
93 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
30天前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
48 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
1月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
62 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
1月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
125 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
27天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
75 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
Android开发 开发者
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
谷歌推出的Transformer,作为Jetpack Media3架构的一部分,助力开发者实现音视频格式转换与编辑。Media3简化了媒体处理流程,提升了定制性和可靠性。Transformer可用于剪辑、添加滤镜等操作,其示例代码可在指定GitHub仓库中找到。要使用Transformer,需在`build.gradle`中添加相关依赖,并按文档编写处理逻辑,最终完成音视频转换任务。具体步骤包括配置剪辑参数、设置空间效果以及监听转换事件等。
49 0
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
|
开发工具 虚拟化 开发者
Windows 8.1 开发环境搭建
Windows 8.1 开发环境搭建
127 0
Windows 8.1 开发环境搭建
|
Java 开发工具 Android开发
Windows, Eclipse下开发Heritrix 3.1 (一)环境搭建
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
614 0
|
C++ Windows
Windows使用WxWidgets开发界面(c++)环境搭建
一直想学习wxWidgets,之前使用的都是wxPython,现在终于鼓起勇气学习这个了,发现原来是基于vc6.0开发的。所以最好的学习办法就是安装vistual studio 2010,方便学习看代码。wxWidgets里面也有demo。 基本上wxWidgets是和MFC类似的。 参考:http://www.codeproject.com/Articles/11515/In
2243 0

热门文章

最新文章