ffmpeg 输出图像文件名和时间位置

标签 ffmpeg jpeg screenshot filenames frame

我正在使用 ffmpeg 使用以下命令以特定速率(每 5 秒一个屏幕截图)从我的视频中获取一些 jpg:

ffmpeg -i source -f image2 -r 1/5 %d.jpg

这可行,并给我顺序文件名:
1.jpg
2.jpg
3.jpg
4.jpg

如果我需要知道这些屏幕截图是在什么时间拍摄的怎么办?类似时间戳的东西:
00:00:00.0000.jpg
00:00:05.0000.jpg
00:00:10.0000.jpg
00:00:15.0000.jpg

或秒数:
0.jpg
5.jpg
10.jpg
15.jpg

我再次尝试使用新的 -frame_pts选项 :
ffmpeg -i source -f image2 -r 1/5 -frame_pts 1 %d.jpg

我得到了类似的顺序文件名,但现在它们从零开始:
0.jpg
1.jpg
2.jpg
3.jpg

最佳答案

利用

ffmpeg -i source -vf fps=1,select='not(mod(t,5))' -vsync 0 -frame_pts 1 z%d.jpg

frame_pts 将为图像名称分配一个序列号,其中数字代表根据输出时基的帧位置。所以计算出的时间位置为frame # x timebase .时基是输出帧率的倒数,例如对于 12 fps 流,时基为 1/12。所以输出文件image212表示 212 的时间x 1/12 = 17.67s
为了表示秒,您需要生成一个 1 fps 的流,然后每 5 帧选取一次,以从每 5 秒获取一帧。 vsync 0添加以防止 ffmpeg 复制帧以生成恒定帧速率流。

关于ffmpeg 输出图像文件名和时间位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50099869/

相关文章:

c# - Windows Service下进程截图

video - ffmpeg覆盖时间问题

ffmpeg水印前30秒

ios - UIDocumentInreactionController 不允许 .URL 的 NSURL (Swift)

ios - 图像未压缩到小于 307kb。 ios9

java - 为什么我的 ZXing 的 jpeg 二维码不是黑白的?

php - 如何使用 PHP 截取网站的缩略图?

FFmpeg/libavcodec 使用 PHPVideoToolkit 转换 asv1 失败

python - 无法使用 OpenCV 使用 cv2.CAP_FFMPEG 在 GPU 上解码视频

python-3.x - 如何在python中将png图像的目录转换为jpg