Clips

Animate a progress bar with keyframes

Keyframes on the box itself. The bar's width runs from nothing to most of the frame across the clip, which is a progress bar with no new field to learn.

Shown on A progress bar over rafting on the Rogue River

Before · the same request without it
After · rendered from the request below

The entry

Put it on the clip itself, beside its asset.

{
"transform": {
"anchor": "topLeft",
"position": {
"x": "7%",
"y": "90%"
},
"size": [
{
"time": "0%",
"value": {
"width": "2%",
"height": "2.4%"
}
},
{
"time": "100%",
"value": {
"width": "86%",
"height": "2.4%"
}
}
]
}
}

Run it

The whole request behind the render above. Paste it as it is, or swap the file for your own.

job.ts
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: "video",
src: "https://cdn.rendobar.com/compose/showcase/media/river.mp4"
},
start: 0
}
]
},
{
clips: [
{
asset: {
type: "shape",
shape: "rect",
color: "#34D399",
radius: 1
},
transform: {
anchor: "topLeft",
position: {
x: "7%",
y: "90%"
},
size: [
{
time: "0%",
value: {
width: "2%",
height: "2.4%"
}
},
{
time: "100%",
value: {
width: "86%",
height: "2.4%"
}
}
]
},
start: 0,
length: 6
}
]
}
]
}
},
});
console.log(outputUrl(job));

Install with npm i @rendobar/sdk. jobs.run() submits and waits, so it returns the finished job in one call.

terminal
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":"video","src":"https://cdn.rendobar.com/compose/showcase/media/river.mp4"},"start":0}]},{"clips":[{"asset":{"type":"shape","shape":"rect","color":"#34D399","radius":1},"transform":{"anchor":"topLeft","position":{"x":"7%","y":"90%"},"size":[{"time":"0%","value":{"width":"2%","height":"2.4%"}},{"time":"100%","value":{"width":"86%","height":"2.4%"}}]},"start":0,"length":6}]}]}}}'

Returns immediately with a job id. Poll GET /jobs/{id} or register a webhook rather than blocking on the request.

Questions

What does the progress bar effect do in compose?

Keyframes on the box itself. The bar's width runs from nothing to most of the frame across the clip, which is a progress bar with no new field to learn.

How do I add progress bar to a video with an API?

Send a compose job to the Rendobar API with this entry in the timeline: {"transform":{"anchor":"topLeft","position":{"x":"7%","y":"90%"},"size":[{"time":"0%","value":{"width":"2%","height":"2.4%"}},{"time":"100%","value":{"width":"86%","height":"2.4%"}}]}}. Put it on the clip itself, beside its asset. The request on this page is complete and renders as shown.

Footage and sound