ffmpeg.composite
Operation: ffmpeg.composite
Category: media
Tags: ffmpeg, video, composite
Interleave talking head + b-roll segments with audio and subtitles
Runtime
Section titled “Runtime”Type: Native (built-in)
Timeout: 300s
Retries: 3 (ExponentialWithJitter)
Inputs
Section titled “Inputs”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
talking_head_url | Asset | Yes | — | Talking head video URL/path |
broll_clip_1 | Asset | No | — | B-roll clip 1 URL/path |
broll_clip_2 | Asset | No | — | B-roll clip 2 URL/path |
audio_url | Asset | No | — | Voiceover audio URL/path |
subtitles_path | String | No | — | ASS subtitle file path |
segments | JSON | No | — | Script segments array (from generate-script) |
Outputs
Section titled “Outputs”| Name | Type | Description |
|---|---|---|
url | Asset | Final composite video URL |
path | String | Local file path |
segments | Number | Number of segments composited |
has_audio | Boolean | Whether audio was included |
has_subtitles | Boolean | Whether subtitles were burned |
Default Configuration
Section titled “Default Configuration”{ "codec": "libx264", "crf": "22", "preset": "fast", "resolution": "1080x1920"}import { WorkflowBuilder } from "@fabric-platform/sdk";
const workflow = new WorkflowBuilder("my-workflow") .node("ffmpeg-composite", "tool", (n) => n.config({ operation: "ffmpeg.composite", // ... node-specific config }) ) .build();from fabric_platform import FabricClient
fabric = FabricClient(api_key="fab_xxx")
wf_id = fabric.upsert_workflow("my-workflow", nodes=[ { "key": "ffmpeg-composite", "kind": "tool", },])use fabric_sdk::FabricClient;
let client = FabricClient::new("http://localhost:3001", api_key)?;
let wf_id = client.upsert_workflow("my-workflow", serde_json::json!({ "nodes": [{ "key": "ffmpeg-composite", "kind": "tool" }]})).await?;curl -X POST http://localhost:3001/v1/workflow-definitions \ -H "Authorization: Bearer $FABRIC_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "my-workflow", "nodes": [{ "key": "ffmpeg-composite", "kind": "tool" }] }'