Benutzerhandbuch
Aus statischen Produktbildern kurze Videos machen: grok-imagine/image-to-video auf der hiapi-API
Kurzvideo-Produktinhalte haben ein Angebotsproblem. Ein direkt ausspielbarer Kurzclip bedeutete früher einen Dreh: Studiozeit, Motion Design, Cutter. Aber wenn Sie bereits einen E-Commerce-Katalog betreiben, haben Sie das Rohmaterial schon zur Hand – tausende statische Produktbilder. grok-imagine/image-to-video (xAI's Grok Imagine Image-to-Video-Endpunkt) verwandelt diese statischen Bilder mit einem einzigen asynchronen API-Aufruf in 6–30-sekündige filmische Kurzclips, deren Referenzbild-Konditionierung dafür sorgt, dass Ihr Produkt immer noch wie Ihr Produkt aussieht.
Dieser Leitfaden ist ein End-to-End-Workflow auf der hiapi-API: ein einzelnes Katalogbild in Bewegung bringen, mit mehreren Referenzbildern die Subjektkonsistenz fixieren, Dauer und Auflösungsstufen für die Feed-Ökonomie wählen und den gesamten Katalog als Batch in eine Warteschlange für vertikale Kurzclips verwandeln. Jeder unten eingebettete Kurzclip ist eine echte, ungeschnittene Erstausgabe aus der Live-API – für diesen Artikel aus statischen Bildern unserer Asset-Bibliothek generiert, mit dem exakten Prompt und den Einstellungen daneben.
Modell, Einschränkungen und Preis
grok-imagine/image-to-video läuft auf der asynchronen Task-Schnittstelle von hiapi (POST /v1/tasks). Das Input-Schema, das wir für diesen Artikel empirisch verifiziert haben:
image_urls(Array, erforderlich) – eine oder mehrere öffentlich erreichbare Referenzbild-URLs. Private oder nicht abrufbare URLs scheitern in der Normalisierungsphase, nicht mit einem Schema-Fehler, also hosten Sie Referenzbilder zuerst an einem öffentlichen Ort.prompt(String, optional) – Bewegungs-, Kamera- und Stimmungsanweisungen. Ohne Prompt lässt das Modell freien Lauf; bei Produktinhalten sollten Sie immer einen angeben.duration(Integer, 6–30 Sekunden)resolution(480poder720p)aspect_ratio(1:1,2:3,3:2,16:9,9:16)
Es gibt keine Felder für motion_mode, Seed oder Negativ-Prompts – unbekannte Felder werden mit 400 abgelehnt. Die gesamte Bewegungskontrolle erfolgt über die Formulierung des Prompts.
Ein Verhalten, das uns bei der Generierung der Kurzclips für diesen Artikel begegnet ist: Wenn aspect_ratio nicht mit dem Seitenverhältnis des Referenzbilds selbst übereinstimmt, gewinnt oft das Referenzbild. Bei den drei folgenden Läufen haben wir jeweils 9:16 angefordert; zwei quadratische Quellbilder lieferten quadratische Kurzclips zurück (960×960 und 544×544), während ein Lauf, dessen erstes Referenzbild im Querformat war, ein echtes vertikales 720×1280 lieferte. Wenn Ihr Feed garantiert 9:16 benötigt, beschneiden Sie das statische Referenzbild vor dem Einreichen auf 9:16, statt sich auf den Parameter zu verlassen.
Die Preisgestaltung erfolgt nach Ausgabesekunden, gemäß der hiapi-Preisseite zum Zeitpunkt der Erstellung:
| Stufe | Preis pro Sekunde | 6-Sekunden-Clip | 15-Sekunden-Clip | 30-Sekunden-Clip |
|---|---|---|---|---|
| 480p | $0.0114 | $0.068 | $0.171 | $0.342 |
| 720p | $0.0214 | $0.128 | $0.321 | $0.642 |
Dieser Preis prägt den gesamten Workflow: Ein 6-sekündiger 720p-Hero-Clip kostet etwa 13 Cent, während ein 480p-Entwurf nur etwa die Hälfte kostet. Sie können sich Iterationen problemlos leisten.
Einreichen → Abfragen → Herunterladen
Der Task-Lebenszyklus ist Einreichen, Abfragen, Herunterladen. Einreichen mit curl:
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine/image-to-video",
"input": {
"prompt": "Slow cinematic orbit around the bag, studio lighting glinting off the brass zippers, background stays clean, product unchanged.",
"image_urls": ["https://your-cdn.example.com/products/weekender.jpg"],
"duration": 6,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}'
Sie erhalten sofort eine Task-ID:
{"code": 200, "data": {"taskId": "tk-hiapi-01KX2H8WMWQG99A2F97BREDPS6"}, "message": "success"}
Dann fragen Sie GET /v1/tasks/{taskId} ab, bis status gleich success ist, und laden Sie output[0].url herunter. Unten finden Sie ein vollständiges Python-Hilfsskript – genau das Muster, mit dem jeder Kurzclip in diesem Artikel generiert wurde:
import json, subprocess, time, os
API = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
def submit(input_fields: dict) -> str:
payload = {"model": "grok-imagine/image-to-video", "input": input_fields}
out = subprocess.run(
["curl", "-s", "-X", "POST", API,
"-H", f"Authorization: Bearer {TOKEN}",
"-H", "Content-Type: application/json",
"-d", json.dumps(payload)],
capture_output=True, text=True, timeout=70).stdout
data = json.loads(out)
if not (data.get("data") or {}).get("taskId"):
raise RuntimeError(f"submit failed: {out[:300]}")
return data["data"]["taskId"]
def wait(task_id: str, timeout_s: int = 1200) -> dict:
deadline = time.time() + timeout_s
while time.time() < deadline:
out = subprocess.run(
["curl", "-s", f"{API}/{task_id}",
"-H", f"Authorization: Bearer {TOKEN}"],
capture_output=True, text=True, timeout=40).stdout
task = json.loads(out)["data"]
if task["status"] == "success":
return task
if task["status"] == "fail":
raise RuntimeError(f"task failed: {task.get('error')}")
time.sleep(10)
raise TimeoutError(task_id)
task_id = submit({
"prompt": "...",
"image_urls": ["https://your-cdn.example.com/products/weekender.jpg"],
"duration": 6,
"resolution": "720p",
"aspect_ratio": "9:16",
})
task = wait(task_id)
video_url = task["output"][0]["url"]
subprocess.run(["curl", "-s", "-o", "clip.mp4", video_url], timeout=180)
Zwei operative Details, die Sie in der Produktion beachten sollten:
output[0].urlist ein zeitlich begrenzter signierter Link (mit Ablaufzeit). Laden Sie die Bytes sofort nach erfolgreichem Task herunter und migrieren Sie sie in Ihren eigenen Speicher – speichern Sie niemals die rohe Task-URL dauerhaft.- Die Abrechnung erfolgt beim Akzeptieren des Tasks, also validieren Sie vor dem Massenversand. Ein nützlicher Trick: Senden Sie einen außerhalb des Bereichs liegenden Wert wie
"duration": 99– Sie erhalten einen vollständigen Schema-Validierungsfehler, ohne einen abrechenbaren Task zu erstellen.
Ein statisches Bild → ein Hero-Clip
Die häufigste Operation: Nehmen Sie ein Katalogproduktbild und geben Sie ihm eine kontinuierliche Kamerabewegung. Produktfotografie ist von Natur aus statisch, also besteht die Aufgabe des Prompts darin, nur eine glaubwürdige Bewegung hinzuzufügen und alles andere explizit zu fixieren:
Slow cinematic orbit around the burnt-orange canvas weekender bag, camera
circling smoothly from front to three-quarter view, studio lighting glinting
off the brass zippers, seamless white background stays clean and shadowless,
product perfectly sharp and unchanged, subtle premium e-commerce energy.
Echte Ausgabe – grok-imagine/image-to-video, 6 Sekunden @ 720p, ein einzelnes Referenzbild. Erstgenerierung, ungeschnitten. Tatsächlich geliefert als 960×960: Das quadratische Quellbild hat unsere 9:16-Anfrage überschrieben (siehe Hinweis zum Seitenverhältnis oben). Das Quellbild finden Sie unten.

Prompt-Muster, um Produktclips authentisch zu halten:
- Ein Kameraverb („orbit“, „push in“, „move“). Zwei Bewegungen in einem Prompt führen zu seekranken Aufnahmen.
- Schreiben Sie explizit „product unchanged / perfectly sharp“. Image-to-Video-Modelle driften; dem Modell zu sagen, dass das Subjekt unverändert bleiben muss, reduziert Verzerrungen an Logos, Nähten und Metallbeschlägen deutlich.
- Nennen Sie den Materialmoment („glinting off the brass zippers“) – Lichtreflexe, die über Metall und Leder wandern, sind genau das, was ein statisches Bild wie eine Aufnahme statt wie eine Verzerrung wirken lässt.
- Fixieren Sie den Hintergrund („stays clean and shadowless“). Sonst erfindet das Modell das Set selbst.
Mehrere Referenzbilder: das Subjekt fixieren
image_urls akzeptiert mehr als ein Referenzbild, und genau darin unterscheidet sich grok-imagine in der Produktarbeit von Einzelbild-Animatoren. Geben Sie ihm das Lifestyle-Bild, das Sie als Szene wollen, plus das saubere Produktbild als Identitätsversicherung, und das Modell versöhnt beide – die Szene stammt vom ersten Bild, die exakten Besätze, Riemen und Reißverschlüsse des Produkts werden durch das zweite Bild verankert:
The same burnt-orange weekender bag rests on a weathered wooden bench in a
sunlit loft; a gentle push-in as dust motes drift through warm window light,
soft shadows slide slowly across the bench, the bag and its dark leather trim
stay exactly consistent with the reference images, calm lifestyle-catalog mood.
Echte Ausgabe – grok-imagine/image-to-video, 6 Sekunden @ 720p, 9:16, zwei Referenzbilder (Lifestyle-Bild auf der Bank + Produktbild auf weißem Hintergrund). Erstgenerierung, ungeschnitten.
Beachten Sie den Satz „consistent with the reference images“ im Prompt – bei mehreren Referenzbildern hilft es dem Modell, die zusätzlichen Bilder als Identitätsbeschränkung statt als zweite Szene zu behandeln, die eingemischt werden soll. Das ist das Muster für tägliche Posts von Marken-Accounts: ein Produktbild pro SKU aufnehmen (oder generieren) und es dann in jedem Lifestyle-Kurzclip, den Sie animieren wollen, als Konsistenzanker wiederverwenden.
Dauer und Entwurfsstufen-Ökonomie
Die Dauer reicht von 6 bis 30 Sekunden, und die Auflösung ist der Budgethebel: Der Preis pro Sekunde bei 480p beträgt etwa die Hälfte von 720p. Da Feeds ohnehin aggressiv komprimieren, ist eine sinnvolle Pipeline, in 480p zu entwerfen und die Gewinner in 720p neu zu rendern. Längere Dauern geben dem Modell auch Raum für langsame Entfaltung – unten ein 12-sekündiger 480p-Entwurfsstufen-Clip mit einer kontinuierlichen Stimmungsbewegung auf einem statischen Bild einer Teedose:
Moody slow dolly-in on the matte-black tea tin standing on slate, steam curls
up lazily behind it, a soft beam of morning light sweeps across the embossed
label, tiny tea leaves tumble gently onto the slate in the final seconds, dark
premium atmosphere, label text unchanged and legible.
Echte Ausgabe – grok-imagine/image-to-video, 12 Sekunden @ 480p, ein einzelnes Referenzbild. Erstgenerierung, ungeschnitten (als Quadrat geliefert, passend zum quadratischen Quellbild). Kosten: $0.137.
Das Rendern bei 480p kostet $0.0114/Sekunde – der ganze 12-Sekunden-Clip kostete nur 13,7 Cent. Billig genug, um drei Prompt-Varianten pro Produkt auszuprobieren und nur für die eine, die Sie tatsächlich veröffentlichen, den 720p-Tarif zu zahlen. Beachten Sie den Satz „label text unchanged and legible“ im Prompt: Verpackungstext ist das Erste, was bei Image-to-Video verschwimmt, und ihn zu benennen ist Ihre billigste Schutzmaßnahme.
Katalog-Batch-Verarbeitung
Alles oben genannte skaliert linear, weil Tasks asynchron sind: erst die ganze Charge einreichen, dann abfragen. Ein minimaler Batch-Runner für Produktlisten:
products = [
{"sku": "weekender-orange", "refs": ["https://cdn.example.com/weekender.jpg"],
"prompt": "Slow cinematic orbit around the bag, studio light on the brass zippers, background clean, product unchanged."},
{"sku": "tea-tin-black", "refs": ["https://cdn.example.com/tea-tin.jpg"],
"prompt": "Moody slow dolly-in, steam drifting, light sweeping the embossed label, label text unchanged."},
# ... 目录其余部分
]
jobs = []
for p in products:
tid = submit({
"prompt": p["prompt"],
"image_urls": p["refs"],
"duration": 6,
"resolution": "480p", # 草稿档
"aspect_ratio": "9:16",
})
jobs.append((p["sku"], tid))
for sku, tid in jobs:
task = wait(tid)
url = task["output"][0]["url"]
subprocess.run(["curl", "-s", "-o", f"{sku}.mp4", url], timeout=180)
print(f"{sku}: done")
Praktische Batch-Hinweise für den Betrieb dieser Pipeline:
- Erst einreichen, dann abfragen. Jedes Rendering dauert einige Minuten und läuft serverseitig parallel; eine Serialisierung von „einreichen–warten–einreichen“ verschwendet diese Parallelität.
- Behalten Sie ein flaches Prompt-Template pro Inhaltstyp (Orbit für Produktbilder, Push-in für Lifestyle-Bilder) und interpolieren Sie dann das Produktnomen. Konsistenz im gesamten Feed ist wichtiger als Cleverness bei jedem einzelnen Clip.
- Budget-Check: Ein Katalog mit 50 SKUs, entworfen mit 6 Sekunden/480p, kostet 50 × $0.068 ≈ $3.42. Die besten zehn auf 720p zu heben, fügt zehn × $0.128 ≈ $1.28 hinzu. Ein ganzer Monat täglicher Produkt-Kurzclips kostet weniger als eine Stunde Studiozeit.
Hinweise zur Veröffentlichung von Kurzclips
- Vertikal erfordert vertikale Referenzbilder. Wie oben erwähnt, überschreibt das Seitenverhältnis des Referenzbilds oft
aspect_ratio– wenn der Clip in einen Feed soll, beschneiden Sie das statische Bild vor dem Einreichen auf 9:16. Ein fertig gerendertes quadratisches Bild auf vertikal zuzuschneiden, kostet die meisten Pixel. - Die erste Sekunde ist der Hook – Prompts, die Bewegung sofort beginnen lassen („camera orbits“, „push in“), schneiden bei der Abschlussrate besser ab als langsames Einblenden.
- Kurzclips bringen eine vom Modell generierte Atmosphären-Tonspur mit. Jede von uns generierte Ausgabe enthält einen AAC-Stream – manche Clips haben eine subtile Studio-Atmosphäre, andere sind nahezu stumm. Es gibt kein Eingabefeld, um das zu steuern, also planen Sie beim Veröffentlichen, ihn durch Ihre eigene Musik oder Voiceover zu ersetzen, statt ihn als fertigen Soundtrack zu behandeln.
- Loop-Freundlichkeit: Orbits und Lichtsweeps loopen viel besser als Clips, die mit einer Enthüllung enden. Für automatisch loopende Feeds (Shorts, Reels) lässt sich das Orbit-Muster oben nahtlos wiederholen.
Häufig gestellte Fragen
Wie lange dauert das Rendern? Die 6-Sekunden-Clips in diesem Artikel brauchten jeweils einige Minuten zum Rendern; der 12-Sekunden-Clip etwas länger. Behandeln Sie es als asynchrone Warteschlange, nicht als interaktiven Aufruf – reichen Sie in Batches ein und fragen Sie ab.
Kann ich generierte Bilder als Referenzbilder verwenden? Ja. Die Referenz-URL muss nur öffentlich abrufbar sein. Die drei statischen Quellbilder in diesem Artikel sind selbst API-generierte Produktbilder (aus einem Lauf von seedream-5.0-lite), entnommen aus unserer Asset-Bibliothek – eine vollständig synthetische Pipeline von statischem Bild zu Video.
Was ist mit 1080p oder mehr als 30 Sekunden? Dieser Endpunkt ist auf 720p und 30 Sekunden begrenzt. Für Kurzvideo-Feeds ist genau das der optimale Bereich; wenn Sie höhere Auflösung benötigen, skalieren Sie in der Post hoch oder sehen Sie im Modellkatalog nach aktuellen Optionen.
Wie unterscheidet sich das von grok-imagine-1.5/image-to-video? Der 1.5-Preview-Endpunkt tauscht Reichweite gegen Bewegungsqualität: 1–15 Sekunden Dauer, verbesserte Bewegung, gleicher Preis pro Sekunde. Dieser 1.0-Endpunkt gibt Ihnen 6–30 Sekunden. Die Grundlagen von 1.5 behandeln wir in einem anderen ausführlichen Artikel.
Gibt es eine Text-to-Video-Version? Ja – grok-imagine/text-to-video, dieselbe Task-Schnittstelle, nur Prompt-Eingabe. Wenn Marken-/Produktkonsistenz wichtig ist, ist Image-to-Video die richtige Wahl; wenn Sie Material von Grund auf generieren müssen, verwenden Sie Text-to-Video.
Wenn Sie statische Produktbilder und einen API-Schlüssel haben, sind Sie nur einen POST /v1/tasks von Ihrem ersten Feed-Clip entfernt: Holen Sie sich den Schlüssel vom Dashboard, beginnen Sie auf der grok-imagine/image-to-video-Modellseite und animieren Sie ein Produktbild mit dem Orbit-Prompt oben – bei 13 Cent pro Entwurf ist der schnellste Weg, das Modell zu lernen, es auszuführen.
Ä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