我使用以下命令每 15 秒成功捕获一次屏幕截图,但我需要将图像与屏幕截图的来源视频位置关联起来。
%d 给了我一个整数,但是是否有类似的变量、过滤器或其他东西来在输出文件名中包含或以某种方式捕获图像的时间戳?
c:\ffmpeg\bin>ffmpeg -i c:\files\video.mp4 -vf fps=1/15 c:\images\image_%d.png";
当前输出为:
c:\images\image1.png
c:\images\image2.png
c:\images\image3.png
...
c:\images\image999.png
期望输出是某物喜欢:
c:\images\image_00-00-00.png // Capture at start of video
c:\images\image_00-00-15.png // Capture at 00:00:15
c:\images\image_00-00-30.png // Capture at 00:00:30
c:\images\image_00-00-45.png // Capture at 00:00:45
c:\images\image_00-01-00.png // Capture at 00:01:00
...
c:\images\image_01-25-15.png // Last capture
答案1
正如一些人所写,可能没有ffmpeg
命令选项可以做你想做的事情。在 Linux 机器上,我建议你使用以下脚本
#!/bin/bash
interval=15 # interval between images in seconds
for ((i=0; i<$1; ++i)); do
timestamp=$(date -d @$((-3600+${i}*${interval})) +%H-%M-%S)
mv image${i}.png image_${timestamp}.png
done
exit 0
您可以在包含图像的目录中将其调用为
$ script_name NNN
其中NNN
是图像的总数(我假设您从 0 而不是 1 开始编号,这并不难)。
正如您所看到的,我依赖于 linux 命令date
,它能够将秒转换为小时。
由于您似乎是在 Windows 机器上,因此有几个选项,您可以使用该脚本。