ffmpeg 1秒1帧并写出时间精确到毫秒
时间: 2024-02-09 14:10:42 浏览: 25
您好!您可以使用以下的命令来实现:
```
ffmpeg -i input.mp4 -r 1 -vf "setpts=1*PTS" -f image2 %03d.jpg
```
这个命令将会将一个视频文件 input.mp4 每秒输出一帧图片,并且每一帧图片的文件名都是三位数的数字,表示时间精确到毫秒。例如,第一帧图片的文件名为 001.jpg,第二帧为 002.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 1秒1帧并写出时间
你可以使用以下命令来抽取每秒一帧的视频并写出时间:
```
ffmpeg -i input.mp4 -vf "fps=1" -vsync 0 -f image2 -strftime 1 output_%Y-%m-%d_%H-%M-%S.jpg
```
这个命令会把输入的视频文件 `input.mp4` 每秒抽取一帧,并通过 `-strftime` 参数将当前时间格式化成 `output_年-月-日_时-分-秒.jpg` 的形式,并把每一帧保存成一张图片。