What does the corners effect do in compose?
Pin the clip's four corners to four points, so footage sits on a surface in the shot. Here the river plays on the laptop screen.
Framing
Pin the clip's four corners to four points, so footage sits on a surface in the shot. Here the river plays on the laptop screen.
Shown on River footage pinned to a laptop screen
Put it on the clip itself, beside its asset.
{ "transform": { "corners": { "topLeft": { "x": "45.0%", "y": "33.6%" }, "topRight": { "x": "62.6%", "y": "32.4%" }, "bottomRight": { "x": "61.0%", "y": "54.6%" }, "bottomLeft": { "x": "43.4%", "y": "54.0%" } } }}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/laptop.jpg" }, start: 0, length: 5 } ] }, { clips: [ { asset: { type: "video", src: "https://cdn.rendobar.com/compose/showcase/media/river.mp4" }, start: 0, transform: { corners: { topLeft: { x: "45.0%", y: "33.6%" }, topRight: { x: "62.6%", y: "32.4%" }, bottomRight: { x: "61.0%", y: "54.6%" }, bottomLeft: { x: "43.4%", y: "54.0%" } } } } ] } ] } },});
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/laptop.jpg"},"start":0,"length":5}]},{"clips":[{"asset":{"type":"video","src":"https://cdn.rendobar.com/compose/showcase/media/river.mp4"},"start":0,"transform":{"corners":{"topLeft":{"x":"45.0%","y":"33.6%"},"topRight":{"x":"62.6%","y":"32.4%"},"bottomRight":{"x":"61.0%","y":"54.6%"},"bottomLeft":{"x":"43.4%","y":"54.0%"}}}}]}]}}}'Returns immediately with a job id. Poll GET /jobs/{id} or register a webhook rather than blocking on the request.
Pin the clip's four corners to four points, so footage sits on a surface in the shot. Here the river plays on the laptop screen.
Send a compose job to the Rendobar API with this entry in the timeline: {"transform":{"corners":{"topLeft":{"x":"45.0%","y":"33.6%"},"topRight":{"x":"62.6%","y":"32.4%"},"bottomRight":{"x":"61.0%","y":"54.6%"},"bottomLeft":{"x":"43.4%","y":"54.0%"}}}}. Put it on the clip itself, beside its asset. The request on this page is complete and renders as shown.