FFMPEG SilenceDetect

Sre*_*noy 0 ffmpeg

我试图了解从 FFMPEG 获得的输出。我得到的部分输出如下所示。

[null @ 000000000449e740] Encoder did not produce proper pts, making some up
[silencedetect @ 00000000048263a0] silence_start: -0.00356009
[silencedetect @ 00000000048263a0] silence_end: 11.4242 | silence_duration:11.4278
[silencedetect @ 00000000048263a0] silence_start: 11.7457
[silencedetect @ 00000000048263a0] silence_end: 11.8422 | silence_duration: 0.0964399
[silencedetect @ 00000000048263a0] silence_start: 12.1173
.....
[silencedetect @ 00000000048263a0] silence_end: 113.708 | silence_duration: 0.14288
[silencedetect @ 00000000048263a0] silence_start: 113.751
frame= 3254 fps=297 q=0.0 Lsize=N/A time=00:02:10.17 bitrate=N/A    
video:305kB audio:22424kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Run Code Online (Sandbox Code Playgroud)

我知道,silence_start 给出了检测到音频文件中的静音的时间戳,而silence_end 给出了结束时间戳。我在这里有两个问题

1)为什么第一个silence_start的时间戳为负值?(-0.00356009)

2)在输出的最后一行我可以看到silence_start 在113.751,但看不到silence_end。为什么会这样?

slh*_*hck 5

为什么第一个silence_start的时间戳为负值?(-0.00356009)

因为您正在处理的文件似乎没有帧​​/样本集的演示时间戳 (PTS)。这就是第一行中的警告所说的。ffmpeg 会生成一些 PTS,但这些可能不准确。

在输出的最后一行中,我可以看到silence_start 位于113.751,但无法看到silence_end。为什么会这样?

您是否考虑过大多数(如果不是全部)声音文件以静音结尾?所以 ffmpeg 在文件结束之前检测到静音的开始,然后到达文件的末尾。