首页 > 解决方案 > 有没有办法在ffmpeg的过滤器中使用当前帧和总帧作为变量?

问题描述

我正在尝试编写一个愚蠢的命令来顺时针旋转整个视频。我唯一需要的是一个变量来告诉过滤器当前帧数和总帧数。

这是我计划的命令(cf= 当前帧,tf= 总帧数)

ffmpeg -i input.mp4 -vf rotate=(cf*(tf/360))/PI*180 output.mp4

有愿意帮忙的人吗?

标签: videoffmpeg

解决方案


旋转过滤器文档说:

角度和输出大小的表达式可以包含以下常量和函数:

  • n是输入帧的序号,从0开始。在第一帧被过滤之前总是NAN。
  • t是输入帧的时间,以秒为单位,在配置过滤器时设置为 0。在过滤第一帧之前总是 NAN。

总持续时间没有变量,但您可以使用ffprobe. 请参阅如何以秒为单位获取视频持续时间?

在 10 秒内完成 1 次顺时针旋转的示例:

ffmpeg -i input.mp4 -vf "rotate=(2*PI*t)/10" -c copy output.mp4

推荐阅读