如何使用连续搜索编码 (ffmpeg x264)

How to encode (ffmpeg x264) with continuous seek

我有一个批处理文件,可以将 'Source' 文件夹中的视频文件编码到 'Target' 文件夹。

批处理文件内容为:

for %%a in ("Source*.*") do @echo DirectShowSource("%%a") >> "batchScript.avs" && @echo MSharpen(10,120) >> "batchScript.avs" && ffmpeg -i "batchScript.avs" -n -c:v libx264 -crf 24 -c:a libmp3lame -b:a 192k "Target\%%~na.mp4" && del "batchScript.avs" pause

我不确定为什么,但是当我在 media player classic 中播放编码文件时,我只能及时跳到不连续的跳跃,而不是我点击的确切时间。

如何才能避免这种情况发生?

谢谢大家!

Media Player Classic 在 View > Options > Tweaks 中有一个名为 Fast Seek 的选项,默认情况下启用。为了快速起见,此选项使 MPC 仅查找关键帧。

关键帧(或 I 帧)不需要其他视频帧即可解码,但它们是最不可压缩的(也就是文件 size/stream 比特率会因关键帧较多而变大) .

libx264的默认关键帧间隔为250(帧),最小关键帧间隔为25。例如,每秒25帧,这意味着每250/25=10秒或更少的关键帧.

当然,如果在 MPC 中启用了快速搜索,这会使搜索变得困难。

要减少关键帧间隔,您可以使用 -g [size] 或使用 x264 选项 keyint=[size] 指定 GOP 大小。

例如:对于 25 fps 和 GOP 大小 75,每个最大值都有一个关键帧。 3 秒。