UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

61 lines (51 loc) 1.27 kB
import {Driver} from "../../driver/driver.js" import {DecoderSource} from "../../driver/fns/schematic.js" export function setupTranscodeTest(driver: Driver, source: DecoderSource) { const dimensions = {width: 1920, height: 1080} const canvas = document.createElement("canvas") canvas.width = dimensions.width canvas.height = dimensions.height const ctx = canvas.getContext("2d") async function run() { const video = driver.decodeVideo({ source, async onFrame(frame) { const composed = await driver.composite([ { id: 0, kind: "image", frame }, { id: 1, kind: "text", content: "omnitool", style: { fontSize: 50, fill: "green" } } ]) frame.close() ctx?.drawImage(composed, 0, 0) return composed } }) const audio = driver.decodeAudio({source}) const {readable, done} = driver.encode({ video: video.readable, audio: audio.readable, config: { audio: {codec: "opus", bitrate: 128000}, video: {codec: "vp9", bitrate: 1000000} } }) const handle = await window.showSaveFilePicker() const writable = await handle.createWritable() await Promise.all([ readable.pipeTo(writable), done ]) } return {canvas, run} }