ffmpeg提取单个关键帧到图像并获取关键帧的时间戳
ffmpeg extract single keyframe to image and get timestamp of keyframe
在视频中搜索与图像匹配的帧后,得到以下输出
[Parsed_blackframe_1 @ 0x55a8513722c0] frame:884 pblack:99 pts:452608 t:35.360000 type:B last_keyframe:864
如何在上述 864
的情况下提取 last_keyframe
的图像?
在上面的例子864
中如何获取last_keyframe
的时间戳?
How to extract an image of a the last_keyframe in the case above 864?
ffmpeg -i input -vf select=eq(pict_type\,I)*gt(n\,864) -update 1 -vsync 0 last.png
select
过滤器仅保留 #864 以上的关键 (I) 帧和 (*) 帧
-update 1
discards/overwrites前一帧,所以最后一帧被保存
-vsync 0
防止编码器不必要地复制关键帧来填补时间
How to get the timestamp of the last_keyframe in the case above 864?
我不知道在 FFmpeg 中是否有办法做到这一点,但使用 FFprobe 可以运行以下获取所有关键帧时间戳:
ffprobe -skip_frame nokey -select_streams v:0 -show_entries frame=pts_time
参考文献:
在视频中搜索与图像匹配的帧后,得到以下输出
[Parsed_blackframe_1 @ 0x55a8513722c0] frame:884 pblack:99 pts:452608 t:35.360000 type:B last_keyframe:864
如何在上述 864
的情况下提取 last_keyframe
的图像?
在上面的例子864
中如何获取last_keyframe
的时间戳?
How to extract an image of a the last_keyframe in the case above 864?
ffmpeg -i input -vf select=eq(pict_type\,I)*gt(n\,864) -update 1 -vsync 0 last.png
select
过滤器仅保留 #864 以上的关键 (I) 帧和 (*) 帧
-update 1
discards/overwrites前一帧,所以最后一帧被保存-vsync 0
防止编码器不必要地复制关键帧来填补时间
How to get the timestamp of the last_keyframe in the case above 864?
我不知道在 FFmpeg 中是否有办法做到这一点,但使用 FFprobe 可以运行以下获取所有关键帧时间戳:
ffprobe -skip_frame nokey -select_streams v:0 -show_entries frame=pts_time
参考文献: