diff --git a/dev/demux.html b/dev/demux.html
index c9c5fd5..04d1e43 100644
--- a/dev/demux.html
+++ b/dev/demux.html
@@ -8,15 +8,6 @@
document.body.append(fileInput);
fileInput.addEventListener('change', async () => {
- const videoUrl = "https://upload.wikimedia.org/wikipedia/commons/5/53/1941._%D0%9A%D0%BE%D0%BD%D1%91%D0%BA-%D0%B3%D0%BE%D1%80%D0%B1%D1%83%D0%BD%D0%BE%D0%BA.webm"
- const source = new Mediabunny.UrlSource(videoUrl)
- const input = new Mediabunny.Input({ formats: Mediabunny.ALL_FORMATS, source });
-
- const videoTrack = await input.getPrimaryVideoTrack();
-
- console.log(videoTrack);
-
- /*
const file = fileInput.files[0];
const source = new Mediabunny.BlobSource(file);
@@ -25,6 +16,15 @@
source
});
+ const videoTrack = await input.getPrimaryVideoTrack();
+ const sink = new Mediabunny.EncodedPacketSink(videoTrack);
+
+ for await (const packet of sink.packets(undefined, undefined, { verifyKeyPackets: false })) {
+ console.log(packet);
+ if (packet.timestamp >= 2.4) break;
+ }
+
+ /*
const audioTrack = await input.getPrimaryAudioTrack();
const sink = new Mediabunny.EncodedPacketSink(audioTrack);
diff --git a/src/isobmff/isobmff-demuxer.ts b/src/isobmff/isobmff-demuxer.ts
index 20bcf42..80c1dc2 100644
--- a/src/isobmff/isobmff-demuxer.ts
+++ b/src/isobmff/isobmff-demuxer.ts
@@ -1459,6 +1459,12 @@ export class IsobmffDemuxer extends Demuxer {
const sampleIndex = this.metadataReader.readU32() - 1; // Convert to 0-indexed
track.sampleTable.keySampleIndices.push(sampleIndex);
}
+
+ if (track.sampleTable.keySampleIndices[0] !== 0) {
+ // Some files don't mark the first sample a key sample, which is basically almost always incorrect.
+ // Here, we correct for that mistake:
+ track.sampleTable.keySampleIndices.unshift(0);
+ }
}; break;
case 'stsc': {