Merge branch 'main' into metadata

This commit is contained in:
Vanilagy
2025-09-03 21:12:16 +02:00
73 changed files with 10138 additions and 3072 deletions
+4 -2
View File
@@ -18,13 +18,15 @@
const file = fileInput.files[0];
const source = new Mediabunny.BlobSource(file);
const target = new Mediabunny.BufferTarget() ?? new Mediabunny.StreamTarget(new WritableStream({
const target = new Mediabunny.NullTarget() ?? new Mediabunny.BufferTarget() ?? new Mediabunny.StreamTarget(new WritableStream({
write: console.log
}), {
chunked: true,
chunkSize: 2**20
});
const outputFormat = new Mediabunny.Mp3OutputFormat({});
const outputFormat = new Mediabunny.Mp4OutputFormat({
onMoov: console.log
});
const button = document.createElement('button');
button.textContent = 'Cancel';
+162 -4
View File
@@ -9,17 +9,166 @@
fileInput.addEventListener('change', async () => {
const file = fileInput.files[0];
const source = new Mediabunny.BlobSource(file);
const input = new Mediabunny.Input({
formats: Mediabunny.ALL_FORMATS,
source: new Mediabunny.BlobSource(file),
});
console.log(await input.getMetadata());
/*
const screenStream = await navigator.mediaDevices.getDisplayMedia({ video: true });
const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });
const combinedStream = new MediaStream([
...screenStream.getTracks(),
...micStream.getTracks()
]);
const recorder = new MediaRecorder(combinedStream);
const { writable, readable } = new TransformStream({
async transform(chunk, controller) {
const arrayBuffer = await chunk.arrayBuffer();
controller.enqueue(new Uint8Array(arrayBuffer));
}
});
const writer = writable.getWriter();
const input = new Mediabunny.Input({
source: new Mediabunny.ReadableStreamSource(readable),
formats: Mediabunny.ALL_FORMATS,
});
(async () => {
const videoTrack = await input.getPrimaryVideoTrack();
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
for await (const packet of sink.packets()) {
console.log(packet);
}
})();
recorder.onerror = console.error;
recorder.onstart = () => console.log("yes")
recorder.ondataavailable = async e => {
writer.write(e.data);
};
recorder.onstop = (e) => {
writer.close();
};
recorder.start(1000);
window.addEventListener('click', () => {
recorder.stop()
}, { once: true })
*/
/*
const transformStream = new TransformStream();
const file = fileInput.files[0];
const source = new Mediabunny.ReadableStreamSource(transformStream.readable);
file.stream().pipeThrough(transformStream);
const input = new Mediabunny.Input({
formats: Mediabunny.ALL_FORMATS,
source//: new Mediabunny.BlobSource(file),
});
const audioTrack = await input.getPrimaryAudioTrack();
console.log(audioTrack);
const sink = new Mediabunny.EncodedPacketSink(audioTrack);
//console.log(await sink.getPacket(100))
console.log(await input.computeDuration())
*/
/*
const screenStream = await navigator.mediaDevices.getDisplayMedia({ video: true });
const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });
const combinedStream = new MediaStream([
...screenStream.getTracks(),
...micStream.getTracks()
]);
const recorder = new MediaRecorder(combinedStream);
const { writable, readable } = new TransformStream({
async transform(chunk, controller) {
const arrayBuffer = await chunk.arrayBuffer();
controller.enqueue(new Uint8Array(arrayBuffer));
}
});
const writer = writable.getWriter();
const input = new Mediabunny.Input({
source: new Mediabunny.ReadableStreamSource(readable),
formats: Mediabunny.ALL_FORMATS,
});
(async () => {
const videoTrack = await input.getPrimaryVideoTrack();
const sink = new Mediabunny.EncodedPacketSink(videoTrack);
for await (const packet of sink.packets()) {
console.log(packet);
}
})();
recorder.onerror = console.error;
recorder.onstart = () => console.log("yes")
recorder.ondataavailable = async e => {
writer.write(e.data);
};
recorder.onstop = (e) => {
writer.close();
};
recorder.start(1000);
window.addEventListener('click', () => {
recorder.stop()
}, { once: true })
//setTimeout(() => recorder.stop(), 5000)
*/
/*
const transformStream = new TransformStream();
const file = fileInput.files[0];
const source = new Mediabunny.ReadableStreamSource(transformStream.readable);
file.stream().pipeTo(transformStream.writable);
const input = new Mediabunny.Input({
formats: Mediabunny.ALL_FORMATS,
source
});
//const blob = new Blob([(await input.getMetadata()).images[0].data], { type: (await input.getMetadata()).images[0].mimeType });
//console.log(URL.createObjectURL(blob))
const audioTrack = await input.getPrimaryAudioTrack();
console.log(audioTrack);
console.log(await input.getMetadata());
//return;
const sink = new Mediabunny.EncodedPacketSink(audioTrack);
for await (const packet of sink.packets()) {
console.log(packet);
}
console.log("done");
*/
//console.log(await sink.getPacket(1))
/*
const videoTrack = await input.getPrimaryVideoTrack();
@@ -29,6 +178,15 @@
console.log(videoTrack.internalCodecId);
*/
/*
const sink = new Mediabunny.AudioSampleSink(await input.getPrimaryAudioTrack());
for await (const sample of sink.samples()) {
console.log(sample)
break;
}
*/
/*
const sink = new Mediabunny.EncodedPacketSink(videoTrack);