首页 > 解决方案 > FFMPEG 检测静音命令正确运行,但没有给出静音持续时间

问题描述

我有一个 .wav 音频文件,我需要在此文件中提取静音/暂停持续时间。我正在使用带有静音检测过滤器的 ffmpeg,但我无法理解为什么它没有给这个文件提供静音持续时间,而它给其他文件提供了结果。谁能帮助我理解下面给出的为什么它没有显示检测到的沉默。

输入命令:

ffmpeg -i "input.wav" -af silencedetect=noise=-30dB:d=0.5 -f null -

输出

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --    enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-
libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable- 
libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-
libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --
enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --
enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid -- 
 enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --    enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt

libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100

Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'D:\Research\PhD\Carolina\AD\wav\media.io_Wakeman_Rhyne_001_01.wav':
Duration: 00:17:38.04, bitrate: 1411 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':

标签: audioffmpeg

解决方案


调整noise和/或d值。从静音检测文档中:

过滤器接受以下选项:

  • noise, n- 设置噪声容限。可以用dB(如果“dB”附加到指定值)或幅度比来指定。默认值为 -60dB 或 0.001。

  • duration, d- 设置静音持续时间直到通知(默认为 2 秒)。

“沉默”往往不是100%沉默。可能有背景噪音。在这种情况下,您需要调整该noise值,直到它检测到您想要的静音。例如,如果您使用noise=-15dB,则等于或小于 -15 dB 的任何内容都将被检测为静音。

在此处输入图像描述

这张来自 Audacity 的屏幕截图显示了一个突出显示的“静默”区域。与其他音频相比,它听起来很安静,但如果你仔细听,你会听到换气扇和其他背景噪音。Audacity 中的 VU 表显示它实际上最大声时为 -34 dB,因此您必须至少使用noise=-34dB.

此外,您可能需要调整d以告诉它静音段在被检测为静音之前需要达到的最小长度。


推荐阅读