Naturalna pętla wideo AI wymaga, by koniec przechodził w początek: pozycja, kierunek ruchu, światło i dźwięk muszą pasować. Dwie zgodne pozy nie wystarczą. Zacznij od małego gestu, który sam wraca, wygeneruj krótkie ujęcie i wybierz punkt łączenia w edytorze. Jeśli akcja nie może naturalnie wrócić, wygeneruj powrót jako drugi klip, połącz styk przenikaniem albo świadomie zastosuj odtwarzanie do przodu i do tyłu.
Seedance 2.5 image-to-video to dobry punkt wyjścia: ujęcia od 4 do 30 sekund, 480p, 720p lub 1080p i opcjonalna klatka końcowa. Nie ma przełącznika pętli, więc styk musisz przygotować samodzielnie.
Wygeneruj gest, który może wrócić
Przygotuj referencję 16:9 fikcyjnej dorosłej kobiety w bordowej sukience całkowicie zakrywającej ciało przy balustradzie balkonu. Pokaż oba barki, zostaw miejsce wokół włosów i utrzymaj nieruchome tło miasta. Użyj swobodnej pozy początkowej. Unikaj działań zmieniających stan sceny: opróżniania kubka, zdejmowania ubrania, wejścia kogoś w kadr.
Skopiuj ten prompt ruchu:
One continuous six-second medium portrait of this fictional adult woman on the balcony. She slowly turns her gaze from the city toward the viewer, holds a soft smile briefly, then returns her head and eyes to the opening position. Her hands stay where they are. The camera stays at the same position and scale. Stable dusk illumination, a still background, very slight hair movement. No cut, no zoom, no new objects, no dialogue.
Wypróbuj w Playground
- Otwórz Seedance 2.5 image to video z tym wypełnionym promptem. Pozostań na karcie Playground w widoku Form; zaloguj się na konto z dodatnim saldem, aby uruchomić zadanie.
- Dodaj referencję balkonu w Input image i ten sam plik w Closing frame.
- Ustaw Duration na 6, Resolution na 480p do pierwszego podglądu (720p dla wersji do zachowania), pozostaw Aspect ratio na Auto, wyłącz Generate audio i w Advanced parameters włącz Return last frame.
- Sprawdź szacowaną cenę, uruchom zadanie i oceń styk według opisu poniżej.
Te same ustawienia pod nazwami pól:
| Ustawienie | Wartość początkowa | Powód |
|---|---|---|
image_url | Twoja zatwierdzona referencja | Staje się pierwszą klatką |
last_image_url | Ta sama referencja | Prosi o podobny obraz końcowy; nie gwarantuje zgodności ruchu |
duration_seconds | 6 | Czas na obrót i powrót |
resolution | 720p | 0,2773 $ na sekundę |
aspect_ratio | adaptive | Jedyna akceptowana wartość; przytnij wejście wcześniej |
generate_audio | false | Dźwięk jest domyślnie włączony; dodaj atmosferę osobno |
return_last_frame | true | Dostarcza ostatnią klatkę do metody dwóch klipów poniżej |
Sześć sekund w 720p kosztuje 1,6638 $. Zrób podgląd w 480p, 6 s (0,7404 $), aby sprawdzić ruch przed generowaniem w 720p. Dłuższe ujęcia bardziej dryfują, więc utrzymuj krótką jednostkę pętli i powtarzaj ją zamiast generować 30 sekund.
Uruchom z kodu
cat > input.json <<'J'
{
"prompt": "One continuous six-second medium portrait of this fictional adult woman on the balcony. She slowly turns her gaze from the city toward the viewer, holds a soft smile briefly, then returns her head and eyes to the opening position. Her hands stay where they are. The camera stays at the same position and scale. Stable dusk illumination, a still background, very slight hair movement. No cut, no zoom, no new objects, no dialogue.",
"image_url": "<your reference image URL>",
"last_image_url": "<the same reference image URL>",
"duration_seconds": 6,
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": false,
"return_last_frame": true
}
J
spicyapi tasks create --model bytedance/seedance-2.5/image-to-video --input-file input.json --waitKonfiguracja, przesyłanie plików lokalnych i wyniki są w dokumentacji CLI.
Albo zleć wykonanie Agentowi. Przekaż asystentowi powyższe CLI, serwer MCP (wywołuje spicyapi_task_create) lub Skill (npx skills add spicyapi-ai/spicy-skill). CLI i MCP pokazują cenę i pytają przed płatnym uruchomieniem.

Ilustracja, nie klatka Seedance: propozycja obrotu i powrotu.
Jeśli obraca się i nie wraca, uprość akcję do lekkiego przechylenia głowy zamiast dodawać instrukcje. Jeśli cały obraz zbliża się do widza, usuń filmowe opisy kamery i użyj referencji z oczywistymi stałymi punktami, jak narożniki balustrady. Identyczne pierwsze i ostatnie obrazy jedynie zachęcają do tej samej kompozycji; włosy, rękawy i dłonie pomiędzy nimi mogą nadal skończyć gdzie indziej.
Gdy pojedynczy klip nie wraca: wygeneruj powrót
Zwykle zaleca się identyczne obrazy początku i końca, ale środek ujęcia nadal może się zmieniać. Większą kontrolę daje metoda dwóch klipów:
- Wygeneruj klip A z referencji z włączonym
return_last_frame. - Użyj ostatniej klatki zwróconej przez A jako
image_url, a oryginalnej referencji jakolast_image_url, aby wygenerować klip B, opisując ruch powrotny, na przykład: "Continuing from this frame, she turns her head and eyes back to the opening position, then holds still. Same camera, same lighting, no cut." - Połącz A i B. Ostatnia klatka A jest pierwszą klatką B, więc usuń pierwszą klatkę B:
ffmpeg -i A.mp4 -i B.mp4 -filter_complex "[1:v]trim=start_frame=1,setpts=PTS-STARTPTS[b];[0:v][b]concat=n=2:v=1:a=0" -an AB.mp4Płacisz za dwa klipy (2 x 1,6638 $ = 3,3276 $ przy 6 s, 720p) i sprawdzasz oba styki (A z B oraz koniec B z początkiem A, jak opisano poniżej), ale oba klipy są zakotwiczone w oryginalnej referencji w punkcie pętli.
Znajdź styk, obserwując ruch, nie tylko pozy
Umieść dwie kopie kandydata jedna po drugiej w edytorze i obejrzyj granicę z normalną prędkością. Następnie przejdź klatka po klatce przez około pięć klatek po obu stronach, śledząc punkt, na przykład zewnętrzną część barku. Czy nadal porusza się w zgodnym kierunku?
Nawet dwie identyczne pozycje barku powodują szarpnięcie, jeśli pierwsza kopia kończy ruch w lewo, a druga zaczyna w prawo z pełną prędkością. Dla gestu powrotnego wybierz styk przy spokojnym punkcie zwrotnym, gdzie ruch zwalnia. Dla ruchu ciągłego, jak obracający się obiekt, dopasuj i pozycję, i kierunek.
Użyj narożnika tła, aby odróżnić ruch kamery od gestu. Jeśli balustrada i twarz zmieniają skalę, przycięcie czasu nie usunie najazdu kamery. Jeśli na styku zmieniają się tylko powieki, przesuń cięcie poza mrugnięcie. Jeśli sukienka zmienia dekolt, wybierz nienaruszony odcinek albo wygeneruj ponownie; przenikanie miesza dwa różne stroje.

Ilustracja, nie klatka Seedance: podobne pozy mogą ukrywać niezgodny ruch.
Wyeksportuj tylko wybrany zakres. Ten przykład zachowuje sekundy od 1 do 5; zastąp je swoimi granicami:
ffmpeg -i input.mp4 \
-vf "trim=start=1:end=5,setpts=PTS-STARTPTS" \
-an -c:v libx264 -crf 18 -pix_fmt yuv420p loop.mp4
ffmpeg -stream_loop 2 -i loop.mp4 -c copy review-three-cycles.mp4Druga komenda tworzy tylko plik kontrolny trzech cykli. -an usuwa dźwięk; dodaj go po zatwierdzeniu obrazu. Przycisk Repeat lub Loop odtwarzacza tylko uruchamia odtwarzanie od nowa i nie ukryje widocznego styku, więc użyj loop.mp4 jako powtarzanej jednostki.
Zastosuj przenikanie, gdy pozostała drobna różnica
Krótkie przenikanie może złagodzić niewielką różnicę jasności lub pozy. Nie przywróci znikniętego obiektu ani nie powstrzyma podwójnej ekspozycji twarzy. Poniższa komenda łączy ostatnie 0,5 sekundy klipu o długości 6 sekund i 24 fps z jego pierwszymi 0,5 sekundy, aby ostatnia klatka pętli prowadziła wprost do pierwszej. Wynik ma 5,5 sekundy:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]split=3[a][b][c];\
[a]trim=start=5.5:end=6,setpts=PTS-STARTPTS[tail];\
[b]trim=start=0:end=0.5,setpts=PTS-STARTPTS[head];\
[c]trim=start=0.5:end=5.5,setpts=PTS-STARTPTS[mid];\
[tail][head]xfade=transition=fade:duration=0.5:offset=0[xf];\
[xf][mid]concat=n=2:v=1:a=0,format=yuv420p[v]" \
-map "[v]" -an -c:v libx264 -crf 18 blended-loop.mp4Dla innej długości D i zakładki X użyj trim=start=D-X:end=D dla końca, trim=start=0:end=X dla początku i trim=start=X:end=D-X dla środka, z duration=X w xfade. Wpisz obliczone liczby do komendy. Zacznij od zakładki 8 do 12 klatek. Jeśli oczy stają się dwiema parami lub palce zostawiają przezroczyste smugi, skróć zakładkę albo zrezygnuj z przenikania.

Ilustracja, nie klatka Seedance: niewyrównane przenikanie podwaja rysy twarzy.
Przenikanie pasuje do niemal nieruchomego portretu. Nie sprawdza się przy dużym obrocie głowy, nakładających się dłoniach czy ruchu kamery. Jeśli problemem jest drobna zmiana ekspozycji, wyrównaj oba końce przed przenikaniem; jeśli zmienia się geometria, wróć do wyboru źródła.
Stwórz zamierzony boomerang, gdy odwrócenie pasuje
Pętla do przodu i do tyłu działa przy delikatnym przechyleniu głowy. Nie używaj jej do mowy, chodzenia do przodu, opadających włosów, nalewania wody czy ręki odkładającej przedmiot: odwrócona przyczynowość jest widoczna.
Komenda bierze pierwsze pięć sekund przy 24 fps, odtwarza klatki 0 do 119 do przodu, potem 118 do 1 wstecz, usuwając powtórzone klatki końcowe, które powodowałyby krótkie zatrzymanie:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]fps=24,trim=start_frame=0:end_frame=120,setpts=PTS-STARTPTS,split[f][r];[r]reverse,trim=start_frame=1:end_frame=119,setpts=PTS-STARTPTS[back];[f][back]concat=n=2:v=1:a=0,format=yuv420p[v]" \
-map "[v]" -an -c:v libx264 -crf 18 boomerang.mp4Źródło potrzebuje co najmniej pięciu sekund wideo; wynik to 238 klatek, około 9,9 sekundy. Wybierz źródło poruszające się powoli na końcach, inaczej zmiana kierunku nadal będzie gwałtowna. Filtr reverse buforuje wszystko, co przetwarza, więc najpierw przytnij krótki odcinek (dokumentacja filtrów FFmpeg).
Dodaj dźwięk, gdy obraz już działa
Dla bezgłośnego podglądu profilu pozostaw pętlę wyciszoną. Dla atmosfery połóż osobną ścieżkę tła pomieszczenia lub miasta pod kilkoma cyklami, połącz jej końce przenikaniem niezależnie od obrazu i posłuchaj przejścia w słuchawkach. Aby stworzyć trzykrotnie dłuższe tło z płynnymi stykami, połącz kopie jednego pliku atmosfery (każdy styk skraca wynik o jedną sekundę):
ffmpeg -i bed.wav -i bed.wav -i bed.wav -filter_complex "[0][1]acrossfade=d=1[x];[x][2]acrossfade=d=1" bed3.wavNie odwracaj mowy ani nie dodawaj wyraźnego zdarzenia dźwiękowego do każdego powtórzenia, chyba że taki jest zamiar.
Przed przekazaniem sprawdź plik trzech cykli w rozmiarze wyświetlania: reset kamery, skok ubrania, podwójna twarz lub trzask dźwięku. Jeśli portret jest stabilny, ale jeden szczegół tła nie chce się zapętlić, alternatywą jest cinemagraph z maską: zachowaj zatwierdzony nieruchomy portret i animuj tylko osobny obszar zasłony lub światła. To kompozycja wokół statycznej osoby, a nie płynnie zapętlona wygenerowana gra postaci.






