mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-28 11:23:45 +02:00
Metamuxer -> Mediabunny
This commit is contained in:
+11
-11
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<script src="../dist/metamuxer.js"></script>
|
||||
<script src="../dist/mediabunny.js"></script>
|
||||
|
||||
<script type="module">
|
||||
const fileInput = document.createElement('input');
|
||||
@@ -14,26 +14,26 @@
|
||||
fileInput.addEventListener('change', async () => {
|
||||
const file = fileInput.files[0];
|
||||
|
||||
const source = new Metamuxer.BlobSource(file);
|
||||
const target = new Metamuxer.BufferTarget() ?? new Metamuxer.StreamTarget(new WritableStream({
|
||||
const source = new Mediabunny.BlobSource(file);
|
||||
const target = new Mediabunny.BufferTarget() ?? new Mediabunny.StreamTarget(new WritableStream({
|
||||
write: console.log
|
||||
}), {
|
||||
chunked: true,
|
||||
chunkSize: 2**20
|
||||
});
|
||||
const outputFormat = new Metamuxer.MovOutputFormat();
|
||||
const outputFormat = new Mediabunny.MovOutputFormat();
|
||||
|
||||
const button = document.createElement('button');
|
||||
button.textContent = 'Cancel';
|
||||
button.onclick = () => conversion.cancel();
|
||||
document.body.append(button);
|
||||
|
||||
const conversion = await Metamuxer.Conversion.init({
|
||||
input: new Metamuxer.Input({
|
||||
formats: Metamuxer.ALL_FORMATS,
|
||||
const conversion = await Mediabunny.Conversion.init({
|
||||
input: new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source
|
||||
}),
|
||||
output: new Metamuxer.Output({
|
||||
output: new Mediabunny.Output({
|
||||
format: outputFormat,
|
||||
target
|
||||
}),
|
||||
@@ -47,15 +47,15 @@
|
||||
/*
|
||||
video: {
|
||||
discard: true,
|
||||
bitrate: Metamuxer.QUALITY_VERY_HIGH,
|
||||
//bitrate: Metamuxer.QUALITY_VERY_HIGH
|
||||
bitrate: Mediabunny.QUALITY_VERY_HIGH,
|
||||
//bitrate: Mediabunny.QUALITY_VERY_HIGH
|
||||
codec: 'av1',
|
||||
//width: 800,
|
||||
//fit: 'fill',
|
||||
//rotate: 90,
|
||||
},
|
||||
audio: {
|
||||
bitrate: Metamuxer.QUALITY_HIGH,
|
||||
bitrate: Mediabunny.QUALITY_HIGH,
|
||||
codec: 'aac',
|
||||
},
|
||||
*/
|
||||
|
||||
+59
-59
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<script src="../dist/metamuxer.js"></script>
|
||||
<script src="../dist/mediabunny.js"></script>
|
||||
|
||||
<script type="module">
|
||||
const fileInput = document.createElement('input');
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
fileInput.addEventListener('change', async () => {
|
||||
const file = fileInput.files[0];
|
||||
const source = new Metamuxer.BlobSource(file);
|
||||
const source = new Mediabunny.BlobSource(file);
|
||||
|
||||
const input = new Metamuxer.Input({
|
||||
formats: Metamuxer.ALL_FORMATS,
|
||||
const input = new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source
|
||||
});
|
||||
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
|
||||
const sink = new Metamuxer.EncodedPacketSink(videoTrack);
|
||||
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
|
||||
for await (const packet of sink.packets()) {
|
||||
if (packet.timestamp >= 2) break;
|
||||
console.log(packet);
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
/*
|
||||
let timestamps = [];
|
||||
const packetSink = new Metamuxer.EncodedPacketSink(videoTrack);
|
||||
const packetSink = new Mediabunny.EncodedPacketSink(videoTrack);
|
||||
for await (const packet of packetSink.packets()) {
|
||||
if (packet.timestamp >= 1) {
|
||||
break;
|
||||
@@ -83,14 +83,14 @@
|
||||
//return;
|
||||
/*
|
||||
console.log(timestamps);
|
||||
const sink = new Metamuxer.EncodedPacketSink(videoTrack);
|
||||
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
|
||||
for await (const packet of sink.packets()) {
|
||||
console.log(packet.sequenceNumber);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
const sink = new Metamuxer.VideoSampleSink(videoTrack);
|
||||
const sink = new Mediabunny.VideoSampleSink(videoTrack);
|
||||
for await (const sample of sink.samplesAtTimestamps(timestamps)) {
|
||||
console.log("wee", sample.timestamp);
|
||||
sample.close();
|
||||
@@ -99,7 +99,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const sink = new Metamuxer.CanvasSink(videoTrack, { width: 320 });
|
||||
const sink = new Mediabunny.CanvasSink(videoTrack, { width: 320 });
|
||||
for await (const wrappedCanvas of sink.canvasesAtTimestamps(timestamps)) {
|
||||
console.log(wrappedCanvas);
|
||||
}
|
||||
@@ -129,15 +129,15 @@
|
||||
|
||||
|
||||
/*
|
||||
const output = new Metamuxer.Output({
|
||||
format: new Metamuxer.Mp3OutputFormat(),
|
||||
target: new Metamuxer.BufferTarget()
|
||||
const output = new Mediabunny.Output({
|
||||
format: new Mediabunny.Mp3OutputFormat(),
|
||||
target: new Mediabunny.BufferTarget()
|
||||
});
|
||||
|
||||
const audioTrack = await input.getPrimaryAudioTrack();
|
||||
const sink = new Metamuxer.AudioDataSink(audioTrack);
|
||||
const sink = new Mediabunny.AudioDataSink(audioTrack);
|
||||
|
||||
const mediaSource = new Metamuxer.AudioDataSource({
|
||||
const mediaSource = new Mediabunny.AudioDataSource({
|
||||
codec: 'mp3',
|
||||
bitrate: 192000
|
||||
});
|
||||
@@ -167,31 +167,31 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const sink = new Metamuxer.EncodedVideoSampleSink(videoTrack);
|
||||
const sink = new Mediabunny.EncodedVideoSampleSink(videoTrack);
|
||||
|
||||
console.log(await sink.getSample(16));
|
||||
console.log(await sink.getFirstSample());
|
||||
*/
|
||||
|
||||
/*
|
||||
const source = new Metamuxer.BufferSource(await file.arrayBuffer()) ?? new Metamuxer.BlobSource(file);
|
||||
const source = new Mediabunny.BufferSource(await file.arrayBuffer()) ?? new Mediabunny.BlobSource(file);
|
||||
|
||||
const start = performance.now();
|
||||
const input = new Metamuxer.Input({
|
||||
formats: Metamuxer.ALL_FORMATS,
|
||||
const input = new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source
|
||||
});
|
||||
|
||||
const output = new Metamuxer.Output({
|
||||
format: new Metamuxer.WaveOutputFormat(),
|
||||
target: new Metamuxer.BufferTarget()
|
||||
const output = new Mediabunny.Output({
|
||||
format: new Mediabunny.WaveOutputFormat(),
|
||||
target: new Mediabunny.BufferTarget()
|
||||
});
|
||||
output.start();
|
||||
*/
|
||||
|
||||
/*
|
||||
const audioTrack = await input.getPrimaryAudioTrack();
|
||||
const sink = new Metamuxer.EncodedAudioSampleSink(audioTrack);
|
||||
const sink = new Mediabunny.EncodedAudioSampleSink(audioTrack);
|
||||
|
||||
let total = 0;
|
||||
for await (const sample of sink.samples(undefined, undefined, { metadataOnly: true })) {
|
||||
@@ -204,7 +204,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const sink = new Metamuxer.VideoFrameSink(videoTrack);
|
||||
const sink = new Mediabunny.VideoFrameSink(videoTrack);
|
||||
|
||||
console.log(await videoTrack.getLanguageCode());
|
||||
|
||||
@@ -219,9 +219,9 @@
|
||||
//console.log(await videoTrack.computeSampleStats());
|
||||
//return;
|
||||
|
||||
const target = new Metamuxer.BufferTarget();
|
||||
const output = new Metamuxer.Output({
|
||||
format: new Metamuxer.WaveOutputFormat(),
|
||||
const target = new Mediabunny.BufferTarget();
|
||||
const output = new Mediabunny.Output({
|
||||
format: new Mediabunny.WaveOutputFormat(),
|
||||
target
|
||||
});
|
||||
|
||||
@@ -230,12 +230,12 @@
|
||||
const audioTrack = await input.getPrimaryAudioTrack();
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
|
||||
const sink = new Metamuxer.EncodedAudioSampleSink(audioTrack);
|
||||
const sink = new Mediabunny.EncodedAudioSampleSink(audioTrack);
|
||||
|
||||
const decoderConfig = await audioTrack.getDecoderConfig();
|
||||
const sampleSource = new Metamuxer.EncodedAudioSampleSource(await audioTrack.getCodec());
|
||||
const audioDataSource = new Metamuxer.AudioDataSource({ codec: 'pcm-s16', bitrate: 128e3 });
|
||||
const videoSampleSource = new Metamuxer.EncodedVideoSampleSource(await videoTrack.getCodec());
|
||||
const sampleSource = new Mediabunny.EncodedAudioSampleSource(await audioTrack.getCodec());
|
||||
const audioDataSource = new Mediabunny.AudioDataSource({ codec: 'pcm-s16', bitrate: 128e3 });
|
||||
const videoSampleSource = new Mediabunny.EncodedVideoSampleSource(await videoTrack.getCodec());
|
||||
output.addAudioTrack(audioDataSource ?? sampleSource);
|
||||
//output.addVideoTrack(videoSampleSource);
|
||||
|
||||
@@ -253,12 +253,12 @@
|
||||
// //console.log(sample)
|
||||
// await sampleSource.add(sample, { decoderConfig });
|
||||
//}
|
||||
for await (const { data, timestamp } of new Metamuxer.AudioDataSink(audioTrack).data()) {
|
||||
for await (const { data, timestamp } of new Mediabunny.AudioDataSink(audioTrack).data()) {
|
||||
//console.log("wow", data.timestamp);
|
||||
//console.log(sample)
|
||||
await audioDataSource.add(data);
|
||||
}
|
||||
//for await (const sample of new Metamuxer.EncodedVideoSampleSink(videoTrack).samples()) {
|
||||
//for await (const sample of new Mediabunny.EncodedVideoSampleSink(videoTrack).samples()) {
|
||||
// //console.log(sample)
|
||||
// await videoSampleSource.add(sample, { decoderConfig: videoDecoderConfig });
|
||||
//}
|
||||
@@ -281,13 +281,13 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const input2 = new Metamuxer.Input({
|
||||
formats: Metamuxer.ALL_FORMATS,
|
||||
source: new Metamuxer.BufferSource(target.buffer)
|
||||
const input2 = new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source: new Mediabunny.BufferSource(target.buffer)
|
||||
});
|
||||
|
||||
const videoTrack2 = await input2.getPrimaryVideoTrack();
|
||||
const drain2 = new Metamuxer.EncodedVideoSampleDrain(videoTrack2);
|
||||
const drain2 = new Mediabunny.EncodedVideoSampleDrain(videoTrack2);
|
||||
|
||||
let i = 0;
|
||||
for await (const sample of drain2.samples(undefined, undefined)) {
|
||||
@@ -302,13 +302,13 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
async function* timestamps() {
|
||||
const fromTime = 0;
|
||||
const toTime = await videoTrack.computeDuration();
|
||||
const extractDuration = toTime - fromTime;
|
||||
const drain = new Metamuxer.EncodedVideoSampleDrain(videoTrack);
|
||||
const drain = new Mediabunny.EncodedVideoSampleDrain(videoTrack);
|
||||
const thumbnailsNeeded = 16;
|
||||
|
||||
for (let i = 0; i < thumbnailsNeeded; i++) {
|
||||
@@ -341,7 +341,7 @@
|
||||
|
||||
/*
|
||||
const audioTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.EncodedVideoChunkDrain(audioTrack);
|
||||
const drain = new Mediabunny.EncodedVideoChunkDrain(audioTrack);
|
||||
|
||||
for await (const chunk of drain.chunks()) {
|
||||
//console.log(chunk);
|
||||
@@ -352,7 +352,7 @@
|
||||
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.AudioBufferDrain(audioTrack);
|
||||
const drain = new Mediabunny.AudioBufferDrain(audioTrack);
|
||||
|
||||
const chunks = drain.buffers()
|
||||
const a = chunks.next();
|
||||
@@ -364,13 +364,13 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
const target = new Metamuxer.ArrayBufferTarget();
|
||||
const format = new Metamuxer.Mp4OutputFormat();
|
||||
const output = new Metamuxer.Output({ target, format });
|
||||
const target = new Mediabunny.ArrayBufferTarget();
|
||||
const format = new Mediabunny.Mp4OutputFormat();
|
||||
const output = new Mediabunny.Output({ target, format });
|
||||
|
||||
const mediaSource = new Metamuxer.VideoFrameSource({
|
||||
const mediaSource = new Mediabunny.VideoFrameSource({
|
||||
codec: 'av1',
|
||||
bitrate: 1e6
|
||||
});
|
||||
@@ -398,13 +398,13 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
async function* timestamps() {
|
||||
const fromTime = 0;
|
||||
const toTime = await videoTrack.computeDuration();
|
||||
const extractDuration = toTime - fromTime;
|
||||
const drain = new Metamuxer.EncodedVideoChunkDrain(videoTrack);
|
||||
const drain = new Mediabunny.EncodedVideoChunkDrain(videoTrack);
|
||||
const thumbnailsNeeded = 16;
|
||||
|
||||
for (let i = 0; i < thumbnailsNeeded; i++) {
|
||||
@@ -438,7 +438,7 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
const width = await videoTrack.getWidth();
|
||||
const height = await videoTrack.getHeight();
|
||||
|
||||
@@ -467,7 +467,7 @@
|
||||
|
||||
/*
|
||||
const audioTrack = await input.getPrimaryAudioTrack();
|
||||
const drain = new Metamuxer.AudioBufferDrain(audioTrack);
|
||||
const drain = new Mediabunny.AudioBufferDrain(audioTrack);
|
||||
|
||||
const context = new AudioContext();
|
||||
const startTime = context.currentTime;
|
||||
@@ -493,7 +493,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.AudioDataDrain(audioTrack);
|
||||
const drain = new Mediabunny.AudioDataDrain(audioTrack);
|
||||
|
||||
console.time()
|
||||
for await (const data of drain.data()) {
|
||||
@@ -504,7 +504,7 @@
|
||||
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.EncodedAudioChunkDrain(audioTrack);
|
||||
const drain = new Mediabunny.EncodedAudioChunkDrain(audioTrack);
|
||||
|
||||
for await (const chunk of drain.chunks()) {
|
||||
console.log(chunk);
|
||||
@@ -517,7 +517,7 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
const width = await videoTrack.getWidth();
|
||||
const height = await videoTrack.getHeight();
|
||||
|
||||
@@ -536,7 +536,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.EncodedVideoChunkDrain(videoTrack);
|
||||
const drain = new Mediabunny.EncodedVideoChunkDrain(videoTrack);
|
||||
|
||||
const startChunk = await drain.getFirstChunk();
|
||||
for await (const chunk of drain.chunks(startChunk)) {
|
||||
@@ -552,7 +552,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
for await (const frame of drain.frames()) {
|
||||
// ...
|
||||
@@ -562,7 +562,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
|
||||
const width = await videoTrack.getWidth();
|
||||
@@ -584,7 +584,7 @@
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
for await (const frame of drain.frames(0.01)) {
|
||||
console.log(frame)
|
||||
@@ -597,7 +597,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.EncodedVideoChunkDrain(videoTrack);
|
||||
const drain = new Mediabunny.EncodedVideoChunkDrain(videoTrack);
|
||||
|
||||
const decoder = new VideoDecoder({
|
||||
output: console.log,
|
||||
@@ -622,7 +622,7 @@
|
||||
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
const drain = new Mediabunny.VideoFrameDrain(videoTrack);
|
||||
|
||||
const frame = await drain.getKeyFrame(69);
|
||||
|
||||
@@ -636,7 +636,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
const drain = new Metamuxer.EncodedVideoChunkDrain(videoTrack);
|
||||
const drain = new Mediabunny.EncodedVideoChunkDrain(videoTrack);
|
||||
|
||||
for await (const chunk of drain.chunks()) {
|
||||
console.log(chunk);
|
||||
|
||||
+8
-8
@@ -1,6 +1,6 @@
|
||||
<button>Go</button>
|
||||
|
||||
<script src="../dist/metamuxer.js"></script>
|
||||
<script src="../dist/mediabunny.js"></script>
|
||||
|
||||
<script type="module">
|
||||
function download(blob, filename) {
|
||||
@@ -18,20 +18,20 @@
|
||||
const videoTrack = stream.getVideoTracks()[0];
|
||||
const audioTrack = stream.getAudioTracks()[0];
|
||||
|
||||
const output = new Metamuxer.Output({
|
||||
target: new Metamuxer.BufferTarget(),
|
||||
format: new Metamuxer.Mp4OutputFormat(),
|
||||
const output = new Mediabunny.Output({
|
||||
target: new Mediabunny.BufferTarget(),
|
||||
format: new Mediabunny.Mp4OutputFormat(),
|
||||
});
|
||||
if (videoTrack) {
|
||||
output.addVideoTrack(new Metamuxer.MediaStreamVideoTrackSource(videoTrack, {
|
||||
output.addVideoTrack(new Mediabunny.MediaStreamVideoTrackSource(videoTrack, {
|
||||
codec: 'avc',
|
||||
bitrate: Metamuxer.QUALITY_MEDIUM
|
||||
bitrate: Mediabunny.QUALITY_MEDIUM
|
||||
}));
|
||||
}
|
||||
if (audioTrack) {
|
||||
output.addAudioTrack(new Metamuxer.MediaStreamAudioTrackSource(audioTrack, {
|
||||
output.addAudioTrack(new Mediabunny.MediaStreamAudioTrackSource(audioTrack, {
|
||||
codec: 'aac',
|
||||
bitrate: Metamuxer.QUALITY_MEDIUM
|
||||
bitrate: Mediabunny.QUALITY_MEDIUM
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
+17
-17
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<script src="../dist/metamuxer.js"></script>
|
||||
<script src="../dist/mediabunny.js"></script>
|
||||
|
||||
<script type="module">
|
||||
function download(blob, filename) {
|
||||
@@ -38,17 +38,17 @@
|
||||
canvas.height = 720;
|
||||
const context = canvas.getContext('2d');
|
||||
|
||||
let format = new Metamuxer.MkvOutputFormat({ streamable: false });
|
||||
format = new Metamuxer.Mp4OutputFormat({ fastStart: 'fragmented' }); // new Metamuxer.MkvOutputFormat();// new Metamuxer.Mp4OutputFormat({ fastStart: false });
|
||||
format = new Metamuxer.OggOutputFormat();
|
||||
format = new Metamuxer.Mp4OutputFormat({ fastStart: 'fragmented', minimumFragmentDuration: 2 });
|
||||
format = new Metamuxer.MkvOutputFormat({ minimumClusterDuration: 2 });
|
||||
format = new Metamuxer.WavOutputFormat();
|
||||
format = new Metamuxer.MkvOutputFormat();
|
||||
let target = new Metamuxer.BufferTarget();
|
||||
let format = new Mediabunny.MkvOutputFormat({ streamable: false });
|
||||
format = new Mediabunny.Mp4OutputFormat({ fastStart: 'fragmented' }); // new Mediabunny.MkvOutputFormat();// new Mediabunny.Mp4OutputFormat({ fastStart: false });
|
||||
format = new Mediabunny.OggOutputFormat();
|
||||
format = new Mediabunny.Mp4OutputFormat({ fastStart: 'fragmented', minimumFragmentDuration: 2 });
|
||||
format = new Mediabunny.MkvOutputFormat({ minimumClusterDuration: 2 });
|
||||
format = new Mediabunny.WavOutputFormat();
|
||||
format = new Mediabunny.MkvOutputFormat();
|
||||
let target = new Mediabunny.BufferTarget();
|
||||
|
||||
/*
|
||||
target = new Metamuxer.StreamTarget(new WritableStream({
|
||||
target = new Mediabunny.StreamTarget(new WritableStream({
|
||||
async write(chunk) {
|
||||
console.log(chunk)
|
||||
|
||||
@@ -57,12 +57,12 @@
|
||||
}), { chunked: true });
|
||||
*/
|
||||
|
||||
let output = new Metamuxer.Output({ format, target });
|
||||
let output = new Mediabunny.Output({ format, target });
|
||||
|
||||
/*
|
||||
let sourcy = new Metamuxer.AudioBufferSource({
|
||||
let sourcy = new Mediabunny.AudioBufferSource({
|
||||
codec: 'pcm-s16',
|
||||
bitrate: Metamuxer.QUALITY_HIGH
|
||||
bitrate: Mediabunny.QUALITY_HIGH
|
||||
});
|
||||
output.addAudioTrack(sourcy);
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
let videoSource = new Metamuxer.EncodedVideoChunkSource('avc');
|
||||
let videoSource = new Mediabunny.EncodedVideoChunkSource('avc');
|
||||
output.addTrack(videoSource);
|
||||
|
||||
output.start();
|
||||
@@ -114,16 +114,16 @@
|
||||
download(new Blob([target.buffer]), 'test.mkv');
|
||||
*/
|
||||
|
||||
let videoSource = new Metamuxer.CanvasSource(canvas, {
|
||||
let videoSource = new Mediabunny.CanvasSource(canvas, {
|
||||
codec: 'avc',
|
||||
//fullCodecString: 'avc1.42001f',
|
||||
bitrate: 1e6
|
||||
});
|
||||
let audioSource = new Metamuxer.AudioBufferSource({
|
||||
let audioSource = new Mediabunny.AudioBufferSource({
|
||||
codec: 'opus',
|
||||
bitrate: 128e3,
|
||||
});
|
||||
let subtitleSource = new Metamuxer.TextSubtitleSource('webvtt');
|
||||
let subtitleSource = new Mediabunny.TextSubtitleSource('webvtt');
|
||||
|
||||
output.addVideoTrack(videoSource, { languageCode: 'eng' });
|
||||
output.addAudioTrack(audioSource);
|
||||
|
||||
+6
-6
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="../dist/metamuxer.js"></script>
|
||||
<script src="../dist/mediabunny.js"></script>
|
||||
|
||||
<script type="module">
|
||||
const fileInput = document.querySelector('input[type="file"]');
|
||||
@@ -34,10 +34,10 @@ const file = await new Promise(resolve => {
|
||||
fileInput.style.display = 'none';
|
||||
const audioContext = new AudioContext();
|
||||
|
||||
const source = new Metamuxer.BlobSource(file);
|
||||
const source = new Mediabunny.BlobSource(file);
|
||||
|
||||
const input = new Metamuxer.Input({
|
||||
formats: Metamuxer.ALL_FORMATS,
|
||||
const input = new Mediabunny.Input({
|
||||
formats: Mediabunny.ALL_FORMATS,
|
||||
source
|
||||
});
|
||||
|
||||
@@ -69,8 +69,8 @@ durationElement.textContent = formatSeconds(totalDuration);
|
||||
|
||||
playerDiv.style.display = 'flex';
|
||||
|
||||
const videoSink = videoTrack && new Metamuxer.CanvasSink(videoTrack, { poolSize: 2 });
|
||||
const audioSink = audioTrack && new Metamuxer.AudioBufferSink(audioTrack);
|
||||
const videoSink = videoTrack && new Mediabunny.CanvasSink(videoTrack, { poolSize: 2 });
|
||||
const audioSink = audioTrack && new Mediabunny.AudioBufferSink(audioTrack);
|
||||
|
||||
let startTime = null;
|
||||
let playing = false;
|
||||
|
||||
Reference in New Issue
Block a user