Un loop video IA naturale richiede che la fine prosegua nell’inizio: posizione, direzione del movimento, luce e suono. Far coincidere due pose non basta. Parti da un piccolo gesto che ritorna da solo, genera un’inquadratura breve e scegli il raccordo in un editor. Se l’azione non può tornare naturalmente, genera il ritorno come secondo clip, sfuma il raccordo o accetta un effetto deliberato di riproduzione avanti e indietro.
Seedance 2.5 image-to-video è un buon punto di partenza: riprese da 4 a 30 secondi, 480p, 720p o 1080p e un frame finale facoltativo. Non ha un interruttore per il loop, quindi il raccordo spetta a te.
Genera un gesto che possa tornare
Prepara un riferimento 16:9 di una donna adulta immaginaria in un abito bordeaux completamente coprente, accanto alla ringhiera di un balcone. Mostra entrambe le spalle, lascia spazio intorno ai capelli e mantieni immobile lo sfondo della città. Usa una posa iniziale rilassata. Evita azioni che cambiano lo stato della scena: una tazza svuotata, un indumento tolto, qualcuno che entra nell’inquadratura.
Copia questo prompt di movimento:
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.
Provalo nel Playground
- Apri Seedance 2.5 image to video con questo prompt già inserito. Resta nella scheda Playground, in vista Form; accedi con un account con saldo per eseguire.
- Aggiungi il riferimento del balcone in Input image e lo stesso file in Closing frame.
- Imposta Duration a 6, Resolution a 480p per la prima prova (720p per la versione da tenere), lascia Aspect ratio su Auto, disattiva Generate audio e attiva Return last frame in Advanced parameters.
- Controlla la stima del prezzo, esegui e valuta il raccordo come descritto sotto.
Gli stessi controlli con i loro nomi di campo:
| Controllo | Valore iniziale | Motivo |
|---|---|---|
image_url | Il tuo riferimento approvato | Diventa il primo frame |
last_image_url | Lo stesso riferimento | Chiede un’immagine finale simile; non garantisce un movimento coerente |
duration_seconds | 6 | Spazio per il giro e il ritorno |
resolution | 720p | $0,2773 al secondo |
aspect_ratio | adaptive | L’unico valore accettato; ritaglia prima l’immagine in ingresso |
generate_audio | false | L’audio è attivo per impostazione predefinita; aggiungi l’ambiente separatamente |
return_last_frame | true | Fornisce il frame finale per il metodo a due clip descritto sotto |
Sei secondi a 720p costano $1,6638. Fai un’anteprima a 480p, 6 s ($0,7404), per controllare il movimento prima della generazione a 720p. Le riprese più lunghe tendono a deviare di più, quindi mantieni breve l’unità del loop e ripetila invece di generare 30 secondi.
Eseguilo dal codice
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 --waitConfigurazione, caricamento dei file locali e risultati sono nella documentazione CLI.
Oppure lascia che un Agent lo esegua. Fornisci al tuo assistente la CLI sopra, il server MCP (chiama spicyapi_task_create) o lo Skill (npx skills add spicyapi-ai/spicy-skill). CLI e MCP mostrano il prezzo e chiedono conferma prima di un’esecuzione a pagamento.

Illustrazione, non un frame Seedance: una proposta di giro e ritorno.
Se si gira e non torna, semplifica l’azione in una piccola inclinazione della testa invece di aggiungere istruzioni. Se tutta l’immagine avanza verso lo spettatore, elimina il linguaggio cinematografico sulla camera e usa un riferimento con ancoraggi fissi evidenti, come gli angoli della ringhiera. Immagini iniziale e finale identiche incoraggiano solo la stessa composizione; capelli, maniche e mani possono comunque finire altrove.
Se un solo clip non torna: genera il ritorno
Il consiglio abituale è usare immagini iniziale e finale identiche, ma la parte centrale può comunque deviare. Un percorso più controllabile usa due clip:
- Genera il clip A dal tuo riferimento con
return_last_frameattivo. - Usa il frame finale restituito da A come
image_urle il riferimento originale comelast_image_urlper generare il clip B, descrivendo il ritorno, per esempio: "Continuing from this frame, she turns her head and eyes back to the opening position, then holds still. Same camera, same lighting, no cut." - Unisci A e B. L’ultimo frame di A è il primo di B, quindi elimina il primo frame di 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.mp4Paghi due clip (2 x $1,6638 = $3,3276 a 6 s, 720p) e devi controllare entrambi i raccordi (da A a B e dalla fine di B all’inizio di A, come descritto sotto), ma entrambi i clip sono ancorati al riferimento originale nel punto di loop.
Trova il raccordo guardando il movimento, non solo le pose
Metti due copie del candidato una dopo l’altra nell’editor e osserva il confine a velocità normale. Poi scorri circa cinque frame per lato, seguendo un punto di riferimento come il bordo esterno della spalla. Continua a muoversi in una direzione compatibile?
Due posizioni identiche della spalla producono comunque uno scatto se la prima copia termina muovendosi a sinistra e la seconda inizia verso destra a piena velocità. Per un gesto di ritorno, scegli il raccordo vicino al punto di inversione rilassato, dove il movimento rallenta. Per un movimento continuo, come un oggetto che ruota, fai coincidere sia posizione sia direzione.
Usa un angolo dello sfondo per distinguere il movimento della camera dal gesto. Se ringhiera e volto cambiano entrambi scala, accorciare la ripresa non elimina quella carrellata in avanti. Se al raccordo cambiano solo le palpebre, sposta il taglio lontano dal battito di ciglia. Se cambia la scollatura dell’abito, scegli una sezione intatta o rigenera; una dissolvenza mescola due costumi diversi.

Illustrazione, non un frame Seedance: pose simili possono nascondere movimenti incompatibili.
Esporta solo l’intervallo scelto. Questo esempio mantiene i secondi da 1 a 5; sostituiscili con i tuoi limiti:
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.mp4Il secondo comando crea solo un file di controllo di tre cicli. -an elimina l’audio; aggiungi il suono dopo aver approvato l’immagine. Il controllo Repeat o Loop di un lettore riavvia solo la riproduzione e non nasconde un raccordo visibile, quindi usa loop.mp4 come unità ripetuta.
Sfuma il raccordo se rimane una piccola differenza
Una breve dissolvenza incrociata può attenuare una piccola differenza di luminosità o posa. Non può recuperare un oggetto scomparso né impedire la doppia esposizione del volto. Il comando sotto fonde gli ultimi 0,5 secondi di un clip di 6 secondi a 24 fps con i primi 0,5 secondi, così l’ultimo frame del loop prosegue direttamente nel primo. Il risultato dura 5,5 secondi:
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.mp4Per un’altra durata D e sovrapposizione X, usa trim=start=D-X:end=D per la coda, trim=start=0:end=X per l’inizio e trim=start=X:end=D-X per la parte centrale, con duration=X in xfade. Inserisci nel comando i numeri calcolati. Parti da 8 a 12 frame di sovrapposizione. Se gli occhi si sdoppiano o le dita lasciano scie trasparenti, accorcia la sovrapposizione o rinuncia alla dissolvenza.

Illustrazione, non un frame Seedance: una fusione disallineata sdoppia i lineamenti.
La fusione è adatta a un ritratto quasi immobile. È una cattiva scelta per un ampio giro della testa, mani sovrapposte o un movimento di camera. Se il problema è un piccolo cambio di esposizione, bilancia i due estremi prima della fusione; se cambia la geometria, torna alla selezione della sorgente.
Crea un boomerang intenzionale quando l’inversione funziona
Un loop avanti e indietro funziona per una lieve inclinazione della testa. Non usarlo per parlato, camminata in avanti, capelli che cadono, acqua versata o una mano che posa un oggetto: la causalità invertita si vede.
Il comando prende i primi cinque secondi a 24 fps, riproduce i frame da 0 a 119 in avanti, poi da 118 a 1 all’indietro, eliminando i frame duplicati agli estremi che creerebbero una breve pausa:
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.mp4La sorgente deve avere almeno cinque secondi di video; l’uscita è di 238 frame, circa 9.9 secondi. Scegli una sorgente che si muova lentamente agli estremi, altrimenti il cambio di direzione appare ancora brusco. Il filtro reverse memorizza tutto ciò che elabora, quindi ritaglia prima una sezione breve (documentazione dei filtri FFmpeg).
Aggiungi il suono quando l’immagine funziona
Per un’anteprima di profilo silenziosa, lascia il loop muto. Per l’ambiente, metti una traccia separata di tono della stanza o rumore urbano sotto più cicli, sfuma gli estremi dell’ambiente indipendentemente dall’immagine e ascolta il punto di ripetizione in cuffia. Per creare una base tre volte più lunga con raccordi morbidi, sfuma copie di un file d’ambiente (ogni raccordo accorcia il risultato di un secondo):
ffmpeg -i bed.wav -i bed.wav -i bed.wav -filter_complex "[0][1]acrossfade=d=1[x];[x][2]acrossfade=d=1" bed3.wavNon invertire il parlato e non abbinare un evento sonoro distinto a ogni ripetizione, a meno che sia voluto.
Prima della consegna, controlla il file di tre cicli alle dimensioni di visualizzazione per cercare un salto di camera, un cambio improvviso dei vestiti, un volto sdoppiato o un clic audio. Se il ritratto è stabile ma un dettaglio dello sfondo non può andare in loop, l’alternativa è una cinemagraph con maschera: mantieni un ritratto statico approvato e anima solo una zona separata di tenda o luce. È compositing intorno a un soggetto statico, non un’interpretazione generata senza raccordi visibili.






