Vidu Q4 to najnowszy model wideo ShengShu (listopad 2026). Działa na dwa sposoby: ożywia jedno zdjęcie podane jako pierwsza klatka albo składa klip z 2-15 zdjęć referencyjnych - postaci, produktów, miejsc - do których odwołujesz się w prompcie po kolei. W trybie referencji możesz dodać do 3 plików audio (MP3, 3-12 s każdy). Klipy mają od 3 do 16 sekund, w 540p, 720p, 1080p, 2K albo 4K, z dźwiękiem domyślnie włączonym. Samego tekstu bez obrazu ten model nie przyjmuje - do tego weź Vidu Q3 Pro.
Do czego się nadaje
- Spójna postać albo produkt w kilku ujęciach - wrzucasz zdjęcia z kilku stron
- Ożywienie packshotu czy zdjęcia z sesji bez zmiany kadru
- Reklamy 9:16 i 16:9 z dźwiękiem w jednym przebiegu
- Ujęcia w 2K i 4K do montażu na dużym ekranie
Jak pisać prompty
- Przy referencjach pisz wprost "postać z obrazu 1 trzyma produkt z obrazu 2" - kolejność zdjęć ma znaczenie.
- Przy jednej klatce prompt jest opcjonalny - dopisz tylko ruch i kamerę. Proporcje biorą się wtedy ze zdjęcia.
- Jedno zdjęcie w polu referencji model potraktuje jak pierwszą klatkę - do trybu referencji daj co najmniej 2.
- Najpierw sprawdź ruch w 540p, finał rób w 1080p albo 4K.
FAQ
Ile kosztuje Vidu Q4 za sekundę?
Stawka zależy od rozdzielczości - w 720p to od 0,672 zł za sekundę, z VAT. Dźwięk nie zmienia ceny, a nieudane generacje nie są płatne. Dokładną kwotę dla 540p, 2K i 4K pokazuje kalkulator.
Czy Vidu Q4 zrobi wideo z samego tekstu?
Nie. Potrzebuje co najmniej jednego zdjęcia - pierwszej klatki albo referencji.
Ile zdjęć referencyjnych przyjmuje?
Od 2 do 15. Pełną listę pól pokazuje dokumentacja.
Jak wywołać Vidu Q4 przez API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q4",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "vidu-q4",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "vidu-q4",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parametry
| Parametr | Typ | Dozwolone | Domyślnie |
|---|---|---|---|
prompt | string | ≤ 20000 znaków | |
aspect_ratio | string | 16:9 9:16 1:1 4:3 3:4 | 16:9 |
resolution | string | 540p 720p 1080p 2K 4K | 720p |
duration | integer | 3-16 | 5 |
generate_audio | boolean | true | |
image_url | string | ||
image_urls | array | maks. 15 | |
audio_urls | array | maks. 3 | |
seed | integer |
Ten sam schemat zwraca GET /v1/models/vidu-q4.























