Video Reframe
Auto-crop horizontal video to vertical with AI active-speaker framing. TikTok-ready in one call, frames the speaker in every shot and cuts cleanly at every boundary.
Still needed: Video, Target Aspect Ratio
Best for
- •Reframing 16:9 podcast / interview / documentary footage to 9:16 TikTok/Reels/Shorts
- •Tracking a specific subject (host, product, screen) when content has multiple focal points
- •Producing 1:1 Instagram squares from horizontal masters with active-speaker tracking
- •Closing the long-form-to-shorts loop when chained with video-trim and captions
When to use
- •After video-trim, trim picks the moment, reframe picks the framing
- •Before captions, reframe first so caption text fits the 9:16 canvas
- •Standalone for users with already-edited horizontal clips that need vertical versions
Tips
- ✓Supply a transcript with speaker labels for interviews and panels, it frames the active speaker far more reliably than the visible faces alone
- ✓Shots with no clear single subject (screen-shares, wide establishing shots) letterbox by design, that is the safe choice, not a miss
- ✓There are no pan / zoom / smoothing knobs to tune, the camera locks to one crop per shot and cuts cleanly at each boundary
Recipes using this pipeline
Articles about this pipeline
Video Reframe API
Call this pipeline from your own code. One request dispatches a run; the model is an input field, not a separate endpoint.
bun add @pipe2-ai/sdk import { createClient } from "@pipe2-ai/sdk";
const client = createClient(process.env.PIPE2_TOKEN!);
const { run_pipeline } = await client.RunPipeline({
pipeline_slug: "video-reframe",
input: {
video_url: "https://example.com/interview.mp4",
target_aspect_ratio: "9:16",
},
});pip install pipe2 import asyncio
import os
from pipe2 import Pipe2Client
client = Pipe2Client(token=os.environ["PIPE2_TOKEN"])
run = asyncio.run(client.run_pipeline(
pipeline_slug="video-reframe",
input={
"video_url": "https://example.com/interview.mp4",
"target_aspect_ratio": "9:16",
},
))go get github.com/pipe2-ai/sdk-go client := pipe2.NewClient(os.Getenv("PIPE2_TOKEN"))
input := json.RawMessage(`{
"video_url": "https://example.com/interview.mp4",
"target_aspect_ratio": "9:16"
}`)
run, err := pipe2.RunPipeline(context.Background(), client, "video-reframe", input)
if err != nil {
log.Fatal(err)
}brew install pipe2-ai/tap/pipe2 pipe2 pipelines run \
--pipeline video-reframe \
--input-json '{"video_url": "https://example.com/interview.mp4", "target_aspect_ratio": "9:16"}' \
--waitParameters
-
target_aspect_ratiorequired -
Aspect ratio to reframe to — vertical for shorts, square for feeds.
9:161:14:516:9default9:16 -
video_urlrequired -
Public URL of the video to reframe.
string -
transcript_url -
Public URL of a transcript. Used to keep the speaker in frame.
string
Use it from an AI agent
Point any MCP client at pipe2 and your agent gets these tools. It finds this pipeline, reads the same schema above, then runs it.
- list_pipelines
- get_pipeline_schema
- run_pipeline
- get_pipeline_run_status
- request_upload
https://mcp.pipe2.ai/mcp {
"mcpServers": {
"pipe2ai": {
"url": "https://mcp.pipe2.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Video Reframe: Horizontal to Vertical with Speaker Tracking
Most viral video lives at 9:16 (TikTok, Reels, Shorts) but most footage is shot 16:9. Video Reframe closes the gap: it finds the active speaker in every shot and frames them in a clean vertical crop, held perfectly still through the shot, cutting only where the source cuts. No manual editing, no camera knobs to tune.
How It Works
- Detect shot boundaries: a scene-cut detector splits the video into separate shots, so every framing decision stays within one continuous shot.
- Find and identify the cast: the pipeline locates and groups the faces in each shot, giving every person a stable identity.
- Resolve who to follow per shot: audio-first: if you supply a transcript with speaker labels, it names who is talking; otherwise the visible faces decide. The speaker gets the frame; an ambiguous shot letterboxes (shows everyone) rather than guessing.
- Plan the camera: each shot gets one fixed crop with hard cuts at the boundaries, and very short shots are merged into their neighbours. No pans, no drift, no motion artifacts, and the same video always reframes the same way.
- Render: the video is cut to the chosen crop per shot (or a centered letterbox for whole-frame shots), keeping the audio intact.
Supply a transcript for multi-speaker tracking
For interviews and panels, pass a transcript (SRT) with speaker labels covering the same time range as the video. Its speaker turns drive who gets framed, so a two-shot follows whoever is actually talking, not just the largest face on screen. Without a transcript it still works, falling back to the faces it can see in each shot.
Frequently Asked Questions
What aspect ratios are supported?
What if my source is already vertical?
How does it pick who to follow?
Does it ever pan or zoom around?
What does it cost?
Can I chain it with video-trim?
Explore more pipelines
See all →Generate AI videos from a text prompt, image, or reference clip. Cinematic shots, product reveals, lifestyle ads, with synchronized audio and natural motion.
Generate AI images from text or reference photos. Product shots, character art, posters with readable text, photoreal portraits, high resolution in seconds.
Turn text into natural speech with dozens of voices, 70+ languages, and custom style directions for tone, accent, and pacing.
Generate original background music that matches any mood, genre, and length you describe. Royalty-free, ready in seconds.