mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-28 03:13:51 +02:00
Add VP8, VP9 and AV1 support to MP4 demuxer
This commit is contained in:
@@ -16,6 +16,40 @@
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
|
||||
const target = new Metamuxer.ArrayBufferTarget();
|
||||
const format = new Metamuxer.Mp4OutputFormat();
|
||||
const output = new Metamuxer.Output({ target, format });
|
||||
|
||||
const mediaSource = new Metamuxer.VideoFrameSource({
|
||||
codec: 'av1',
|
||||
bitrate: 1e6
|
||||
});
|
||||
output.addVideoTrack(mediaSource);
|
||||
|
||||
output.start();
|
||||
|
||||
for await (const frame of drain.frames(0, 10)) {
|
||||
console.log(frame.timestamp, frame.duration)
|
||||
await mediaSource.digest(frame);
|
||||
frame.close();
|
||||
}
|
||||
|
||||
await output.finalize();
|
||||
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);
|
||||
}
|
||||
|
||||
download(new Blob([target.buffer]), 'converted.mp4');
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
const drain = new Metamuxer.VideoFrameDrain(videoTrack);
|
||||
|
||||
async function* timestamps() {
|
||||
const fromTime = 0;
|
||||
const toTime = await videoTrack.computeDuration();
|
||||
@@ -50,6 +84,7 @@
|
||||
console.log(clone)
|
||||
}
|
||||
console.log("done")
|
||||
*/
|
||||
|
||||
/*
|
||||
const videoTrack = await input.getPrimaryVideoTrack();
|
||||
|
||||
@@ -203,6 +203,8 @@ async function runAudioIterator() {
|
||||
}
|
||||
|
||||
function formatSeconds(seconds) {
|
||||
seconds = Math.round(seconds * 1000) / 1000; // Round to milliseconds
|
||||
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
const remainingSeconds = Math.floor(seconds % 60);
|
||||
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}.${Math.floor(1000 * seconds % 1000).toString().padStart(3, '0')}`;
|
||||
|
||||
Reference in New Issue
Block a user