前一段想在一个视频中增加一个计时器的画面,然后忽然发现视频编辑工具并没有直接提供这样的功能。通常建议的手段是:直接插入其他计时器的视频。最简单的做法是在手机上安装一个秒表之类的软件,然后通过内置的录屏功能得到需要的视频。只是这样方法很难获得需要的背景颜色和文字颜色。
正好最近研究了 EasyX 的使用,于是通过编程生成图片,然后使用FFMpeg 把图片粘成视频。
这次测试的代码如下:
#include <graphics.h>
#include <time.h>
#include <conio.h>
#include <stdio.h>
#define WINWIDTH 1920
#define WINHEIGHT 1080
// 一秒25帧,一共1分钟
#define TOTALTIME 60*25
int main()
{
TCHAR FilenameBuffer[256];
// 初始化图形模式
initgraph(WINWIDTH, WINHEIGHT);
settextcolor(RED);
settextstyle(500, 0, _T("Consolas"));
for (int i = 0; i < TOTALTIME; i++) {
BeginBatchDraw();
cleardevice();
swprintf(FilenameBuffer, sizeof(FilenameBuffer), L"%02d:%03d", i / 24, (i * 1000 / 24)%1000);
outtextxy(20, 20, FilenameBuffer);
EndBatchDraw();
swprintf(FilenameBuffer,sizeof(FilenameBuffer), L"%05d.png", i);
printf("%ls\n", FilenameBuffer);
saveimage(FilenameBuffer);
//Sleep(20);
}
// 按任意键退出
_getch();
// 关闭图形模式
closegraph();
return 0;
}
用于生成视频的命令如下:
ffmpeg -r 25 -i %05d.png -b:v 4M output2.mp4
最终的结果可以在B站看到
【EasyX 生成1分钟计时器视频】