diff --git a/mux/fmp4/src/fmp4mux/imp.rs b/mux/fmp4/src/fmp4mux/imp.rs index 08c39d1b..38e48dd0 100644 --- a/mux/fmp4/src/fmp4mux/imp.rs +++ b/mux/fmp4/src/fmp4mux/imp.rs @@ -2928,7 +2928,22 @@ impl ElementImpl for FMP4Mux { impl AggregatorImpl for FMP4Mux { fn next_time(&self) -> Option { let state = self.state.lock().unwrap(); - state.chunk_start_pts.opt_add(state.timeout_delay) + let agg = self.obj(); + let segment = agg + .src_pad() + .segment() + .downcast::() + .expect("TIME segment"); + + state + .chunk_start_pts + .opt_add(state.timeout_delay) + .and_then(|mut t| { + if !agg.class().as_ref().variant.is_single_stream() { + t += SEGMENT_OFFSET; + } + segment.to_running_time(t) + }) } fn sink_query(