在特定时间将关键帧插入m4v/mp4

问题描述 投票:0回答:1

我有一个面向教育工作者的程序(使用

electronjs
框架编写),可以播放视频,跳到视频中的预设点(如配套 JSON 文件中定义)。有时,跳过后会出现明显的滞后,这个答案表明存在滞后是因为关键帧不频繁。

假设这是正确的,我想在 mp4 文件中我知道播放器将跳到的确切位置插入关键帧。然而,其中一些视频文件已经相当大,所以我不想减少关键帧间隔,从而使文件变得更大。我只需要在整个文件中强制使用少数关键帧。

我希望能够在我想要强制关键帧的时间传递一个参数(例如,到

ffmpeg
)。最好,我想在不重新编码整个视频的情况下执行此操作(就像这个未回答的问题),但如果我必须重新编码视频,我也可以这样做。

video ffmpeg html5-video
1个回答
0
投票

您可以使用 ffmpeg 使用

-force_key_frames
选项在您想要的位置插入关键帧。

例如:

./ffmpeg -i input.mp4 -c:a copy -vcodec libx264 -force_key_frames 0:05:00,0:10:00 out.mp4

将把关键帧尽可能靠近 5 和 10 标记。时间值可以采用 hh:mm:ss 格式,也可以仅采用秒(单个值,无冒号)。

您可以使用以下方法检查是否有框架插入到您想要的位置:

./ffprobe -select_streams v:0 -skip_frame nokey -show_entries frame=pkt_pts_time out.mp4
© www.soinside.com 2019 - 2024. All rights reserved.