Benutzerhandbuch
Vidu Q4 Preview Bild-zu-Video: Verwandle Produkt-Standbilder in 4K-Kurzvideoclips
Sie haben bereits ein Standbild – ein Produktbild, ein Hero-Frame eines Produkts, ein Porträt. Für Kurzvideos besteht die Aufgabe darin, es in Bewegung zu bringen: ein 4–6-sekündiger vertikaler Beat mit etwas Kamerabewegung und einer Tonspur, der sich zu einer Sequenz aus Hook / Body / CTA zusammensetzen lässt. Genau dafür ist vidu-q4-preview/image-to-video auf der hiapi API gebaut. Geben Sie ein erstes Frame ein, erhalten Sie einen 3–16-sekündigen Clip mit bis zu 4K und nativer Tonspur zurück.
Dies ist eine End-to-End-Produktionspipeline, keine Prompt-Galerie: erstes Frame vorbereiten, drei asynchrone Clips im Batch generieren, den 4K-Beat verfeinern, H.264 für das Web exportieren. Jeder Clip, jede Zahl und jedes Schema-Detail unten stammt aus einem echten Lauf vom 2026-10-19 – drei Clips wurden generiert und inline eingebettet, Sie können sie direkt ansehen.
Wenn Sie nur kopier- und einfügbare Shot-Prompts wollen, lesen Sie Vidu Q4 Preview Bild-zu-Video Prompt-Rezepte. Wenn Ihr Material ein Brand-Kit ist (mehrere Referenzbilder plus ein Stimmbeispiel), ist das Referenz-zu-Video – eine andere Aufgabe mit einem anderen Endpunkt. Diese Seite behandelt den Fall mit einem einzelnen Standbild.
Was der Bild-zu-Video-Endpunkt tatsächlich akzeptiert
Hier ist die Eingabekonvention, während dieses Laufs live neu geprüft (nur mit ungültigen Werten, sodass die Prüfung nie einen Cent gekostet hat):
| Feld | Erforderlich | Wert |
|---|---|---|
model |
Ja | vidu-q4-preview/image-to-video |
prompt |
Ja | Bewegungsbeschreibung |
image_url |
Ja | URL eines einzelnen ersten Frame-Bildes |
resolution |
Nein | 540p · 720p · 1080p · 2k · 4k |
duration |
Nein | Ganzzahlige Sekunden, 3–16 |
Vier Verhaltensweisen bestimmen, wie Sie Ihre Pipeline aufbauen, und alle vier lassen sich leicht falsch machen:
- Es gibt kein
aspect_ratio-Feld. Wird es übergeben, wird es direkt abgelehnt (invalid input: <root>: additional properties 'aspect_ratio' not allowed). Der Clip erbt die Ausrichtung vom ersten Frame – ein 9:16-Standbild ergibt einen 9:16-Clip. Die Ausrichtung wird beim Erstellen des Standbilds festgelegt, nicht beim Aufruf, also müssen Sie für Kurzvideos von Anfang an Hochformat festlegen. resolutionlegt die kurze Seite fest, nicht die lange. Bei einem Hochformatbild gibt1080p1080×1918 zurück,720pgibt 720×1278 zurück.4kfür ein Hochformat-Standbild ergibt ein Ungetüm mit 2160 Breite (hier 2160×3836) – planen Sie Budget und Encoding entsprechend.- Jeder Clip hat eine Tonspur, auch ohne Audio-Referenz. Alle drei Ausgaben hatten eine 48-kHz-Stereo-AAC-Tonspur, gesteuert durch die Klangvokabeln im Prompt. Planen Sie, ob Sie sie behalten oder in der Post stummschalten; sie fehlt nie.
image_urlist Singular. Das Übergeben vonreference_image_urlswird abgelehnt (additional properties 'reference_image_urls' not allowed) – dieses Array gehört zu Referenz-zu-Video. Ein Standbild rein, ein Clip raus.
Der letzte Punkt ist die eigentliche Weggabelung: Wenn Sie mehrere Produktwinkel zusammen sperren müssen, brauchen Sie Referenz-zu-Video. Wenn Sie ein gutes Bild haben, ist Bild-zu-Video einfacher und günstiger.
Pipeline-Überblick
Eine Kurzvideo-Sequenz ist nichts anderes als N unabhängige Einzelbild-Animationen, daher lässt sich das Ganze sauber parallelisieren:
- Bereiten Sie ein erstes Frame pro Beat vor – Hochformat (9:16) für Kurzvideos, weil die Ausrichtung im Bild festgelegt ist.
- Reichen Sie jeden Beat als unabhängige asynchrone Aufgabe ein – jeweils ein
POST /v1/tasks; blockieren Sie nicht die übrigen Aufgaben, bevor die erste abgeschlossen ist. - Pollen Sie jede
taskIdbissuccess, laden Sie die mp4 herunter (von der Ausgabe-URL). - Verfeinern Sie den 4K-Beat, reencodieren Sie HEVC→H.264, fügen Sie zusammen oder halten Sie sie getrennt, exportieren Sie.
Schritt 1 – Erstes Frame vorbereiten
Da Ausrichtung und kurze Seite vom Standbild kommen, bestimmt Ihre Bildwahl den Clip. Für diesen Lauf habe ich zwei 9:16-Standbilder mit gpt-image-2/text-to-image generiert: ein Studio-Produktbild und ein Lifestyle-Porträt. Hier ist das Produktbild, mit dem wir den Hook beginnen:

Hier ist dasselbe Bild in 4K animiert – langsames Heranfahren, ein Lichtstrahl gleitet über das Glas:
Der Prompt, der es erzeugte (für diesen Artikel geschrieben und ausgeführt):
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.
Beachten Sie, dass der Prompt nur Bewegung und Klang beschreibt – er wiederholt nie, was das Objekt ist. Das Standbild legt das Motiv bereits fest; Bild-zu-Video muss nur wissen, wie es sich bewegen und klingen soll.
Schritt 2 – Einreichen, pollen, einen Beat herunterladen
Der Aufruf ist eine einzelne asynchrone Aufgabe. Einreichen:
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"}}
Dann pollen Sie die Aufgabe bis zum Endzustand und laden Sie das Ergebnis herunter:
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": ...}]}}
Zwei Dinge aus einer echten Antwort sind wissenswert:
- Ausgabe-URLs sind temporär. Sie tragen ein
expireAt, also laden Sie die Bytes sofort auf die Festplatte oder in Ihren eigenen Speicher herunter – verlinken Sie sie nicht direkt in Ihre Seite. - Ungültige Werte schlagen bei der Validierung fehl, vor jeder Abrechnung. Das Senden von
"duration": 99gibtinvalid input: duration: maximum: got 99, want 16zurück, ohnetaskId– genau so wurde die 3–16-Grenze oben kostenlos bestätigt. Fangen Sie diese 400 im Client ab und legen Sie sie offen; sie bedeutet, dass die Anfrage abgelehnt wurde, nicht dass die Aufgabe mitten im Rendern fehlgeschlagen ist.
Schritt 3 – Hook, Body und CTA im Batch generieren
Da jeder Beat ein Standbild → eine Aufgabe ist, starten Sie sie zusammen und pollen Sie zusammen, statt eine blockierende Kette auszuführen. In diesem Lauf wurden alle drei auf einmal abgeschickt; die 720p- und 1080p-Beats kamen innerhalb von Minuten zurück, der 4K-Hook ein paar Minuten später – genau deshalb reichen Sie asynchron ein, statt seriell zu warten.
Der Lifestyle-Body-Beat, aus dem Porträt-Standbild in 1080p über sechs Sekunden animiert:
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.
Der CTA-Endkarten-Beat, zurück zum Produkt-Standbild in 720p über vier Sekunden – klein, günstig, gut genug für eine Abschlusskarte:
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.
Eine minimale Batch-Schleife sieht ungefähr so aus – alle Beats einreichen, Task-IDs sammeln, dann pollen:
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)
Bewahren Sie die Task-IDs auf. Wenn das Netz beim Pollen kurz aussetzt, pollen Sie die gespeicherte ID erneut – reichen Sie niemals neu ein, sonst zahlen Sie zweimal für denselben Beat.
Schritt 4 – 4K-Verfeinerung, H.264 für das Web exportieren
Der 4K-Hook kam als HEVC (H.265), Main 10, 2160×3836 zurück – ein echtes vertikales 4K-Master. HEVC lässt sich nicht zuverlässig inline in Browsern abspielen, also für die Web-Auslieferung zu H.264 reencodieren:
# 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
Die 1080p- und 720p-Beats kamen bereits als H.264 zurück, also brauchen sie kein Reencoding – nur ein -movflags +faststart-Remux, damit sie abzuspielen beginnen, bevor sie vollständig heruntergeladen sind. Behalten Sie das 2160 breite HEVC als Archiv-Master und liefern Sie das herunterskalierte H.264 an die Seite aus; das ist der Hook-Clip, der oben in Schritt 1 abgespielt wird.
Von hier aus können Sie die drei Beats entweder zu einem vertikalen Kurzfilm concaten oder als separate Assets behalten, wenn Ihre Plattform Hook, Body und CTA getrennt hochgeladen haben möchte.
Was ein Drei-Beat-Kurzfilm tatsächlich kostet
Die Preisgestaltung erfolgt pro Sekunde, faktorisiert durch duration und bestimmt durch resolution (in diesem Lauf gegen die Live-/api/pricing geprüft):
| Auflösung | Preis / Sekunde |
|---|---|
| 540p | $0.0515 |
| 720p | $0.109 |
| 1080p | $0.1375 |
| 2K | $0.2175 |
| 4K | $0.446 |
Für genau den Drei-Beat-Kurzfilm oben:
| Beat | Auflösung | Dauer | Kosten |
|---|---|---|---|
| Hook | 4K | 4s | $1.784 |
| Body | 1080p | 6s | $0.825 |
| CTA | 720p | 4s | $0.436 |
| Video gesamt | 14s | $3.045 |
Fügen Sie zwei gpt-image-2-erste-Frames zu je $0.03 hinzu, und der fertige Kurzfilm kostet etwa $3.11 zu generieren. Allein der 4K-Hook macht 59 % der Rechnung aus. Senken Sie den Hook auf 1080p, kosten alle drei Beats zusammen etwa $1.81; der 4K-Aufpreis ist eine Wahl, die Sie für einen Beat treffen, der es wert ist – die Heldenenthüllung –, während die 720p-CTA-Endkarte bei der Geschwindigkeit, mit der ein Daumen weiterscrollt, nicht zu unterscheiden ist. Die vollständige Staffelung pro Modell finden Sie auf der hiapi-Preisseite.
Häufige Fragen
Kann ich im Request 9:16 erzwingen? Nein – es gibt kein aspect_ratio-Feld, und es wird abgelehnt, wenn es übergeben wird. Die Ausrichtung wird vom ersten Frame geerbt, also erstellen oder beschneiden Sie vor dem Aufruf ein Hochformat-Standbild.
Warum hat mein Clip Ton, den ich nicht angefordert habe? Vidu Q4 Preview gibt bei jedem Clip eine native Tonspur aus, angeregt durch die Klangvokabeln im Prompt. Wenn Sie Stille wollen, schalten Sie diese Spur in der Post stumm.
Mein 4K-Clip spielt nicht inline ab – ist die Datei defekt? Sie ist in Ordnung; 4K kommt als HEVC/H.265 zurück, das manche Browser nicht inline rendern. Reencodieren Sie wie in Schritt 4 gezeigt zu H.264.
Kann ich mehrere Produktwinkel in einem Aufruf übergeben? Auf diesem Endpunkt nicht – image_url ist ein einzelnes Frame, reference_image_urls wird hier abgelehnt. Mehrere Referenzen (und Sound) sind der Referenz-zu-Video-Endpunkt.
Wie lang kann ein Beat sein? Jeder Clip bis zu 16 Sekunden (das Schema begrenzt duration auf 16). Für längere Werke generieren Sie mehrere Beats und fügen sie zusammen.
Wie steuere ich die Kamerabewegung? Beschreiben Sie sie im Prompt – Heranfahren, Parallaxen-Orbit, Standbild – genau wie die drei Prompts oben. Für einen tieferen Katalog an Kamerasprache lesen Sie unsere Notizen zu filmischen Kamerabewegungen in KI-Videos.
Bringen Sie Ihre Standbilder in Bewegung
Wenn Sie ein starkes Bild haben, haben Sie einen Kurzvideo-Clip. Richten Sie image_url darauf, wählen Sie die Auflösung passend zur Aufgabe des Beats und lassen Sie den Batch laufen. Sehen Sie sich das vollständige Eingabeschema und Live-Beispiele auf der Vidu Q4 Preview Bild-zu-Video Modellseite an oder verdrahten Sie die Submit- und Poll-Schleife mit der hiapi-Schnellstartanleitung in Ihren eigenen Stack.
Ähnliche Artikel
Alle Artikel ansehen →-
Benutzerhandbuch
seedream-5.0-pro/image-to-image Erste-Schritte-Leitfaden: Fähigkeiten, Preise und Integrationspunkte
Fähigkeitsgrenzen, Abrechnungsmodell und Engineering-Integration des Bildbearbeitungsmodells von ByteDance
-
Benutzerhandbuch
seedream-5.0-pro Text-zu-Bild Einstiegsleitfaden: Fähigkeitsgrenzen, API-Integration und Kostenkontrolle
Praxisorientierte Perspektive für Entwickler: von den wichtigsten Parametern bis zur Kostenschätzung von $0,05 pro Bild
-
Benutzerhandbuch
Hailuo 2.3 Fast Bild-zu-Video-Anleitung: Grenzen der Leistungsfähigkeit, Preisgestaltung und Integration in die Praxis
MiniMax Bild-zu-Video-Modell für Entwickler: Auswahlkriterien und Integrationspunkte