我想在处理视频时限制最大 fps。
例如:将限制设置为每秒 30 帧。
如果我以 24 fps 处理视频,那么我不会更改 fps,但如果我以 60 fps 处理视频,那么我会将 fps 更改为 30。
可以仅使用 FFmpeg(带有过滤器或其他东西)来完成吗?
我认为可以通过使用这样的过滤器来完成:
-filter:v "fps=fps='min($CURRENT_FPS,30)'"
但我不知道是否可以从表达式中获取当前的 fps。
#!/bin/bash
i="input"
o="output"
#get framerate and reset it to 30 if greater
if [ $(echo $($ffmpeg -i "$i" 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p") | awk '{printf "%.0f\n", $1}';) -gt 30 ];then r="-r 30";else r=""; fi
nice -n -20 ffmpeg -i $i $r $o