【问题标题】:Why must FFmpeg's af_atempo filter be in the [0.5, 2.0] range?为什么 FFmpeg 的 af_atempo 过滤器必须在 [0.5, 2.0] 范围内?
【发布时间】:2018-06-19 06:16:13
【问题描述】:

当我尝试将此过滤器与 FFmpeg 一起使用时,我发现音频速度参数必须在此范围内 [0.5, 2.0]。

但我不明白为什么音频速度过滤器的参数必须在这个范围内。

为什么一定要在这个范围内?

【问题讨论】:

  • 您必须检查source code 才能发现这一点。解决方法是链接多个 atempo 过滤器以获得结果比率。
  • 非常感谢。这很有帮助

标签: c ffmpeg


【解决方案1】:

atempo 过滤器现在的范围为 0.5-100:

lavfi/atempo: raise max tempo limit

【讨论】:

  • atempto 有问题,但我不会进行注册过程 - 只是注意到它 - 它在开始时会产生工件。
  • @gpasch 使用rubberband filter(或独立的rubberband 工具)可能会获得更好的结果。
【解决方案2】:

af_atempo 过滤器需要 0.5 到 2.0(含)之间的原因是因为它的底层算法。 af_atempo 使用 'WSOLA' 算法(基于波形相似性的重叠添加)在不改变音高的情况下更改音频的时间刻度,这些限制是算法本身的结果。

【讨论】:

    【解决方案3】:

    一个简单但低效的解决方法是级联多个速度过滤器,这是一个将视频和音频速度提高 4 倍的示例

    ffmpeg -i input.MP4 -filter_complex "[0:v]setpts=0.25*PTS[v];[0:a]atempo=2.0,atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
    

    【讨论】:

    • 看来没有别的选择了!你是对的,确实效率低下。这意味着例如减慢 100 倍,atempo 必须应用 7 次 (╯°□°)╯︵ ┻━┻
    猜你喜欢
    • 2010-11-27
    • 2015-08-19
    • 2019-02-21
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多