What does the keyframes effect do in compose?
A Ken Burns push on a still photo. The box scales from 1 to 1.15 across the clip, eased in and out, so a photograph becomes a shot.
Media and clips
A Ken Burns push on a still photo. The box scales from 1 to 1.15 across the clip, eased in and out, so a photograph becomes a shot.
Shown on A photo of a coast
Put it on the clip, in place of the plain value the field would otherwise take.
{ "transform": { "scale": [ { "time": "0%", "value": 1, "easing": "easeInOutSine" }, { "time": "100%", "value": 1.15 } ] }}The whole request behind the render above. Paste it as it is, or swap the file for your own.
import { createClient, outputUrl } from "@rendobar/sdk";
const rb = createClient({ apiKey: process.env.RENDOBAR_API_KEY });
const job = await rb.jobs.run({ type: "compose", params: { schemaVersion: 1, output: { format: "mp4", resolution: { width: 960, height: 540 } }, timeline: { tracks: [ { clips: [ { asset: { type: "image", src: "https://cdn.rendobar.com/compose/showcase/media/coast.jpg" }, start: 0, length: 5, transform: { scale: [ { time: "0%", value: 1, easing: "easeInOutSine" }, { time: "100%", value: 1.15 } ] } } ] } ] } },});
console.log(outputUrl(job));Install with npm i @rendobar/sdk. jobs.run() submits and waits, so it returns the finished job in one call.
curl https://api.rendobar.com/jobs \ -H "Authorization: Bearer $RENDOBAR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type":"compose","params":{"schemaVersion":1,"output":{"format":"mp4","resolution":{"width":960,"height":540}},"timeline":{"tracks":[{"clips":[{"asset":{"type":"image","src":"https://cdn.rendobar.com/compose/showcase/media/coast.jpg"},"start":0,"length":5,"transform":{"scale":[{"time":"0%","value":1,"easing":"easeInOutSine"},{"time":"100%","value":1.15}]}}]}]}}}'Returns immediately with a job id. Poll GET /jobs/{id} or register a webhook rather than blocking on the request.
A Ken Burns push on a still photo. The box scales from 1 to 1.15 across the clip, eased in and out, so a photograph becomes a shot.
Send a compose job to the Rendobar API with this entry in the timeline: {"transform":{"scale":[{"time":"0%","value":1,"easing":"easeInOutSine"},{"time":"100%","value":1.15}]}}. Put it on the clip, in place of the plain value the field would otherwise take. The request on this page is complete and renders as shown.