HiAPI
Blog

Benutzerhandbuch

Vidu Q4 Preview Bild-zu-Video: Verwandle Produkt-Standbilder in 4K-Kurzvideoclips

Oct 19, 2026
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:

  1. 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.
  2. resolution legt die kurze Seite fest, nicht die lange. Bei einem Hochformatbild gibt 1080p 1080×1918 zurück, 720p gibt 720×1278 zurück. 4k für ein Hochformat-Standbild ergibt ein Ungetüm mit 2160 Breite (hier 2160×3836) – planen Sie Budget und Encoding entsprechend.
  3. 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.
  4. image_url ist Singular. Das Übergeben von reference_image_urls wird 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:

  1. Bereiten Sie ein erstes Frame pro Beat vor – Hochformat (9:16) für Kurzvideos, weil die Ausrichtung im Bild festgelegt ist.
  2. 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.
  3. Pollen Sie jede taskId bis success, laden Sie die mp4 herunter (von der Ausgabe-URL).
  4. 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": 99 gibt invalid input: duration: maximum: got 99, want 16 zurück, ohne taskId – 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 →

Starte mit persistenten KI-Artefakten

Hol dir deinen API-Key und rufe Bild-, Video- und Audiomodelle über eine einzige task-basierte API auf.

API-Dokumentation lesen