ffmpeg 获取全部帧 并显示时间
时间: 2023-08-12 08:14:19 浏览: 375
ffmpeg里获取完整一帧的例子
4星 · 用户满意度95%
您可以使用以下命令来获取视频中的所有帧并显示每一帧的时间:
```
ffmpeg -i input.mp4 -vf "setpts=PTS-STARTPTS,select=gt(scene\,0),showinfo" -f null -
```
这个命令将会输出视频文件 `input.mp4` 中的所有帧,并使用 `showinfo` 滤镜显示每一帧的时间戳。其中:
- `-vf "setpts=PTS-STARTPTS,select=gt(scene\,0),showinfo"` 表示使用 `setpts` 滤镜将时间戳从相对时间转换为绝对时间,使用 `select` 滤镜选择所有非黑色帧(即选择有变化的帧),并使用 `showinfo` 滤镜显示每一帧的时间戳。
- `-f null` 表示输出到 null 设备,即不输出到文件或屏幕上。
- `-` 表示输出的设备是标准输出,即输出到控制台上。
这个命令会输出类似于以下的信息:
```
[Parsed_showinfo_1 @ 0x7f9c5a600840] n: 0 pts: 0 pts_time:0 pos: 1826994 fmt:yuv420p sar:1/1 s:1920x1080 i:P iskey:1 type:I checksum:4EA7BC6F plane_checksum:[A5B09F9A A62D7B7D 3BEC2BD7] mean:[98 128 128] stdev:[51.9 12.0 12.0]
[Parsed_showinfo_1 @ 0x7f9c5a600840] n: 1 pts: 4000 pts_time:0.04 pos: 1833187 fmt:yuv420p sar:1/1 s:1920x1080 i:P iskey:0 type:P checksum:3F4F9A6A plane_checksum:[9D4D3E2E 7C7F7F23 8D2C9D2B] mean:[98 128 128] stdev:[51.9 12.0 12.0]
[Parsed_showinfo_1 @ 0x7f9c5a600840] n: 2 pts: 8000 pts_time:0.08 pos: 1841318 fmt:yuv420p sar:1/1 s:1920x1080 i:P iskey:0 type:P checksum:3F9DC4DE plane_checksum:[A8B8E3A8 7C7F7F23 8D2C9D2B] mean:[98 128 128] stdev:[51.8 12.0 12.0]
...
```
其中 `n` 表示当前帧的序号,`pts` 表示当前帧的时间戳,`pts_time` 表示当前帧的时间戳转换为秒后的值,`pos` 表示当前帧在文件中的位置,可以通过 `grep` 命令筛选出每一帧的时间戳信息。
阅读全文