【C++】简易GIF生成器(斗图神器!必备!!!)持续更新~

一个练手小项目,主要语言的是C++,其主要依赖Duilib库和ffmpeg音视频编解码工具。

一、Duilib-界面开发部分

DuiLib库是一款由杭州月牙儿网络技术有限公司开发,轻量级的C++界面开发库,遵循开源BSD协议,可以免费用于商业项目。很多大公司的界面就是用它完成的,这里也是第一次接触这个开源库,所以在这里放下大牛 Alberl 的教程链接。duilib入门简明教程-Alberl
另外,我是用的是Visual Stdio 2019版本,所以配置环境就费了好大的功夫。(Alberl的博客里面有安装教程 基于Visual Stdio 2013)
我主要出现的问题就是DuiDesigner编辑器打不开,主要是缺少了几个文件,放在这里,需要的自取:
mfc120ud.dll msvcp120d.dll msvcr120d.dll
界面开发这部分只要按照教程来,基本不会很大的问题,但是直得注意的是这个库里面会有一些小Bug,比如用 DuiDesigner生成的.xml文件会被修改!!!甚至消失!!! 所以务必要经常进行备份(推荐svn,git)。
以下就是我生成的界面,有点丑但是还能凑合。
在这里插入图片描述

二、ffmpeg音视频编解码工具

首先先把工具放在这里,需要的自取:
ffmpeg下载

FFmpeg即是一块音视频编解码工具,同时也是一组音视频编解码开发套件,为开发者提供了丰富的音视频处理调用接口。FFmpeg中的"FF"指的是"Fast Forward",mpeg则是动态图像专家组。 它提供了录制、转换以及流化音视频的完整解决方案。 它包含了非常先进的音频/视频编解码库 libavcodec, 为了保证高可移植性和编解码质量, libavcodec 里很多 codec 都是从头开发的。
FFmpeg项目由以下几部分组成:

  1. ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件. ffserver 基于 HTTP、RTSP

  2. 用于实时广播的多媒体服务器.也支持时间平移 ffplay 用 SDL 和 FFmpeg 库开发的一个简单的媒体播放器

  3. libavcodec 一个包含了所有 FFmpeg 音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解 码器从头开发的.

  4. libavformat 一个包含了所有的普通音视格式的解析器和产生器的库

需要注意的是ffmpeg这款工具需要在cmd中运行,我们先了解几个简单的命令:
(保证所需要的用的素材和ffmpeg在同一个目录下)
用ffmpeg播放视频

ffplay video.mp4
//mp4只是一种格式,可根据需求更改

截取视频

ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4

生成ASS

扫描二维码关注公众号,回复: 8492868 查看本文章
ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass

烧录ASS

ffmpeg -i 1.avi -vf ass=2.ass 3.avi

用ffmpeg将多张图片或视频生成GIF动态图

//1. 使用图片生成gif
ffmpeg -r 1 -i .\\Pictrue\\%d.jpg 11.gif
//2. 使用视频生成gif
ffmpeg -r 1 -i 1.flv 1.gif

三、项目整体框架

已知的有两种方式可以生成GIF动态图:
1、使用多张图片生成;
2、使用短视频来生成;
系统主要是在程序中通过cmd控制台调用ffmpeg.exe工具,并给该工具发送相应的命令,完成所需的操作,发送命令时,cmd窗口隐藏在后台。
在这里插入图片描述

发布了79 篇原创文章 · 获赞 28 · 访问量 7789

猜你喜欢

转载自blog.csdn.net/weixin_43753894/article/details/97295697