【问题标题】:Mute specified sections of an audio file using ffmpeg使用 ffmpeg 将音频文件的指定部分静音
【发布时间】:2015-05-26 17:38:33
【问题描述】:

我有一个 JSON 文件,其中包含我想在给定音频文件中静音的区域。如何处理音频文件以使所列部分之间的文件静音?

【问题讨论】:

  • 你可以把碎片剪下来再拼起来……
  • 我想过,但这似乎是一件非常麻烦的事情:因为它需要用我想要的音频切掉部分,然后产生一些沉默,然后连接,并希望它不会最终点击合并的地方。以下解决方案完美运行!
  • 有一个“选择”过滤器我想知道它是否可以用于音频...

标签: audio ffmpeg


【解决方案1】:

以下命令将静音两个部分:5-10s 和 15-20s 之间:

ffmpeg -i video.mp4 -af "volume=enable='between(t,5,10)':volume=0, volume=enable='between(t,15,20)':volume=0" ...

说明:

-af 是音频过滤器。它通过指定在指定时间启用/禁用的多个卷过滤器来工作。 volume=enable='between(t,5,10)':volume=0 表示使用在 5 到 10 秒之间启用的音量过滤器,并将音量设置为 0。

【讨论】:

  • 效果很好,谢谢!你能解释一下它是如何工作的吗?
  • -af 是音频过滤器。它通过指定在指定时间启用/禁用的多个卷过滤器来工作。 volume=enable='between(t,5,10)':volume=0 表示使用在 5 到 10 秒之间启用的音量过滤器并将音量设置为 0。
  • 在 volume=0 时我可以在这里给出的最小值和最大值是多少?
  • 如果你想让它运行得更快,在命令中添加-vcodec copy,它会使得视频不会被重新编码(如果你只需要编辑音频就可以了) .例如:ffmpeg -i in.mp4 -vcodec copy -af "volume=enable='between(t,5,10)':volume=0, volume=enable='between(t,15,20)':volume=0" out.mp4
  • 请注意,'between' 输入是一个解析为数字的表达式。所以要在 26:40 到 26:42 之间保持沉默,你可以使用'between(t,26*60+40,26*60+42)'。它还支持浮点数(例如,'between(t,26*60+40+0.5,26*60+42)')。
【解决方案2】:

感谢@aergistal,它对我有用:

命令行:

ffmpeg -i input.mp4 -af "volume=enable='between(t,1,2)':volume=0" output.mp4

nodejs 流利的ffmpeg:

ffmpeg('input.mp4').audioFilters("volume=0:enable='between(t,1,2)'").output('output.mp4')

【讨论】:

    【解决方案3】:

    我看到这篇文章是因为我想了解如何降低视频中的音频部分。

    比如我想要34到35分钟之间的音量,37到40分钟,输入音量的0.1倍。以下对我有用,并希望它对从事相同任务的其他人有用:

    C:\ffmpeg-4.4-full_build\bin>ffmpeg -i in_video.mp4 -filter:a "volume=enable='between(t,34*60,35*60)':volume=0.1, volume=enable='between(t,37*60,40*60)':volume=0.1" -vcodec copy out_video.mp4
    

    注意两者之间的时间必须是秒。

    有关音量过滤器 (-filter:a) 的更多信息,请参阅下面的链接。 https://trac.ffmpeg.org/wiki/AudioVolume

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2021-03-29
      • 2016-03-05
      • 2020-08-02
      • 2015-11-07
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 2016-11-05
      相关资源
      最近更新 更多