[WIP] Add majority of logic for HLS reading support

This commit is contained in:
Vanilagy
2026-01-27 14:45:44 +01:00
parent f620a328e5
commit d1fbea3e19
48 changed files with 5511 additions and 9 deletions
+34 -4
View File
@@ -8,18 +8,48 @@
document.body.append(fileInput);
fileInput.addEventListener('change', async () => {
const manifest = new Mediabunny.ManifestInput({
entryPath: 'https://playertest.longtailvideo.com/adaptive/aes-with-tracks/master.m3u8'
?? 'https://playertest.longtailvideo.com/adaptive/customIV/prog_index.m3u8'
?? 'https://playertest.longtailvideo.com/adaptive/issue666/playlists/cisq0gim60007xzvi505emlxx.m3u8'
?? 'https://test-streams.mux.dev/dai-discontinuity-deltatre/manifest.m3u8'
?? 'https://test-streams.mux.dev/x36xhzz/url_0/193039199_mp4_h264_aac_hd_7.m3u8'
?? 'https://test-streams.mux.dev/dai-discontinuity-deltatre/manifest.m3u8'
?? 'https://cdn.jwplayer.com/manifests/pZxWPRg4.m3u8'
?? 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8'
?? 'https://test-streams.mux.dev/x36xhzz/url_0/193039199_mp4_h264_aac_hd_7.m3u8',
getSource: path => new Mediabunny.UrlSource(path),
manifestFormats: Mediabunny.ALL_MANIFEST_FORMATS,
mediaFormats: Mediabunny.ALL_FORMATS,
});
const variants = await manifest.getVariants();
const variant = variants[2];//variants.find(x => x.path.endsWith('aac/und/stream.m3u8'));
const input = variant.toInput();
const audioTrack = await input.getPrimaryAudioTrack();
const sink = new Mediabunny.EncodedPacketSink(audioTrack);
for await (const packet of sink.packets()) {
console.log(packet.timestamp, packet.duration)
}
/*
const file = fileInput.files[0];
const input = new Mediabunny.Input({
formats: Mediabunny.ALL_FORMATS,
source: new Mediabunny.BlobSource(file),
source: new Mediabunny.UrlSource('https://playertest.longtailvideo.com/adaptive/captions/130130211307_1.ts'),
});
const track = await input.getPrimaryVideoTrack();
const sink = new Mediabunny.EncodedPacketSink(track);
const videoTrack = await input.getPrimaryVideoTrack();
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
for await (const packet of sink.packets()) {
console.log(packet);
console.log("Packet", packet.timestamp)
for (const thing of window.iterateNalUnitsInAnnexB(packet.data)) {
console.log(thing, "type", window.extractNalUnitTypeForAvc(packet.data[thing.offset]))
}
}
*/
/*