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版本:https://www.ffmpeg.org/download.html#build-windows

 

 

点击进入后:

如果只是想要编译好的工具软件,可以选择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运行文件所在目录,可以在生成事件->后期生成事件中添加拷贝命令,如下所示:

 六、测试代码

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

测试结果如下: 

 

posted @ 2024-03-25 20:09  TechNomad  阅读(80)  评论(0编辑  收藏  举报