mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 10:53:50 +02:00
A BUNCH of HLS (and related) progress
- Add support for fMP4 segments - Add initInput (supported by ISOBMFF and MPEG-TS) - Input.isSupported() - Refactored file size retrieval logic, the file size can now be retrieved alongside the first read. - Add support for unsized UrlSources - Add support for multiple trun boxes in a row for the same track (as the spec literally says lol) - Add support for more M3U8 features - Fix faulty line reader - MPEG-TS improvements: support video parameters not in first packet, support better key frame detection, support extension PES packets without PTS - Fix reorder buffer being 1 element too small
This commit is contained in:
+40
-1
@@ -11,8 +11,33 @@
|
||||
document.body.append(fileInput);
|
||||
|
||||
fileInput.addEventListener('change', async () => {
|
||||
const file = fileInput.files[0];
|
||||
const input = new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source: new Mediabunny.BlobSource(file),
|
||||
});
|
||||
|
||||
/*
|
||||
const manifest = new Mediabunny.ManifestInput({
|
||||
entryPath: 'https://playertest.longtailvideo.com/adaptive/aes-with-tracks/master.m3u8'
|
||||
entryPath: /*'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8' ?? 'https://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/v720p_ts.m3u8',
|
||||
getSource: path => new Mediabunny.UrlSource(path),
|
||||
manifestFormats: Mediabunny.ALL_MANIFEST_FORMATS,
|
||||
mediaFormats: Mediabunny.ALL_FORMATS,
|
||||
});
|
||||
const variants = await manifest.getVariants();
|
||||
const variant = variants[0];
|
||||
const input = variant.toInput();
|
||||
*/
|
||||
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
|
||||
|
||||
console.log(await sink.getPacket(17.48808888888889));
|
||||
/*
|
||||
const manifest = new Mediabunny.ManifestInput({
|
||||
entryPath: 'https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8'
|
||||
?? 'https://playertest.longtailvideo.com/adaptive/vod-with-mp3/manifest.m3u8'
|
||||
?? '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'
|
||||
@@ -27,6 +52,19 @@
|
||||
});
|
||||
|
||||
const variants = await manifest.getVariants();
|
||||
const variant = variants[0];
|
||||
const firstSegment = await variant.getFirstSegment();
|
||||
const input = await firstSegment.toInput();
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
|
||||
|
||||
for await (const packet of sink.packets()) {
|
||||
console.log(packet.byteLength, packet.timestamp, packet.duration)
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
return;
|
||||
const variant = variants[2];//variants.find(x => x.path.endsWith('aac/und/stream.m3u8'));
|
||||
const input = variant.toInput();
|
||||
const audioTrack = await input.getPrimaryAudioTrack();
|
||||
@@ -35,6 +73,7 @@
|
||||
for await (const packet of sink.packets()) {
|
||||
console.log(packet.timestamp, packet.duration)
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
const file = fileInput.files[0];
|
||||
|
||||
Reference in New Issue
Block a user