使用 ffmpeg + MPDecimate 摆脱精确重复的帧(即无损)

使用 ffmpeg + MPDecimate 摆脱精确重复的帧(即无损)

根据文献,抽取将“为了降低帧速率而丢弃与前一帧没有太大差别的帧。”

我希望能够仅删除精确的视频中的重复帧。我知道视频中有很多重复帧相似的,但我只想摆脱完全重复的内容。

关于如何使用 ffmpeg 和 mpdecimate 来执行此操作(或其他工具)有什么建议吗?

答案1

hi 和 lo 的值针对 8x8 像素块,表示实际像素值差异,因此阈值 64 对应于每个像素的 1 个单位差异,或在整个块中以不同方式分布。

如果没有任何 8x8 块之间的差异超过阈值 hi,并且没有任何 frac 块(1 表示整个图像)之间的差异超过阈值 lo,则该帧将成为丢弃的候选。

hi 的默认值为 64 * 12,lo 的默认值为 64 * 5,frac 的默认值为 0.33。

ffmpeg -i input.mkv -vf mpdecimate=hi=1:lo=1:frac=1:max=0 output.mkv

应该仅当整幅图像与前一幅图像的像素值差异不超过 1 个时才删除该图像。

我用静态图像渲染成 5 秒 h264 视频进行测试,结果显示实际上 125 帧中有 3 帧被丢弃。这可能是由于压缩伪影造成的。

当调整高低值为 200 时

ffmpeg -i input.mkv -vf mpdecimate=hi=200:lo=200:frac=1:max=0 output.mkv

那么保留21帧。

您可能需要根据完全重复的定义调整参数。

相关内容