import { mkdtempSync, writeFileSync, readFileSync, rmSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' import { runFfmpeg } from '../ffmpeg' export async function fitStill(data: Buffer, width: number, height: number) { const dir=mkdtempSync(join(tmpdir(),'studio2-fit-')) try { const input=join(dir,'source'),output=join(dir,'fitted.png') writeFileSync(input,data) await runFfmpeg(['-y','-i',input,'-vf',`scale=${width}:${height}:force_original_aspect_ratio=decrease,pad=${width}:${height}:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1`,'-frames:v','1',output]) return readFileSync(output) } finally { rmSync(dir,{recursive:true,force:true}) } }