diff --git a/src/probe/silence_detect.rs b/src/probe/silence_detect.rs index f4554e0..61f87d3 100644 --- a/src/probe/silence_detect.rs +++ b/src/probe/silence_detect.rs @@ -139,9 +139,17 @@ pub fn detect_silence( detected_silence.push(silence); } if let Some(value) = entry_map.get("lavfi.silence_end") { + let end = + ((value.parse::().unwrap() - frame_duration as f64) * 1000.0).round() as i64; if let Some(last_detect) = detected_silence.last_mut() { - last_detect.end = - ((value.parse::().unwrap() - frame_duration as f64) * 1000.0).round() as i64; + if last_detect.start == (value.parse::().unwrap() * 1000.0).round() as i64 { + detected_silence.pop(); + if let Some(prev_last_detect) = detected_silence.last_mut() { + prev_last_detect.end = end; + } + } else { + last_detect.end = end; + } } } if let Some(value) = entry_map.get("lavfi.silence_duration") {