ffmpeg 获取全部帧 并显示时间为图片命名
时间: 2024-02-09 16:10:47 浏览: 313
您可以使用以下命令来获取视频中的所有帧并将每一帧的时间戳作为图片文件名:
```
ffmpeg -i input.mp4 -vf "setpts=PTS-STARTPTS,select=gt(scene\,0),drawtext=fontfile=/path/to/font.ttf:text='%{pts\:hms}':x=(w-tw)/2:y=h-(2*lh):fontsize=24:fontcolor=white" output_%Y%m%d%H%M%S_%3d.jpg
```
这个命令将会输出视频文件 `input.mp4` 中的所有帧,并将每一帧的时间戳作为图片文件名,格式为 `output_年月日时分秒_帧序号.jpg`。其中:
- `-vf "setpts=PTS-STARTPTS,select=gt(scene\,0),drawtext=fontfile=/path/to/font.ttf:text='%{pts\:hms}':x=(w-tw)/2:y=h-(2*lh):fontsize=24:fontcolor=white"` 表示使用 `setpts` 滤镜将时间戳从相对时间转换为绝对时间,使用 `select` 滤镜选择所有非黑色帧(即选择有变化的帧),并使用 `drawtext` 滤镜在每一帧的下方绘制时间戳。
- `fontfile=/path/to/font.ttf` 表示使用指定的 TrueType 字体文件。
- `text='%{pts\:hms}'` 表示将当前帧的时间戳格式化为 `时:分:秒` 的形式,并将其作为文本绘制在图片上。
- `x=(w-tw)/2:y=h-(2*lh)` 表示将文本绘制在图片的中央下方,与图片底部相距两个行高的位置。
- `fontsize=24` 表示文本的字号为 24。
- `fontcolor=white` 表示文本的颜色为白色。
- `output_%Y%m%d%H%M%S_%3d.jpg` 表示输出图片的文件名格式,其中 `%Y%m%d%H%M%S` 表示用年月日时分秒来表示当前时间,`%3d` 表示用三位数字来表示每一帧图片的序号,`.jpg` 则表示输出的图片格式为 JPG。
这个命令会在当前目录下输出一系列以 `output_年月日时分秒_帧序号.jpg` 命名的图片文件,每一帧的时间戳都会作为图片文件名的一部分。
阅读全文