ffmpeg 中 I 帧未标记为关键帧

ffmpeg 中 I 帧未标记为关键帧

我遇到了一些奇怪的 MP4 视频片段,其中 I 帧未标记为关键帧。这会干扰我的视频导出脚本(搜索完全错误,视频无法在正确的时间开始播放)。该脚本调用以下命令导出 MP4(h264 AAC)视频的一部分:

ffmpeg -ss <start_offset> -i input.mp4 -vcodec mpeg4 -acodec aac -q:v 5 output.mp4

会产生以下错误:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2231480] seek_frame_generic 失败,因为该流似乎在目标时间戳之后不包含任何关键帧,发现 1002 个非关键帧。

我确实运行了 ffprobe 来查看关键帧在我的输入中的位置:

ffprobe -show_entries frames=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 input.mp4
frame|key_frame=1|pkt_pts_time=0.00|pic_type=I
frame|key_frame=0|pkt_pts_time=0.15|pic_type=I
frame|key_frame=0|pkt_pts_time=3.52|pic_type=I
frame|key_frame=0|pkt_pts_time=6.89|pic_type=I
frame|key_frame=0|pkt_pts_time=10.26|pic_type=I
frame|key_frame=0|pkt_pts_time=13.63|pic_type=I
...

为什么第一个 I 帧之后的所有 I 帧都不是关键帧?我怎样才能定位到给定的时间(无论是哪个帧)而不是定位到最近的关键帧?

非常感谢你的帮助。

相关内容