A landscape clip that looks good in a player can fail as a portrait placement: a moving product leaves the crop, subtitles overlap controls, or the final export stretches the subject. This workflow focuses on delivering the same creative brief in multiple layouts with minimax-h3. It complements shot continuity; it does not promise pixel-identical subjects across separate generations.
Choose between cropping and generating a second composition
Section titled “Choose between cropping and generating a second composition”| Approach | Useful when | Main acceptance risk |
|---|---|---|
| One master, multiple crops | Subject stays inside every planned crop throughout the shot | Motion or props leave the portrait crop |
| Separate aspect-ratio generations | Each placement needs a different composition | Identity, action and timing vary between tasks |
| Letterbox or designed layout | Preserving the entire frame matters more than filling the screen | Smaller subject and unused space |
Review the complete motion path before choosing the first approach. A centered first frame is not enough. For separate generations, reuse the same authorized references and action brief, then review identity and timing independently. More references do not guarantee consistency.
Calculate the crop before buying another generation
Section titled “Calculate the crop before buying another generation”For a centered crop from a 1920 × 1080 source into 9:16, keeping height gives a crop width of 1080 × 9 / 16 = 607.5 pixels. That retains about 31.6% of the source width. Round the crop to valid dimensions for your encoder; do not treat the fractional number as an export specification. This is geometry, not a claim about H3 output dimensions.
Use this offline helper to inspect other combinations. It calculates the largest centered crop with the target ratio and reports fractional source coordinates; the editor must apply codec-compatible rounding and inspect the actual clip.
def center_crop(width, height, target_width, target_height): if min(width, height, target_width, target_height) <= 0: raise ValueError("dimensions must be positive") ratio = target_width / target_height crop_width = min(width, height * ratio) crop_height = crop_width / ratio return ((width - crop_width) / 2, (height - crop_height) / 2, crop_width, crop_height)
assert center_crop(1920, 1080, 16, 9) == (0.0, 0.0, 1920, 1080.0)assert center_crop(1920, 1080, 9, 16) == (656.25, 0.0, 607.5, 1080.0)Place this crop over the beginning, middle, end and every action peak. Check hands, props and shadows as well as the central subject. If the required content cannot fit, redesign the shot or generate a separately composed portrait version rather than stretching the image.
Request an explicitly composed portrait clip
Section titled “Request an explicitly composed portrait clip”Confirm the live model schema and account access first. This illustrative body targets POST /v1/tasks; submitting it incurs usage. 768P is a resolution value in the checked provider contract, not a promise of exact final width and height.
{ "model": "minimax-h3", "input": { "prompt": "Vertical product shot of a plain blue ceramic mug on a table. The complete mug remains in the middle of the frame while the camera makes a very small forward move. Leave clear space above and below for later layout. No text, no hands and no additional objects.", "seconds": 5, "resolution": "768P", "aspect_ratio": "9:16" }}The checked MiniMax provider schema allows integer durations from 4 to 15 seconds and ratios 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Other supply routes can differ; check the active public schema before relying on a value. For a landscape counterpart, revise the composition brief and set 16:9. That produces a separate billable task, not a free resize. Do not assume the same request is valid for H3 Max Turbo; use its selection guide.
Save the task ID, poll the original task, and inspect the returned asset rather than treating acceptance as completion. Use the task tutorial for response handling.
Inspect the final placement, not just the source file
Section titled “Inspect the final placement, not just the source file”Create an acceptance sheet with placement, source task ID, actual duration, dimensions, crop coordinates, export version and reviewer decision. Watch the exported file from start to finish, then inspect the opening, action peaks and ending in the destination preview.
Check that the subject never leaves the safe area, captions remain legible, destination controls do not cover essential content, and the export has no unintended stretching or clipped audio. Safe-area margins depend on the destination; use its actual preview instead of inventing one universal pixel margin. Keep subtitles and logos in the editing layer when they require exact positioning.
If two variants both pass, compare total generation and editing cost per approved placement. Include rejected attempts and manual rework. If only one passes, report that limited result instead of declaring a model winner. Reuse the reference preflight and dialogue review when relevant.
Evidence and limits
Section titled “Evidence and limits”Contract checked 2026-11-07 at repository df986532, packages/server/src/providers/minimax/channel.ts. See the H3 model reference and model page. No paid clips were generated for this guide. Geometry checks are reproducible locally; output quality, production route availability and destination-specific safe areas require separate verification.