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; } |

测试结果如下:

相关推荐
~kiss~1 小时前
python的thrift2pyi学习
windows·python·学习
爱学习的大牛1232 小时前
ZLMediaKit Windows 编译指南
windows
rkmhr_sef12 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
@_@哆啦A梦13 小时前
windows怎样查看系统信息(处理器等)
windows
落落落sss15 小时前
MongoDB
数据库·windows·redis·mongodb·微服务·wpf
黄铎彦16 小时前
使用GDI+、文件和目录和打印API,批量将图片按文件名分组打包成PDF
c++·windows·pdf
比花花解语1 天前
Kafka在Windows系统使用delete命令删除Topic时出现的问题
windows·分布式·kafka
rainmanqqst1 天前
耀世16Pro鼠标卡顿
windows
早起的年轻人1 天前
Java List 自定义对象排序 Java 8 及以上版本使用 Stream API
java·windows·list
专注VB编程开发20年1 天前
除了 EasyXLS,加载和显示.xlsx 格式的excel表格,并支持单元格背景色、边框线颜色和粗细等格式化特性
c++·windows·excel·mfc·xlsx