ffmpeg 1秒2帧并写出时间
时间: 2023-07-26 20:11:36 浏览: 222
您可以使用以下命令来实现:
```
ffmpeg -i input.mp4 -r 2 -vsync 0 -f image2 -strftime 1 output_%Y-%m-%d_%H-%M-%S_%3d.jpg
```
这个命令将会把一个视频文件 `input.mp4` 每秒输出两帧图片,并通过 `-strftime` 参数将当前时间格式化成 `output_年-月-日_时-分-秒_帧序号.jpg` 的形式,并把每一帧保存成一张图片。其中:
- `-r 2` 表示输出的帧率为 2 帧每秒,即每秒输出两帧。
- `-vsync 0` 表示关闭时间同步,确保每一帧输出时都使用自己的时间戳。
- `-f image2` 表示输出的格式为图片。
- `%Y-%m-%d_%H-%M-%S_%3d.jpg` 是输出图片的文件名格式,其中 `%Y-%m-%d_%H-%M-%S` 表示用年月日时分秒来表示当前时间,`%3d` 表示用三位数字来表示每一帧图片的序号,`.jpg` 则表示输出的图片格式为 JPG。
这个命令会在当前目录下输出一系列以 `output_年-月-日_时-分-秒_帧序号.jpg` 命名的图片文件,每两张图片对应着原视频中的一秒钟。
相关问题
ffmpeg 1秒3帧并写出毫秒
您可以使用以下命令将视频转换为 1 秒钟 3 帧的视频,并将每一帧的时间戳写入输出文件:
```
ffmpeg -i input.mp4 -r 3 -vf "setpts=PTS-STARTPTS,tmetadata=print:key=lavfi.tmetadata.start_time:value='%{pts\:hms}.%{pts\:ms}':file=timecode.txt" output.mp4
```
这个命令将会将视频文件 `input.mp4` 转换为 1 秒钟 3 帧的视频,并将每一帧的时间戳写入 `timecode.txt` 文件中。其中:
- `-r 3` 表示将视频的帧率设置为 3 帧每秒钟。
- `-vf "setpts=PTS-STARTPTS,tmetadata=print:key=lavfi.tmetadata.start_time:value='%{pts\:hms}.%{pts\:ms}':file=timecode.txt"` 表示使用 `setpts` 滤镜将时间戳从相对时间转换为绝对时间,使用 `tmetadata` 滤镜将每一帧的时间戳写入 `timecode.txt` 文件中。
- `key=lavfi.tmetadata.start_time` 表示将时间戳写入 `start_time` 键中。
- `value='%{pts\:hms}.%{pts\:ms}'` 表示将时间戳格式化为 `时:分:秒.毫秒` 的形式,并将其作为键值写入文件中。
- `file=timecode.txt` 表示将键值写入 `timecode.txt` 文件中。
这个命令会输出转换后的视频文件 `output.mp4`,并将每一帧的时间戳写入 `timecode.txt` 文件中。您可以根据需要修改 `-r` 参数来设置其他帧率。
ffmpeg 抽帧并写出时间
您可以使用以下的命令来实现:
```
ffmpeg -i input.mp4 -r 1 -vsync 0 -f image2 -strftime 1 output_%Y%m%d%H%M%S.jpg
```
这个命令将会把一个视频文件 input.mp4 每秒输出一帧图片,并且通过 `-strftime` 参数将当前时间格式化成 `output_年月日时分秒.jpg` 的形式,并把每一帧保存成一张图片。其中:
- `-r 1` 表示输出的帧率为 1 帧每秒,即每秒输出一帧。
- `-vsync 0` 表示关闭时间同步,确保每一帧输出时都使用自己的时间戳。
- `-f image2` 表示输出的格式为图片。
- `%Y%m%d%H%M%S.jpg` 是输出图片的文件名格式,其中 `%Y%m%d%H%M%S` 表示用年月日时分秒来表示当前时间,`.jpg` 则表示输出的图片格式为 JPG。
这个命令会在当前目录下输出一系列以 `output_年月日时分秒.jpg` 命名的图片文件,每一张图片都对应着原视频中的一秒钟。
阅读全文