mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 19:03:46 +02:00
Handle missing starting key sample in ISOBMFF
This commit is contained in:
+9
-9
@@ -8,15 +8,6 @@
|
|||||||
document.body.append(fileInput);
|
document.body.append(fileInput);
|
||||||
|
|
||||||
fileInput.addEventListener('change', async () => {
|
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 file = fileInput.files[0];
|
||||||
const source = new Mediabunny.BlobSource(file);
|
const source = new Mediabunny.BlobSource(file);
|
||||||
|
|
||||||
@@ -25,6 +16,15 @@
|
|||||||
source
|
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 audioTrack = await input.getPrimaryAudioTrack();
|
||||||
const sink = new Mediabunny.EncodedPacketSink(audioTrack);
|
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
|
const sampleIndex = this.metadataReader.readU32() - 1; // Convert to 0-indexed
|
||||||
track.sampleTable.keySampleIndices.push(sampleIndex);
|
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;
|
}; break;
|
||||||
|
|
||||||
case 'stsc': {
|
case 'stsc': {
|
||||||
|
|||||||
Reference in New Issue
Block a user