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

打印 上一主题 下一主题

主题 901|帖子 901|积分 2703



   一、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;
}
测试结果如下: 




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表