pub struct SilenceDetector { /* private fields */ }Expand description
Detects silent intervals in an audio file and returns their time ranges.
Uses FFmpeg’s silencedetect filter to identify audio segments whose
amplitude stays below threshold_db for at least min_duration. Only
complete intervals (silence start and end detected) are reported; a
trailing silence that runs to end-of-file without an explicit end marker is
not included.
§Examples
use ff_decode::SilenceDetector;
use std::time::Duration;
let ranges = SilenceDetector::new("audio.mp3")
.threshold_db(-40.0)
.min_duration(Duration::from_millis(500))
.run()?;
for r in &ranges {
println!("Silence {:?}–{:?}", r.start, r.end);
}Implementations§
Source§impl SilenceDetector
impl SilenceDetector
Sourcepub fn new(input: impl AsRef<Path>) -> Self
pub fn new(input: impl AsRef<Path>) -> Self
Creates a new detector for the given audio file.
Defaults: threshold_db = -40.0, min_duration = 500 ms.
Sourcepub fn threshold_db(self, db: f32) -> Self
pub fn threshold_db(self, db: f32) -> Self
Sets the amplitude threshold in dBFS.
Audio samples below this level are considered silent. The value should
be negative (e.g. -40.0 for −40 dBFS).
Default: -40.0 dB.
Sourcepub fn min_duration(self, d: Duration) -> Self
pub fn min_duration(self, d: Duration) -> Self
Sets the minimum duration a silent segment must last to be reported.
Silence shorter than this value is ignored.
Default: 500 ms.
Sourcepub fn run(self) -> Result<Vec<SilenceRange>, DecodeError>
pub fn run(self) -> Result<Vec<SilenceRange>, DecodeError>
Runs silence detection and returns all detected SilenceRange values.
§Errors
DecodeError::AnalysisFailed— input file not found or an internal filter-graph error occurs.