Guide d'utilisation
Vidu Q4 Preview image-vers-vidéo : transformez une image fixe de produit en un court clip vidéo 4K
Vous avez déjà l'image fixe — une photo de produit, une image clé de produit, un portrait. Pour la vidéo courte, la mission est de la faire bouger : un rythme vertical de 4 à 6 secondes, avec un peu de mouvement de caméra et une piste audio, puis un montage en séquence accroche / corps / CTA. vidu-q4-preview/image-to-video sur l'API hiapi est conçu exactement pour ça. Entrez une première image, récupérez un clip de 3 à 16 secondes, jusqu'à 4K, avec une piste audio native.
C'est une chaîne de production de bout en bout, pas une galerie de prompts : préparez la première image, générez trois clips asynchrones en lot, peaufinez le rythme 4K, exportez en H.264 pour le web. Chaque clip, chaque chiffre et chaque détail de schéma ci-dessous provient d'une exécution réelle du 2026-10-19 — les trois clips ont été générés et intégrés en ligne, vous pouvez les regarder directement.
Si vous voulez seulement des prompts de plan à copier-coller, lisez Recettes de prompts image-vers-vidéo Vidu Q4 Preview. Si votre matériel est un kit de marque (plusieurs images de référence plus un échantillon sonore), c'est de l'image-vers-vidéo par référence — une tâche différente, avec un point de terminaison différent. Cette page traite du cas d'une seule image fixe.
Ce que le point de terminaison image-vers-vidéo accepte réellement
Voici la convention d'entrée, re-sondée en direct lors de cette exécution (uniquement avec des valeurs invalides, donc la sonde n'a jamais coûté un centime) :
| Champ | Requis | Valeurs |
|---|---|---|
model |
Oui | vidu-q4-preview/image-to-video |
prompt |
Oui | Description du mouvement |
image_url |
Oui | Une URL d'image de première frame unique |
resolution |
Non | 540p · 720p · 1080p · 2k · 4k |
duration |
Non | Secondes entières, 3–16 |
Quatre comportements déterminent la façon dont vous construisez la chaîne, et ces quatre points sont faciles à manquer :
- Pas de champ
aspect_ratio. Envoyer ce champ est directement rejeté (invalid input: <root>: additional properties 'aspect_ratio' not allowed). Le clip hérite de l'orientation de la première image — une image fixe 9:16 produit un clip 9:16. L'orientation se décide au moment où vous créez l'image fixe, pas à l'appel, donc pour de la vidéo courte, vous devez définir le vertical dès le départ. resolutiondéfinit le petit côté, pas le grand. Sur une image verticale,1080prenvoie 1080×1918,720prenvoie 720×1278. Avec une image fixe verticale,4kdonne un géant de 2160 de large (ici 2160×3836) — planifiez le budget et l'encodage en conséquence.- Chaque clip a une piste audio, même sans référence audio. Les trois sorties portent une piste AAC stéréo à 48 kHz, pilotée par le vocabulaire sonore du prompt. Prévoyez de la garder ou de la couper en post-production ; elle n'est jamais absente.
image_urlest au singulier. Envoyerreference_image_urlsest rejeté (additional properties 'reference_image_urls' not allowed) — ce tableau appartient à l'image-vers-vidéo par référence. Une image fixe entre, un clip sort.
Ce dernier point est la vraie bifurcation : si vous devez verrouiller plusieurs angles de produit ensemble, c'est l'image-vers-vidéo par référence qu'il vous faut. Si vous avez une bonne image, l'image-vers-vidéo est plus simple et moins cher.
Aperçu de la chaîne
Une séquence de vidéo courte n'est rien d'autre que N animations indépendantes d'une seule image, donc tout se parallélise proprement :
- Une première image par rythme — en vertical (9:16) pour la vidéo courte, car l'orientation est verrouillée sur l'image.
- Soumettez chaque rythme comme une tâche asynchrone indépendante — un
POST /v1/taskspar rythme ; ne bloquez pas les autres avant que le premier soit terminé. - Interrogez chaque
taskIdjusqu'àsuccess, téléchargez le mp4 (depuis l'URL de sortie). - Peaufinez le rythme 4K, réencodez HEVC→H.264, concaténez ou gardez séparé, exportez.
Étape 1 — Préparer la première image
Comme l'orientation et le petit côté viennent de l'image fixe, votre choix d'image détermine le clip. Pour cette exécution, j'ai généré deux images fixes 9:16 avec gpt-image-2/text-to-image : une image produit en studio et un portrait lifestyle. Voici l'image produit qui démarre notre accroche :

Ci-dessous, la même image animée en 4K — un lent travelling avant, un rayon de lumière balayant le verre :
Le prompt qui l'a produit (écrit et exécuté pour cet article) :
Animate the first frame into a cinematic short-form hook: a slow push-in toward
the amber serum bottle while a soft beam of light sweeps across the glass from
left to right, catching the condensation droplets so they glint. The out-of-focus
eucalyptus leaves behind drift a few millimetres. Unhurried, premium motion.
Subtle ambient whoosh and a soft chime as the light reaches the bottle.
Remarquez que le prompt ne décrit que le mouvement et le son — il ne redit jamais ce qu'est l'objet. L'image fixe a déjà fixé le sujet ; l'image-vers-vidéo a seulement besoin qu'on lui dise comment il doit bouger et sonner.
Étape 2 — Soumettre, interroger, télécharger un rythme
L'appel est une tâche asynchrone unique. Soumission :
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q4-preview/image-to-video",
"input": {
"prompt": "Animate the first frame into a cinematic short-form hook ...",
"image_url": "https://your-storage.example.com/still-product.jpg",
"resolution": "4k",
"duration": 4
}
}'
# -> {"data": {"taskId": "tk-hiapi-01M597ARAKTTJ9YWRPEXPBAYHJ"}}
Ensuite, interrogez la tâche jusqu'à l'état terminal et téléchargez le résultat :
curl -s https://api.hiapi.ai/v1/tasks/$TASK_ID \
-H "Authorization: Bearer $HIAPI_TOKEN"
# in progress -> {"data": {"status": "processing"}}
# done -> {"data": {"status": "success",
# "output": [{"url": "https://.../out.mp4", "expireAt": ...}]}}
Deux choses à retenir de la réponse réelle :
- L'URL de sortie est temporaire. Elle porte un
expireAt, donc téléchargez immédiatement les octets sur disque ou dans votre propre stockage — ne la liez pas en direct dans la page. - Les valeurs invalides échouent à la validation, avant toute facturation. Envoyer
"duration": 99renvoieinvalid input: duration: maximum: got 99, want 16, sanstaskId— c'est précisément ainsi que la borne 3–16 ci-dessus a été confirmée gratuitement. Capturez ce 400 côté client et exposez-le ; cela signifie que la requête a été rejetée, pas que la tâche a échoué en cours de rendu.
Étape 3 — Générer en lot l'accroche, le corps et le CTA
Chaque rythme étant une image fixe → une tâche, vous les lancez ensemble et les interrogez ensemble, plutôt que d'exécuter une chaîne bloquante. Lors de cette exécution, les trois ont été envoyés en une fois ; les rythmes 720p et 1080p sont revenus en quelques minutes, l'accroche 4K quelques minutes après — c'est exactement pourquoi il faut soumettre en asynchrone plutôt qu'appeler en série et attendre.
Le rythme corps lifestyle, animé à partir du portrait fixe en 1080p pendant six secondes :
Animate the first frame into a lifestyle short-form beat: a gentle parallax orbit
around the woman as she turns her face a few degrees toward the window light and
her soft smile widens slightly. Loose strands of hair sway in a faint breeze; the
blurred plant leaves behind shift gently. Warm, natural, editorial motion with no
jump cuts. Soft airy room tone.
Le rythme carte de fin CTA, retour à l'image fixe du produit en 720p quatre secondes — petit, pas cher, largement suffisant pour une carte de fin :
Animate the first frame into a clean end-card beat: the serum bottle rotates slowly
and settles to a confident three-quarter angle as the light steadies. Minimal,
product-forward motion that holds on the bottle. A soft sustained ambient tone that
resolves cleanly.
Une boucle de lot minimale ressemble à ceci — soumettez tous les rythmes, collectez les ID de tâche, puis interrogez :
import requests, time
BEATS = [
{"name": "hook", "image_url": PRODUCT_STILL, "resolution": "4k", "duration": 4, "prompt": HOOK},
{"name": "body", "image_url": PORTRAIT_STILL, "resolution": "1080p", "duration": 6, "prompt": BODY},
{"name": "cta", "image_url": PRODUCT_STILL, "resolution": "720p", "duration": 4, "prompt": CTA},
]
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
# submit all at once -- do not block between beats
tasks = {}
for b in BEATS:
r = requests.post("https://api.hiapi.ai/v1/tasks",
headers=H, json={"model": "vidu-q4-preview/image-to-video",
"input": {k: b[k] for k in ("prompt", "image_url", "resolution", "duration")}})
tasks[b["name"]] = r.json()["data"]["taskId"]
# poll each saved taskId to a terminal state; never resubmit
done = {}
while len(done) < len(tasks):
for name, tid in tasks.items():
if name in done:
continue
t = requests.get(f"https://api.hiapi.ai/v1/tasks/{tid}", headers=H).json()["data"]
if t["status"] == "success":
done[name] = t["output"][0]["url"]
elif t["status"] == "fail":
raise RuntimeError(f"{name} failed: {t.get('error')}")
time.sleep(15)
Conservez les ID de tâche. Si le réseau vacille en cours d'interrogation, interrogez à nouveau l'ID sauvegardé — ne soumettez jamais à nouveau, sinon vous payez deux fois pour le même rythme.
Étape 4 — Peaufiner le 4K, exporter en H.264 pour le web
L'accroche 4K revient en HEVC (H.265), Main 10, 2160×3836 — un véritable master 4K vertical. HEVC ne se lit pas de manière fiable en ligne dans les navigateurs, donc réencodez en H.264 pour la livraison web :
# 4K HEVC master -> H.264 web export (downscaled to a 1080-wide delivery copy)
ffmpeg -i hook_4k.mp4 -vf "scale=1080:-2" \
-c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \
-c:a aac -b:a 128k -movflags +faststart hook_web.mp4
Les rythmes 1080p et 720p reviennent déjà en H.264, donc ils n'ont pas besoin d'être réencodés — juste un remux -movflags +faststart pour qu'ils commencent à jouer avant le téléchargement complet. Gardez le HEVC de 2160 de large comme master d'archive, et livrez le H.264 sous-échantillonné sur la page ; c'est le clip d'accroche qui joue en haut de l'étape 1.
À partir de là, soit vous concaténez les trois rythmes en un court vertical, soit vous les gardez comme éléments séparés si votre plateforme préfère téléverser l'accroche, le corps et le CTA séparément.
Ce que coûte réellement un court métrage en trois rythmes
La tarification est à la seconde, facturée selon le facteur duration, déterminée par resolution (vérifié lors de cette exécution contre le /api/pricing en direct) :
| Résolution | Prix / seconde |
|---|---|
| 540p | $0.0515 |
| 720p | $0.109 |
| 1080p | $0.1375 |
| 2K | $0.2175 |
| 4K | $0.446 |
Pour ce court métrage exact en trois rythmes :
| Rythme | Résolution | Durée | Coût |
|---|---|---|---|
| Accroche | 4K | 4s | $1.784 |
| Corps | 1080p | 6s | $0.825 |
| CTA | 720p | 4s | $0.436 |
| Total vidéo | 14s | $3.045 |
Ajoutez deux premières images gpt-image-2 à $0.03 chacune, et le court métrage terminé coûte environ $3.11. L'accroche 4K représente à elle seule 59 % de la facture. Passez l'accroche en 1080p et les trois rythmes totalisent environ $1.81 ; la prime 4K est un choix que vous faites pour un rythme qui le mérite — la révélation héro — et la carte de fin CTA en 720p est indiscernable à la vitesse où le pouce fait défiler. La grille tarifaire complète par modèle est sur la page de tarification hiapi.
Questions fréquentes
Puis-je forcer le 9:16 dans la requête ? Non — il n'y a pas de champ aspect_ratio, et l'envoyer est rejeté. L'orientation est héritée de la première image, donc créez ou recadrez une image fixe verticale avant l'appel.
Pourquoi mon clip a-t-il un son que je n'ai pas demandé ? Vidu Q4 Preview produit une piste audio native sur chaque clip, suggérée par le vocabulaire sonore du prompt. Si vous voulez du silence, coupez la piste en post-production.
Mon clip 4K ne se lit pas en ligne — le fichier est-il corrompu ? Il est bon ; le 4K revient en HEVC/H.265, que certains navigateurs ne rendent pas en ligne. Réencodez en H.264 comme indiqué à l'étape 4.
Puis-je passer plusieurs angles de produit dans un seul appel ? Pas sur ce point de terminaison — image_url est une image unique, et reference_image_urls est rejeté ici. Les références multiples (et le son) relèvent du point de terminaison image-vers-vidéo par référence.
Quelle est la durée maximale d'un rythme ? Chaque clip fait au maximum 16 secondes (le schéma plafonne duration à 16). Pour des œuvres plus longues, générez plusieurs rythmes et concaténez-les.
Comment contrôler le mouvement de caméra ? Décrivez-le dans le prompt — travelling avant, orbite parallaxe, plan fixe — comme les trois prompts ci-dessus. Pour un catalogue plus approfondi du langage de mouvement de caméra, consultez nos notes sur les mouvements de caméra cinématographiques pour prompts vidéo IA.
Commencez à faire bouger vos images fixes
Si vous avez une image forte, vous avez un clip de vidéo courte. Pointez image_url vers elle, choisissez la résolution qui correspond au rôle du rythme, et laissez le lot tourner. Consultez le schéma d'entrée complet et des exemples en direct sur la page du modèle Vidu Q4 Preview image-vers-vidéo, ou utilisez le démarrage rapide hiapi pour brancher la boucle de soumission et d'interrogation dans votre propre stack.
Articles similaires
Voir tous les articles →-
Guide d'utilisation
Guide de démarrage pour seedream-5.0-pro/image-to-image : capacités, tarification et points d'intégration
Limites de capacité, mode de facturation et pratiques d'intégration technique du modèle d'édition d'image de ByteDance
-
Guide d'utilisation
Guide de prise en main de la génération d'images par texte avec seedream-5.0-pro : limites de capacités, intégration API et maîtrise des coûts
Point de vue pratique pour les développeurs : des points clés des paramètres à l'estimation du coût de 0,05 $ par image
-
Guide d'utilisation
Guide de prise en main de Hailuo 2.3 Fast image-to-video : limites de capacités, tarification et intégration pratique
Points clés pour les développeurs : choisir et intégrer le modèle image-to-video de MiniMax