Validate the Shot Before Generation: A Photo-to-Video Manifest for Vidu Q4
A photo-to-video request contains two different kinds of information: what the system can accept, and what the shot is supposed to communicate. Mixing them into one paragraph makes avoidable input mistakes harder to spot.
I work with the MixVio team. This guide uses our current Vidu Q4 interface as a concrete example and proposes a local planning manifest. It is not an API integration, an internal schema, or an independent test of model quality.
Separate inputs, intent and review
Keep three small records. The input record holds the mode, ordered references, duration, resolution, ratio and audio setting. The intent record describes a subject action, camera motion and sound. The review record says what you will inspect after generation.
An accepted request does not mean a usable video. Validation catches a thirteen-photo pack; review catches a product label that changed in the output. Those are different failure stages.
Start with a manifest
Here is an illustrative five-second reference-mode shot. The asset labels are placeholders. The manifest is a planning document; do not submit it as a MixVio API payload.
{
"mode": "reference_to_video",
"durationSeconds": 5,
"resolution": "540p",
"ratio": "9:16",
"generateAudio": true,
"images": [
{"label": "product-front", "role": "identity"},
{"label": "desk-scene", "role": "setting"}
],
"audio": [],
"prompt": "Keep the product from @Image1 on the desk from @Image2. Slowly push the camera closer while soft daylight shifts across the scene. Use quiet room ambience without speech.",
"review": ["identity", "label legibility", "motion", "sound"]
}
The reference array has a meaningful order. If the first upload is the product and the second is the desk, the prompt must keep that same @Image1 / @Image2 mapping. Reordering the files without revising the prompt changes the request. An audio reference uses the corresponding @Audio1-style tag.
Validate against the selected route
On MixVio, image-to-video takes exactly one start photo, follows its ratio and always includes native audio. Reference-to-video takes 1–12 photos and up to three MP3 files; it offers five ratios and an audio toggle. Both routes list 3–16 seconds and 540p, 720p, 1080p, 2K or 4K. These are the current MixVio route limits, not a claim that every Vidu interface exposes identical inputs.
A small local check can reject inconsistent plans before you upload assets:
// Educational local planning check, not a MixVio API payload or production schema.
export function validateShot(s) {
const errors = [];
const modes = ['image_to_video', 'reference_to_video'];
const resolutions = ['540p', '720p', '1080p', '2K', '4K'];
const ratios = ['16:9', '9:16', '4:3', '3:4', '1:1'];
if (!s || typeof s !== 'object' || Array.isArray(s)) return ['Shot must be an object'];
if (!modes.includes(s.mode)) errors.push('Choose a supported mode');
if (!Number.isInteger(s.durationSeconds) || s.durationSeconds < 3 || s.durationSeconds > 16) errors.push('Duration must be an integer from 3 to 16');
if (!resolutions.includes(s.resolution)) errors.push('Choose a listed resolution');
if (!Array.isArray(s.images)) errors.push('Images must be an array');
if (!Array.isArray(s.audio)) errors.push('Audio must be an array');
if (typeof s.generateAudio !== 'boolean') errors.push('Choose an explicit audio setting');
if (s.mode === 'image_to_video') {
if (s.images?.length !== 1) errors.push('Image mode needs exactly one photo');
if (s.audio?.length !== 0) errors.push('Use reference mode for MP3 references');
if (s.ratio !== 'source') errors.push('Image mode follows the photo ratio');
if (s.generateAudio !== true) errors.push('Image mode always includes native audio');
}
if (s.mode === 'reference_to_video') {
if (!(s.images?.length >= 1 && s.images.length <= 12)) errors.push('Reference mode needs 1–12 photos');
if (!(s.audio?.length >= 0 && s.audio.length <= 3)) errors.push('Reference mode accepts at most 3 MP3 files');
if (!ratios.includes(s.ratio)) errors.push('Choose a listed reference-mode ratio');
}
if (Array.isArray(s.audio) && s.audio.some(a => !a || a.format !== 'mp3')) errors.push('Audio references must be MP3');
if (typeof s.prompt !== 'string' || !s.prompt.trim()) errors.push('Add a shot description');
return errors;
}
For the example above, validateShot(shot) returns an empty array. If the reference pack grows to thirteen photos, it returns a reference-count error. If you change the mode to image-to-video while keeping two photos, a selectable ratio and disabled audio, it reports all three inconsistencies.
This helper checks planning fields. It does not inspect file contents, dimensions, ownership, upload success or server acceptance. A real integration still needs its documented upload and server-side validation process. Keep private asset URLs and credentials out of a public manifest.
Record review separately
After generation, assign each check pass, fail or not_reviewed, and add a short observation. Before generation, every result remains not_reviewed. Do not fill those fields with expected outcomes.
For this shot, inspect whether the product identity and label remain readable, whether camera motion stays deliberate, and whether the audio contains unwanted speech. The illustrative prompt asks for quiet ambience; it does not guarantee it. If the clip fails, change one part of the request and record the reason.
A fixed logo, legal line or precise end card can be added in an editor after generation. This MixVio route does not expose a last-frame input or video references, so a planning template should not pretend those controls exist.
Keep the contract dated
Before reusing a saved manifest, compare its mode and limits with the current Vidu Q4 interface. Record when you checked them. Save the accepted settings separately from your review observations so a future limit change does not silently rewrite the history of an older run.
The useful artifact is a small, understandable request plus an honest review record. It makes preparation repeatable without treating prompt compliance as guaranteed.
Disclosure: written with AI assistance and reviewed against the public MixVio interface on October 10, 2026. The manifest and scene are illustrative; no video was generated for this guide. The local validation examples were checked independently of the video model.




