audio - 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:':
解决方案
调整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
以告诉它静音段在被检测为静音之前需要达到的最小长度。
推荐阅读
- python - 有没有办法在 Python 中动态构建列表
- jquery - Jquery在表单提交中获取所有选中的复选框值
- python - CSV 的键值不正确导致键错误
- java - 将类中的对象添加到数组中
- python - 我无法向 django rest 框架发送帖子
- jquery - 如何在 Fancybox 中将视口视为宽度 = 设备宽度
- javascript - 如何监听在 vue 组件之外发出的事件
- python-3.5 - 如何检测与背景颜色几乎相似的物体?
- c++ - Windows 上的 std::filesystem "root_name" 定义被破坏
- homebrew - brew --prefix libxml2 给了我一个不存在的路径