如何使用FFMpeg仅从mp3文件的开头和结尾修剪静音?

acm*_*123 9 audio mp3 ffmpeg

经过调查以找到解决问题的方法后,我最终两手空空。我想要 Windows 10 中的上下文菜单选项,以便每当我右键单击 mp3 文件时,我都可以使用此选项从 mp3 文件的开头和结尾修剪静音。我不想从音频文件的中间部分删除静音。任何人都可以为我提供适当的 FFmpeg 命令行以仅从 mp3 文件的开头和结尾删除静音吗?

小智 16

像这样的东西:

ffmpeg -i input.mp3 -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse,silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse" output.flac
Run Code Online (Sandbox Code Playgroud)

您需要根据具体情况调整阈值 ( start_threshold) 和持续时间 ( start_duration)。

  • 是的,因为从音频末尾删除静音是有问题的,您需要在开始修剪静音之前知道音频的末尾在哪里。并且silenceremove 过滤器在音频实际到达之前无法知道它的结尾,除非用户被要求在过滤过程之前以某种方式输入它。 (2认同)
  • 持续时间设置在这里有什么作用?你能举个例子吗? (2认同)
  • _silenceremove_ 有一个新功能,可以从头开始消除沉默:http://underpop.online.fr/f/ffmpeg/help/silenceremove.htm.gz ➔ 这对我来说很有效:`ffmpeg -i in.mp3 - af“silenceremove=start_periods=1:start_threshold=-60dB:start_silence=1:stop_periods=1:stop_silence=1:检测=peak”out.mp3` (2认同)

小智 7

对我来说,使用 mp4 文件执行此操作的最佳选择是此过滤器:

ffmpeg -i INPUT.mp4 -af "areverse,atrim=start=0.2,silenceremove=start_periods=1:start_silence=0.1:start_threshold=0.02,areverse,atrim=start=0.2,silenceremove=start_periods=1:start_silence=0.1:start_threshold=0.02"
-acodec aac OUTPUT.mp4,
Run Code Online (Sandbox Code Playgroud)

要了解所有过滤器部件:

  • areverse:反转整个音频。
  • atrim=start=0.2:剪掉前 0.2 秒以避免音频结尾处可能出现的高停止录音噪音(请记住音频是反向的)。
  • silenceremove=start_periods=1:start_silence=0.1:start_threshold=0.02:这部分去掉了最后的沉默。
  • areverse:这部分将音频恢复到原来的方式。
  • atrim=start=0.2剪掉前 0.2 秒以避免音频开头可能出现的高噪音
  • silenceremove=start_periods=1:start_silence=0.1:start_threshold=0.02":这部分消除了开始的沉默


小智 6

FWIW,虽然最初的问题特别要求使用 FFmpeg,但有一个名为的工具mp3splt可以修剪静音 ( -r) 而无需重新编码 MP3。这使得 MP3 的原始品质完好无损。