mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 02:43:48 +02:00
91 lines
2.0 KiB
HTML
91 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<script src="../dist/metamuxer.js"></script>
|
|
|
|
<script type="module">
|
|
const fileInput = document.createElement('input');
|
|
fileInput.type = 'file';
|
|
document.body.append(fileInput);
|
|
|
|
const progress = document.createElement('progress');
|
|
progress.max = 1;
|
|
document.body.append(progress);
|
|
|
|
fileInput.addEventListener('change', async () => {
|
|
const file = fileInput.files[0];
|
|
|
|
const source = new Metamuxer.BlobSource(file);
|
|
const target = new Metamuxer.BufferTarget();
|
|
const outputFormat = new Metamuxer.Mp4OutputFormat()
|
|
|
|
const abortController = new AbortController();
|
|
const button = document.createElement('button');
|
|
button.textContent = 'Cancel';
|
|
button.onclick = () => abortController.abort();
|
|
document.body.append(button);
|
|
|
|
console.time()
|
|
const res = await Metamuxer.convert({
|
|
input: new Metamuxer.Input({
|
|
formats: Metamuxer.ALL_FORMATS,
|
|
source
|
|
}),
|
|
output: new Metamuxer.Output({
|
|
format: outputFormat,
|
|
target
|
|
}),
|
|
audio: {
|
|
//discard: true
|
|
},
|
|
/*
|
|
video: {
|
|
discard: true,
|
|
bitrate: Metamuxer.QUALITY_VERY_HIGH,
|
|
//bitrate: Metamuxer.QUALITY_VERY_HIGH
|
|
codec: 'av1',
|
|
//width: 800,
|
|
//fit: 'fill',
|
|
//rotate: 90,
|
|
},
|
|
audio: {
|
|
bitrate: Metamuxer.QUALITY_HIGH,
|
|
codec: 'aac',
|
|
},
|
|
*/
|
|
/*
|
|
video: {
|
|
codec: 'avc',
|
|
},
|
|
audio: {
|
|
codec: 'mp3',
|
|
bitrate: 320000
|
|
},
|
|
*/
|
|
video: {
|
|
//forceReencode: true
|
|
},
|
|
trim: {
|
|
start: 0,
|
|
end: 10
|
|
},
|
|
onProgress: (event) => {
|
|
progress.value = event.completion;
|
|
},
|
|
abortSignal: abortController.signal
|
|
});
|
|
console.timeEnd()
|
|
console.log(res)
|
|
|
|
console.log("Done", target.buffer);
|
|
download(new Blob([target.buffer]), 'converted' + outputFormat.getFileExtension());
|
|
|
|
function download(blob, filename) {
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
a.click();
|
|
URL.revokeObjectURL(url);
|
|
}
|
|
});
|
|
</script> |