mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 02:43:48 +02:00
Merge branch 'main' into metadata
This commit is contained in:
+4
-2
@@ -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
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user