【问题标题】:ffmpeg CLI set -r 30 if input => 30 fps, else -r to take input fps if < 30 fpsffmpeg CLI 设置 -r 30 如果输入 => 30 fps,否则 -r 如果 < 30 fps 则采用输入 fps
【发布时间】:2019-12-12 04:41:07
【问题描述】:

我发布了我的original question here。试过suggested solution。但这并不能解决我的问题。

这就是我所做的。从 Youtube 下载 this video 作为测试。使用 ffprobe 给出:

Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 1k tbn, 119.88 tbc (default)

我使用的ffmpeg命令:

ffmpeg -i Iron_Man_1080p_60fps.mp4 -vf "select='eq(n,0)+if(gt(t-prev_selected_t,1/30.01),1,0)'" -vsync 0 -c:v libx265 -crf 28 -c:a aac -b:a 64k Iron_Man_1080p_60fps_CONVERTED.mp4

ffprobe 我的输出文件Iron_Man_1080p_60fps_CONVERTED.mp4:

Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 454 kb/s, 20.49 fps, 59.94 tbr, 19001 tbn, 59.94 tbc (default)

如您所见,fps 从 59.94 fps 下降到 20.49 fps。

我不确定为什么建议的解决方案不起作用。

ffmpeg -i 120.mp4 -vf "select='eq(n,0)+if(gt(t-prev_selected_t,1/30.01),1,0)'" -vsync 0 out.mp4

也许 -vf 没有设置固定帧率?

有人可以使用 -r 标志提供替代解决方案吗?

这里重新陈述问题:

  • 如果输入 fps => 30 fps,则设置 -r 30
  • 如果输入 fps

谢谢!

【问题讨论】:

    标签: ffmpeg frame frame-rate rate


    【解决方案1】:

    示例视频的 time_base 是粗略的,因此视频实际上是 VFR。将间隔更改为1/30.5 以保留刚刚超出1/30.01 阈值的帧

    -vf "select='eq(n,0)+if(gt(t-prev_selected_t,1/30.50),1,0)'"
    

    【讨论】:

    • 再次非常感谢@Gyan!这就像一个魅力!对于那些正在考虑同时转换帧率和缩放比例的人,例如。将 2160p 60fps 视频缩小到 1080p 30fps,您可以简单地使用:-vf "select='eq(n,0)+if(gt(t-prev_selected_t,1/30.50),1,0)'",scaling=-1:1080
    • 当我使用ffmpeg.exe -i 123456.mp4 -vf "select='eq(n,0)+if(gt(t-prev_selected_t,1/20.50),1,0)'" -vsync 0 ooo.mp4 或`ffmpeg.exe -i 123456.mp4 -vf "select='eq(n,0)+if(gt(t-prev_selected_t) 时,我的视频是Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 960x540 [SAR 4096:4095 DAR 65536:36855], 188 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default) ,1/20.01),1,0)'" -vsync 0 ooo.mp4` 将帧重置为 20 以下,
    • 它总是得到Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 960x540 [SAR 4096:4095 DAR 65536:36855], 166 kb/s, 12.50 fps, 12.50 tbr, 12800 tbn, 50 tbc (default),这是 12.5 而不是 20fps。
    • 是的,它会将帧率除以整数除数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多