From c38c285eab9d951e1994683c76cce3cbdf2cc533 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Sat, 11 Jan 2025 19:39:01 +0100 Subject: [PATCH] Add Matroska demuxer --- dev/index.html | 12 +- dev/player.html | 19 +- src/input-format.ts | 67 +- src/input.ts | 2 +- src/isobmff/isobmff-demuxer.ts | 29 +- src/isobmff/isobmff-reader.ts | 2 + src/matroska/ebml.ts | 373 +++++++- src/matroska/matroska-demuxer.ts | 1524 ++++++++++++++++++++++++++++++ src/matroska/matroska-muxer.ts | 255 +---- todo.txt | 4 +- 10 files changed, 2031 insertions(+), 256 deletions(-) create mode 100644 src/matroska/matroska-demuxer.ts diff --git a/dev/index.html b/dev/index.html index 78c52d9..cf04aab 100644 --- a/dev/index.html +++ b/dev/index.html @@ -38,9 +38,9 @@ canvas.height = 720; const context = canvas.getContext('2d'); - let format = new Metamuxer.WebMOutputFormat({ streamable: true }); - format = new Metamuxer.Mp4OutputFormat({ fastStart: false }); // new Metamuxer.MkvOutputFormat();// new Metamuxer.Mp4OutputFormat({ fastStart: false }); - let target = new Metamuxer.ArrayBufferTarget(); + let format = new Metamuxer.WebMOutputFormat({ streamable: false }); + //format = new Metamuxer.Mp4OutputFormat({ fastStart: false }); // new Metamuxer.MkvOutputFormat();// new Metamuxer.Mp4OutputFormat({ fastStart: false }); + let target = new Metamuxer.BufferTarget(); /* target = new Metamuxer.StreamTarget(new WritableStream({ @@ -84,7 +84,7 @@ */ let videoSource = new Metamuxer.CanvasSource(canvas, { - codec: 'avc', + codec: 'vp9', bitrate: 1e6 }); let audioSource = new Metamuxer.AudioBufferSource({ @@ -95,7 +95,7 @@ output.addVideoTrack(videoSource); output.addAudioTrack(audioSource); - output.addSubtitleTrack(subtitleSource); + //output.addSubtitleTrack(subtitleSource); output.start(); @@ -174,5 +174,5 @@ Testing... <00:17.350>One... <00:18.125>Two... await output.finalize(); console.log(target); - download(new Blob([target.buffer]), 'test.mp4'); + download(new Blob([target.buffer]), 'test.webm'); \ No newline at end of file diff --git a/dev/player.html b/dev/player.html index 1e871f6..4c31360 100644 --- a/dev/player.html +++ b/dev/player.html @@ -1,6 +1,6 @@ - +