Floor Matroska default packet duration (fixes #170)

This commit is contained in:
Vanilagy
2025-11-10 16:14:25 +01:00
parent fd8c74d4db
commit c0da28fb6c
2 changed files with 28 additions and 1 deletions
+26
View File
@@ -15,6 +15,31 @@
}); });
const videoTrack = await input.getPrimaryVideoTrack(); const videoTrack = await input.getPrimaryVideoTrack();
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
for await (const packet of sink.packets()) {
console.log(packet.timestamp, packet.duration, packet.timestamp + packet.duration);
}
/*
const sink = new Mediabunny.VideoSampleSink(videoTrack);
for await (const sample of sink.samples()) {
console.log(sample.timestamp, sample.duration);
sample.close();
}
*/
/*
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
for await (const packet of sink.packets()) {
console.log(packet.timestamp, packet.timestamp + packet.duration);
}
*/
/*
const sink = new Mediabunny.VideoSampleSink(videoTrack); const sink = new Mediabunny.VideoSampleSink(videoTrack);
console.log(await videoTrack.getDecoderConfig()) console.log(await videoTrack.getDecoderConfig())
@@ -30,6 +55,7 @@
for await (const sample of sink.samples()) { for await (const sample of sink.samples()) {
console.log(sample); console.log(sample);
} }
*/
/* /*
let total = 0; let total = 0;
+2 -1
View File
@@ -1181,8 +1181,9 @@ export class MatroskaDemuxer extends Demuxer {
case EBMLId.DefaultDuration: { case EBMLId.DefaultDuration: {
if (!this.currentTrack) break; if (!this.currentTrack) break;
// Floored to reduce chance of overlapping packets (https://github.com/Vanilagy/mediabunny/issues/170)
this.currentTrack.defaultDuration this.currentTrack.defaultDuration
= this.currentTrack.segment.timestampFactor * readUnsignedInt(slice, size) / 1e9; = Math.floor(this.currentTrack.segment.timestampFactor * readUnsignedInt(slice, size) / 1e9);
}; break; }; break;
case EBMLId.Name: { case EBMLId.Name: {