Wprowadzenie
Wan 2.5 Obraz na wideo zamienia kadr wysłany w image_url w 5- lub 10-sekundowy klip z dźwiękiem. Obraz wyznacza postać, strój, scenografię, kierunek światła i proporcje klipu; opcjonalny prompt o długości do 1500 znaków opisuje, co dzieje się dalej. Ten endpoint nie ma pola proporcji obrazu, więc przed wysłaniem przytnij obraz do formatu docelowego. Jeśli masz tylko pisany pomysł i żadnego kadru, skorzystaj z endpointu opartego na tekście.
Wybierz tryb Wan 2.5 według materiału początkowego
| Z czym zaczynasz | Tryb |
|---|---|
| opisana scena lub scenariusz | Wan 2.5 Tekst na wideo |
| zatwierdzony obraz początkowy | Wan 2.5 Obraz na wideo |
Najważniejsze funkcje
Kadr początkowy wyznacza wygląd
image_url przyjmuje JPEG, PNG, BMP lub WebP do 20 MB, przy czym każdy bok musi mieć od 240 do 8000 pikseli. Tego, co już widać w pliku – etykiety, sylwetki, kostiumu – nie trzeba opisywać ponownie, więc prompt może poświęcić słowa ruchowi, kamerze i dźwiękowi.
Dźwięk generowany z obrazem albo w rytmie twojej ścieżki
Każdy klip wraca z dźwiękiem wygenerowanym razem z obrazem. Gdy nagrana kwestia lub muzyczny akcent ma wyznaczać tempo, dodaj audio_url – plik WAV lub MP3 o długości od 3 do 30 sekund i rozmiarze do 15 MB. Twarz pochodzi z kadru, a timing ust z dźwięku. Ścieżka dłuższa niż klip jest ucinana na końcu, krótsza zostawia resztę w ciszy.
Dwie długości i trzy rozdzielczości
duration_seconds wynosi dokładnie 5 lub 10, a resolution to 480p, 720p (domyślnie) lub 1080p. Wyższe poziomy kosztują więcej za sekundę i dłużej się przetwarzają. Krótkie klipy lepiej utrzymują dłonie i włosy, więc dopracuj ruch przy pięciu sekundach, zanim przejdziesz do dziesięciu.
Parametry żądania
| Parametr | Wymagane | Uwaga |
|---|---|---|
image_url | Tak | Klatka początkowa. Podmiot, garderoba, scenografia, kierunek światła i proporcje klipu pochodzą z niej, więc najpierw ją przytnij. od 1 znaków |
prompt | Nie | Opcjonalny. Co dzieje się po kadrze: jedna czynność, jedno zachowanie kamery, zdanie o dźwięku. do 1500 znaków |
negative_prompt | Nie | To, co nie może się pojawić: druga osoba, napisy, rekwizyt, który kadr uparcie przywraca. Najwyżej 500 znaków – wystarczy krótka lista. do 500 znaków |
resolution | Nie | 480p, 720p lub 1080p, domyślnie 720p. Wyższe progi kosztują więcej za sekundę i dłużej wracają. |
duration_seconds | Nie | Dokładnie 5 albo 10. Krótkie klipy lepiej trzymają dłonie i włosy, więc najpierw ustal wygląd na pięciu sekundach. |
audio_url | Nie | Kwestia głosowa albo akcent muzyczny, za którym klip ma podążać, żeby mowa i rytm trafiały tam, gdzie się tego spodziewasz. WAV lub MP3, od 3 do 30 sekund, najwyżej 15 MB. od 1 znaków |
enable_prompt_expansion | Nie | Domyślnie wyłączone. Włącz je przy jednozdaniowym pomyśle; zostaw wyłączone, gdy prompt opisuje już precyzyjną czynność. Domyślnie: |
seed | Nie | Od 0 do 2147483647. Ustal go, gdy z tego samego kadru porównujesz rozdzielczość albo długość; dla losowej wartości pomiń pole zamiast wysyłać 0. |
Cennik
| Specyfikacja | Cena |
|---|---|
| $0.045 / sekundę |
| $0.09 / sekundę |
| $0.135 / sekundę |
Zastosowania
Ruch produktu z jednego packshotu
Opublikowany przykład z buteleczką serum wysyła zdjęcie produktu i prosi tylko o powolny łuk kamery o ćwierć obrotu, podczas gdy pas światła z okna przesuwa się po szkle; sama buteleczka się nie rusza. Ponieważ kadr już utrwala etykietę i sylwetkę, prompt niesie wyłącznie światło i ruch, renderowane w 720p przez pięć sekund.
Portret wypowiadający nagraną kwestię
Wyślij zatwierdzony portret jako image_url, a nagranie kwestii jako audio_url. Wygląd osoby pochodzi z obrazu, a timing ust z pliku, więc przy odbiorze oceniasz sposób podania, a nie synchronizację ust.
Dłuższe ujęcie studyjne z chronionymi detalami
Przykład z sukienką na ramiączkach trwa dziesięć sekund w 1080p i wychodzi od portretu studyjnego: przeniesienie ciężaru ciała, obrót w stronę obiektywu i dwa powolne kroki przy nieruchomej kamerze. Jego negatywny prompt, „extra people, text, jewellery changes”, nie pozwala biżuterii się zmieniać ani pojawiać się dodatkowym osobom w dłuższym ujęciu.
Deszcz, woda i inne dźwięki z widocznym źródłem
W przykładzie z parasolem dwie osoby stoją niemal nieruchomo, a deszcz bębni o parasol nad nimi: ruch należy do wody, a dźwięk ma widoczne źródło. Przy tak ciągłym zdarzeniu zwykle wystarcza pięć sekund.
Wskazówki
Najpierw przygotuj kadr
Przytnij obraz do formatu docelowego i sprawdź, czy pokazuje już strój, scenografię i światło, których chcesz. Klip zachowuje proporcje i wygląd obrazu, więc błąd w kadrze trafia prosto do wideo.
Opisuj tylko ruch
Prompt jest opcjonalny, ale jedna wyraźna linijka z czynnością daje znacznie stabilniejszy ruch. Napisz jedną czynność, jedno zachowanie kamery i notatkę o dźwięku. To, co kadr uparcie przywraca – drugą osobę, napisy, rekwizyt – wpisz do negative_prompt. Włącz enable_prompt_expansion dla jednolinijkowego pomysłu, a zostaw je wyłączone, gdy prompt już precyzyjnie opisuje czynność.
Dostosuj dołączony przykład
Zacznij od opublikowanego przykładu z duration_seconds 5 i resolution 720p, podając w image_url własny, publicznie dostępny obraz.
The camera arcs a slow quarter turn around the dropper bottle while a soft band of window light slides across the glass and the liquid inside catches it. The bottle itself does not move. Quiet room tone, no music.
Kadr utrwala etykietę i sylwetkę; prompt prosi tylko o łuk kamery i przesuwające się światło.
Porównuj ujęcia ze stałym seedem
Ustal seed, gdy porównujesz rozdzielczość lub długość z tego samego kadru, i zmieniaj jedno pole na uruchomienie. Aby uzyskać losowy wynik, pomiń pole zamiast wysyłać 0. Przed oddaniem odtwórz cały klip z dźwiękiem.
Szybki start z API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-2.5/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Uwierzytelnianie, pełny schemat, odpytywanie i obsługę błędów opisuje dokumentacja API.




























