Wprowadzenie
Seedance 2.0 image-to-video zaczyna klip od obrazu, który dostarczasz, i animuje go przez maksymalnie 15 sekund. Dodaj kadr końcowy, a ujęcie musi do niego dojść – to właśnie czyni przejścia i pary „przed i po” powtarzalnymi.
Seedance 2.0 od ByteDance publikuje text-to-video, image-to-video i reference-to-video: klipy od 4 do 15 sekund, od 480p do 4K, z natywnym dźwiękiem i domyślnym kadrowaniem adaptive.
| Materiał początkowy | Odpowiedni tryb |
|---|---|
| Opisana scena | Seedance 2.0 Tekst na wideo |
| Zatwierdzony obraz początkowy | Seedance 2.0 Obraz na wideo |
| Oddzielne materiały referencyjne | Seedance 2.0 Referencje na wideo |
Najważniejsze funkcje
Brzmienie pomieszczenia wraca w tym samym pliku
generate_audio jest domyślnie włączone, więc lód w shakerze, śmiech, cichy gwar przy barze i samo pomieszczenie wychodzą z tego samego przebiegu co obraz. Wynik przychodzi już zsynchronizowany, bez czekania na osobną obróbkę dźwięku. Wyłącz je, kiedy klip i tak trafi do montażysty.
Dziewięć referencji, jedna ciągła obsada
reference-to-video przyjmuje naraz do 9 obrazów, 3 klipów i 3 ścieżek audio. Trzy ujęcia jednej twarzy plus kadr z kostiumem utrzymują postać przez cały odcinek znacznie lepiej niż dziewięć niepowiązanych kadrów, a klip referencyjny niesie język kamery, którego żaden przymiotnik w prompcie nie odtworzy w sposób pewny.
Kształt idzie za materiałem
aspect_ratio ma we wszystkich trzech endpointach domyślną wartość adaptive. W image-to-video klip zachowuje kształt kadru otwierającego, więc pion nie zostaje przycięty do poziomu; w text-to-video model bierze kształt z promptu; w reference-to-video znajduje kadr, który mieści wszystko z referencji. Podawaj 16:9, 9:16 albo 21:9 tylko wtedy, gdy miejsce publikacji wymaga stałego formatu.
Parametry żądania
| Parametr | Wymagane | Uwaga |
|---|---|---|
prompt | Nie | Opcjonalny, ale warto go napisać: powinien mówić, co dzieje się po tej klatce, a nie powtarzać to, co już widać: akcja, ruch kamery, upływ czasu, dźwięk. |
image_url | Tak | Publiczny, bezpośrednio pobieralny link do pierwszej klatki; wymagany. |
last_image_url | Nie | Opcjonalny kadr końcowy, ważny wyłącznie razem z |
aspect_ratio | Nie | Kadrowanie wyjścia, domyślnie |
resolution | Nie | Rozdzielczość wyjścia, domyślnie 720p, maksymalnie 4k; nie ma tu progu z upscalingiem. Ustawia próg cenowy, a wyższe progi oznaczają większe pliki i dłuższy rendering. |
duration_seconds | Nie | Długość w pełnych sekundach, od 4 do 15, domyślnie 5, i zarazem rozliczana wielkość. |
generate_audio | Nie | Decyduje, czy natywna ścieżka dźwiękowa powstaje w synchronie z obrazem. Domyślnie włączone; wyłącz je przy niemych pętlach albo gdy dźwięk dochodzi na etapie postprodukcji. Domyślnie: |
seed | Nie | Całkowity seed; pominięty – każdy przebieg losuje własny. Ustal go przy wszystkim innym bez zmian, żeby ocenić, co naprawdę zmieniła poprawka w prompcie. |
return_last_frame | Nie | Oprócz wideo zwraca ostatnią klatkę klipu jako osobny obraz. Wyślij ją do image-to-video jako kolejną klatkę początkową, żeby łączyć ujęcia bez samodzielnego eksportowania kadru. Domyślnie: |
bitrate_mode | Nie | Bitrate dostarczanego pliku: |
watermark | Nie | Dodaje do wideo widoczny znak wodny „AI generated” samego modelu. Domyślnie wyłączone; włącz, gdy miejsce publikacji wymaga oznaczania materiałów wygenerowanych przez AI. Domyślnie: |
Cennik
| Specyfikacja | Cena |
|---|---|
| $0.07 / sekundę |
| $0.152 / sekundę |
| $0.374 / sekundę |
| $0.778 / sekundę |
Zastosowania
Animuj ustaloną pierwszą klatkę
Seedance 2.0 image-to-video zaczyna klip od obrazu, który dostarczasz, i animuje go przez maksymalnie 15 sekund. Dodaj kadr końcowy, a ujęcie musi do niego dojść – to właśnie czyni przejścia i pary „przed i po” powtarzalnymi. Użyj tego trybu, gdy dostarczony obraz ma określić początkową kompozycję. Opisz tylko późniejszy ruch, kamerę i dźwięk, a potem sprawdź spójność szczegółów źródła.
Materiał kostiumowy i roleplay bez cenzury
Koronka i satyna, ogony i uszy jako rekwizyty, kadry z perspektywy pierwszej osoby, pary dowolnej płci – nic z tego nie jest przez nas przeglądane. Własna warstwa Seedance odrzuca część śmielszych sformułowań, więc prowadź te momenty z pierwszej klatki w image-to-video, a nie z promptu.
Jedno ujęcie w trzech formatach
Siedem proporcji, od 21:9 po 9:16, plus adaptive. Uruchom ten sam prompt w 16:9 na stronę, 9:16 na feed pionowy i 1:1 na kafelek. Każdy przebieg to nowe ujęcie, a nie przekadrowanie poprzedniego, więc gdy trzy cięcia mają do siebie pasować, poprowadź wszystkie z tego samego kadru otwierającego w image-to-video i zestaw je obok siebie, zanim pójdą dalej.
Nocne lokale i sceny barowe, które niosą własny dźwięk
Mieszany koktajl, szkło na barze, cichy gwar za czerwonym lampionem: wpisz pomieszczenie w prompt i zostaw generate_audio włączone. Seedance 2.0 renderuje tło dźwiękowe razem z obrazem, więc cięcie przychodzi z atmosferą, a nie jako niemy materiał.
Wskazówki
Wybierz endpoint na podstawie tego, co już masz
Sam opis idzie do text-to-video. Kadr, który musi przetrwać, idzie do image-to-video. Obsada, produkt albo ruch, który ma się powtarzać między cięciami, idzie do reference-to-video. Kiedy wołasz nazwę rodziny, endpoint wybierają za ciebie wysłane pola.
Zapisz ujęcie jak listę zdjęciową
Bohater, akcja, kamera, światło, dźwięk – jedna myśl na zdanie. Klip z tej strony powstał dokładnie z tego tekstu, zostawionego po angielsku tak, jak został wysłany: „Photorealistic live-action, not animation. A real adult woman in a chocolate satin robe works behind a dim neon bar, a large fluffy faux fox tail accessory clipped at the small of her back. She shakes a cocktail, turns to set the glass on the counter and the tail sways with the movement, then she looks back at camera with a teasing smile. Warm red lantern light, 35mm grain, slow push-in, ice rattling and low bar chatter.” Pięć sekund, 720p, 16:9, dźwięk włączony.
Dostosuj opublikowany przykład
Zacznij od opublikowanego przykładu i zachowaj wejścia właściwe dla tego trybu. Zmień tylko temat i kierunek kreatywny, a kolejne ujęcie porównaj z konkretnym celem wizualnym.
Photorealistic live action, not animation. Lightning flashes and lights the whole forecourt white for an instant. She unfolds her arms, pushes off the truck door and steps out to the edge of the canopy, holding one open palm into the falling rain, then looks up into the storm and laughs. Her wet flannel shirt lifts in the gust; rain hammers the concrete and streams off the canopy edge in front of the lens. Slow dolly in past the fuel pump. No music, only rain, wind and rolling thunder.
Błyskawica jest tu trudną częścią: pojedyncza klatka, która bieleje i wraca, na tle deszczu spływającego z krawędzi zadaszenia przed obiektywem i powolnego najazdu za dystrybutorem. Prompt zaczyna się od nacisku na fotorealistyczny materiał aktorski, co warto robić za każdym razem, gdy scena jest tak stylizowana – inaczej znosi ją w stronę ilustracji.
Sprawdź wynik i iteruj celowo
Dla „Sprawdź wynik i iteruj celowo” przygotuj zatwierdzonego obrazu otwierającego jako wiarygodną podstawę dla Seedance 2.0. Opisz zmianę lub sekwencję tak, aby dało się ją sprawdzić w wyniku, a w kolejnej iteracji zmień tylko decyzję, która jeszcze nie spełnia celu.
Ustal punkt wyjścia i oczekiwany rezultat
Przed generowaniem określ, co ma być widoczne na początku, w trakcie zmiany i na końcu. Dzięki temu oceniasz sekwencję względem konkretnego celu, a nie ogólnego wrażenia.
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": "bytedance/seedance-2.0/image-to-video",
"input": {
"aspect_ratio": "adaptive",
"bitrate_mode": "standard",
"duration_seconds": 5,
"generate_audio": true,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise"
}
}'
# 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.
















