Windows系统下FFmpeg4.4的环境搭建(二)

一、FFmpeg是什么

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证,它提供了录制、转换以及流化音视频的完整方案。FFmpeg在linux平台下开发,但是它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OX等。项目的名称来自MPEG视频编码标准,前面的"FF"代表"FastForward"。

二、FFmpeg的组成

构成FFmpeg主要有三个部分:

第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe

  • ffmpeg.exe:音视频转码、转换器
  • ffplay.exe:简单的音视频播放器
  • ffserver.exe:流媒体服务器
  • ffprobe.exe:简单的多媒体码流分析器

第二部分是可以提供开发者使用的SDK,为各个不同平台编译完成的库,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:

  • libavcodec:包含音视频编码器和解码器
  • libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能
  • libavformat:包含多种多媒体容器格式的封装、解封装工具
  • libavfilter:包含多媒体处理常用的滤镜功能
  • libavdevice:用于音视频数据采集和渲染等功能的设备相关
  • libswscale:用于图像缩放和色彩空间和像素格式转换功能
  • libswresample:用于音频重采样和格式转换等功能

第三部分是整个工程的源代码,无论是编译出来的可执行程序还是SDK,都是由这些源代码编译出来的。

三、FFmpeg的主要功能

多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

  • 视频采集功能:ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
  • 视频格式转换功能:ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换。ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mode等),例如可以将摄录下的视频avi等转换成视频网站所采用的flv格式。
  • 视频截图功能:对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓git文件;因为抓出的git文件大而播放不流畅。
  • 给视频加水印功能:使用ffmpeg给视频添加水印。

四、下载官方已编译的FFmpeg版本

下载编译好的Windows版本:Download FFmpeg

点击进入后:

如果只是想要编译好的工具软件,可以选择gpl或者lgpl下载:

如果还想要编译好的库文件,可以选择gpl_shared或者lgpl_shared下载:

五、搭建VS2019工程,并引入FFmpeg开发库

上面是FFmpeg依赖库的目录结构,dll文件夹用来存放dll文件,include文件夹用来存放头文件,lib文件夹用来存放lib文件。

1.将include目录引入到项目中:

右键点击项目->属性->C/C++->常规,弹出如下界面:

选择附加包含目录之后将include的路径添加进去:

2.配置lib文件的路径,点击链接器->常规,选择附加库目录,将lib的路径添加进去:

3.把lib文件加载进来,这个简单,点击链接器->输入之后,将库文件输入进去即可,如下图所示:

4.最后需要把dll文件拷贝到运行工作目录中,即exe运行文件所在目录,可以在生成事件->后期生成事件中添加拷贝命令,如下所示:

六、测试代码

|----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscale/swscale.h> #include <libavdevice/avdevice.h> #include <libavformat/version.h> #include <libavutil/time.h> #include <libavutil/mathematics.h> } int main() { ``const char``* pstrFFmpegConfig = avcodec_configuration(); ``std::cout << ``"config:" << pstrFFmpegConfig << std::endl; ``return 0; } |

测试结果如下:

相关推荐
LZQqqqqo1 小时前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
季春二九2 小时前
Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户
windows·microsoft
芥子沫3 小时前
Jenkins常见问题及解决方法
windows·https·jenkins
cpsvps_net19 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋20 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps1 天前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
网硕互联的小客服1 天前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix1 天前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享1 天前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost1 天前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求