【问题标题】:Video Keyframe and Iframe视频关键帧和 iframe
【发布时间】:2021-04-13 03:58:03
【问题描述】:

我对视频帧提取感到困惑。

我有sample.mp4 video,15FPS。

我尝试使用 FFMPEG 提取关键帧。

ffmpeg -skip_frame nokey -i sample.mp4 -vsync 0 -frame_pts true out%d.png

我有 29 张图片,我相信我有 29 个 I 帧。 (如有错误请指正)

然后我尝试用图片提取特定时间轴(10秒)帧

ffmpeg -i sample.mp4 -ss 00:00:10 -frames:v 1 test1.png

这个输出图片,我在我得到的关键帧中找不到相同的。

问题:test1.png,什么是帧类型?是不是 P 或 B 帧之一?

【问题讨论】:

    标签: ffmpeg keyframe


    【解决方案1】:

    我有 29 张图片,我相信我有 29 个 I 帧。 (如有错误请指正)

    正确。请参阅Checking keyframe interval? 进行验证。

    问题:test1.png,什么是帧类型?是不是 P 或 B 帧之一?

    使用ffprobe:

    ffprobe -select_streams v -show_entries "frame=pkt_pts_time,pict_type" -of csv input.mp4
    

    示例输出:

    frame,9.968000,B
    frame,10.010000,B <---
    frame,10.052000,P
    

    请注意,在此示例中,-ss 00:00:10 向上舍入到最接近的帧 (10.010000)。在本例中这是一个 B 帧 (input.mp4)。

    【讨论】:

    • 谢谢。我可以得到“帧,10.000000,P”。这是我的 sampe.mp4 的“P”帧。
    • 我还能再问一个问题吗?使用这个 ffprobe 命令,“ffprobe -v error -show_entries frame=pict_type,pkt_pts_time -of default=noprint_wrappers=1:nokey=1 -select_streams v:0 sample.mp4 > frames.txt”,我可以获取帧类型及其 pts .但是,看起来有些框架没有显示框架类型。
    • @SYMoon 使用 pastebin 站点显示 ffprobe 的输出。
    • 我意识到我在 ffprobe 上缺少“-select_streams v:0”参数。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-03-13
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多