MODEL FIELD NOTES · Verification
Why Your AI Video Returns 3:4 Instead of 9:16: Auditing Silent Parameter Mismatches
An HTTP 200 response from a video model endpoint does not guarantee that the delivered MP4 matches the aspect ratio, resolution label, or duration you requested. This article documents reproducible parameter mismatches from our verified runs and how to catch them before multi-shot concatenation.
阅读本站中文版 · 在黄果制片阅读中文版Requested parameters versus measured output files
In a multi-shot film studio, a single shot that silently changes aspect ratio or frame rate breaks timeline concatenation. In September 2026, we audited delivered video files by re-downloading the artifacts, recording byte counts and SHA-256 digests, and probing container metadata.
Three concrete mismatches stood out across our runs. First, we requested a 9:16 vertical 480P clip twice from a hosted H3 endpoint and received a 480×640 (3:4) file with an HTTP 200 status and no warning both times. Second, requests labeled 480P consistently returned a 640-pixel long edge with a 480-pixel short edge. Third, a 5-second idle shot measured 10.33 seconds because a palindrome post-processing step doubled the clip.
| Recipe / Shot | Model Identifier | Requested | Measured Output | Observed Mismatch |
|---|---|---|---|---|
| Neon-city two-character shot | alibaba/wan-3.0/image-to-video | 720p, 6 s | 720×406, 6.00 s, 15 fps | None observed |
| Hair-touch reaction | minimax/h3-max/image-to-video | 9:16, 480P, 5 s | 480×640 (3:4), 5.17 s, 24 fps | Aspect ratio (9:16→3:4), long edge |
| Idle breathing loop | minimax/h3-max/image-to-video | 9:16, 480P, 5 s | 480×640 (3:4), 10.33 s, 24 fps | Aspect ratio, long edge, palindrome duration |
| Reference-to-video test | grok-imagine-video-1.5 | 3:4, 480p, 4 s | 480×640, 4.04 s, 24 fps | Long edge (640 px vs 480p label) |
Why silent snapping and loop doubling happen in production
Hosted inference APIs frequently map requested dimensions onto a fixed set of latent buckets. When a specific tier does not expose a native 9:16 bucket at 480p, the router may fall back to the nearest portrait bucket (480×640, or 3:4) rather than rejecting the request.
Similarly, palindrome looping (appending a reversed copy of the clip to create a seamless loop) works for subtle breathing motion but breaks immediately on directional gestures such as a hand reaching toward a face, while doubling the timeline slot from 5 seconds to over 10 seconds. Neither behavior is visible if your pipeline only checks for a 200 status code.
In our multi-shot assembly tests, mixing a 720×406 landscape clip at 15 frames per second with a 480×640 portrait clip at 24 frames per second caused downstream muxing scripts to either pillarbox the frame or stretch character proportions. Recording both the requested JSON payload and the ffprobe or browser-probed stream header in the revision manifest prevents silent bucket fallback from corrupting a three-shot Preview Film.
Four automated checks before concatenating a Preview Film
You can run these checks directly in your browser using the Local MP4 Output Probe on our Creator Tools page without uploading files to a server. Every generated take should pass an automated container gate before it is promoted to a final storyboard slot.
- Compare measured width/height ratio against the requested aspect ratio and flag any deviation above 2%.
- Verify frame rate consistency (for example, 15 fps versus 24 fps) across all three shots before concatenation.
- Check measured duration against the storyboard slot to catch reverse-loop doubling.
- Log the file byte size and SHA-256 hash so lossy web transcodes are never confused with provider masters.