mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 10:53:50 +02:00
Handle missing starting key sample in ISOBMFF
This commit is contained in:
+9
-9
@@ -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);
|
||||
|
||||
|
||||
@@ -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': {
|
||||
|
||||
Reference in New Issue
Block a user