FFmpeg 混合视频帧——似乎做了多余的工作?

FFmpeg 混合视频帧——似乎做了多余的工作?

我将每 16 帧混合为 1 帧,以大幅缩短延时视频。

但是,它运行非常慢。它是否将每帧与接下来的 15 帧混合,然后丢弃 15/16 帧?这意味着它正在做 16 倍于其需要的工作。

如果是这样,有没有更好(更快)的方法来混合帧,而不会做重复的工作?

-vf "tmix=frames=16:weights='1',select='not(mod(n\,16))',setpts=0.0625*PTS"

答案1

似乎你在混合帧方面做了太多工作;这应该只是转换的自然部分,而不是命令中的一个大/复杂的参数。

我的意思是,想象一下拍摄一张图片然后将其缩小;当尺寸从 10 英寸缩小到(比如说)1 英寸时,您不必使用自定义算法来更改像素。这只是该过程固有的一部分。

看着这个答案在这里我相信有一种更简单的方法来解决这个问题,那就是使用fpsFFmpeg 中的视频过滤器。我相信 — — 为了您的目的 — — 该命令可以简化为如下内容:

ffmpeg -i input.mp4 -filter:v fps=fps=1/16 output.mp4

关键部分是-filter:v fps=fps=1/16选项。

看着另一个答案了解有关过滤器工作原理的另一种解释fps


以下是根据以下建议提出的其他一些想法Stack Overflow 上的这个答案

这个使用 FFmpegminterpolate筛选:

ffmpeg -i input.mp4 -vf minterpolate=fps=1/16 output.mp4

这个使用 FFmpegframerate筛选:

ffmpeg -i input.mpg -vf framerate=fps=1/16 output.mp4

相关内容