diff --git a/src/track.rs b/src/track.rs index bedf67b..a88365f 100644 --- a/src/track.rs +++ b/src/track.rs @@ -724,8 +724,14 @@ impl Mp4TrackWriter { fn update_durations(&mut self, dur: u32, movie_timescale: u32) { self.trak.mdia.mdhd.duration += dur as u64; + if self.trak.mdia.mdhd.duration > (u32::MAX as u64) { + self.trak.mdia.mdhd.version = 1 + } self.trak.tkhd.duration += dur as u64 * movie_timescale as u64 / self.trak.mdia.mdhd.timescale as u64; + if self.trak.tkhd.duration > (u32::MAX as u64) { + self.trak.tkhd.version = 1 + } } pub(crate) fn write_sample( diff --git a/src/writer.rs b/src/writer.rs index 7953363..2a45ade 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -135,6 +135,9 @@ impl Mp4Writer { moov.mvhd.timescale = self.timescale; moov.mvhd.duration = self.duration; + if moov.mvhd.duration > (u32::MAX as u64) { + moov.mvhd.version = 1 + } moov.write_box(&mut self.writer)?; Ok(()) }