Tutoriel
API Seedance 2.5 reference-to-video : reprendre le mouvement de caméra d'une vidéo de référence en changeant le sujet
La durée de la vidéo de référence est aussi facturée : comment se calcule le coût et comment écrire @video1 dans le prompt, tout est expliqué dans cet article.
TL;DR
seedance-2.5/reference-to-videoprend une vidéo existante comme référence, conserve son mouvement de caméra, son rythme et ses actions, puis change le sujet, le style visuel ou ajoute une musique de référence. Ouvrez la page du modèle pour générer en ligne ; les nouveaux utilisateurs reçoivent 200 crédits à l'inscription.- Facturation à la seconde, la durée de la vidéo de référence est aussi comptée : coût = prix unitaire × (durée de la vidéo de référence + durée de sortie). 480p à $0.1215 par seconde, 720p à $0.2715, 1080p à $0.68.
- 5 secondes de référence + 5 secondes de sortie : 480p $1.215, 720p $2.715. Réglez d'abord votre prompt en 480p, c'est le plus économique.
Un exemple concret : changer le sujet en conservant le mouvement de caméra
La vidéo de référence est une publicité de chaussures de course, l'image de référence est un flacon de parfum. Le prompt demande au modèle de reprendre l'ordre des plans et le mouvement de caméra de la pub de chaussures, en remplaçant entièrement les chaussures par le parfum :
Use @video1 strictly as the reference for shot progression, product rotation, camera paths, pacing, macro close-ups, and lighting transitions. Replace the shoe completely with the perfume bottle from @image1. Preserve the bottle's exact silhouette, amber glass color, cap proportions, label placement, and premium material appearance in every shot. Present it as a luxury fragrance commercial on a dark obsidian pedestal, with warm amber rim light, controlled reflections, fine atmospheric mist, and precise macro detail. Follow the visual rhythm and camera choreography of @video1 while keeping one consistent perfume bottle throughout. Do not transfer shoe laces, soles, fabric textures, or shoe-shaped geometry into the bottle. Do not invent extra products, readable brand text, logos, hands, or people.
Générer avec ce prompt → (importez votre vidéo de référence et votre image de produit, 480p, 9:16)
seedance-2.5/reference-to-video, 480p, 9:16, sortie de 4 secondes, audio généré par le modèle.
@video1 et @image1 sont les numéros des ressources dans le prompt ; ils correspondent, dans l'ordre d'import, à la première adresse de reference_video_urls et de reference_image_urls. La phrase finale « ne pas transférer les lacets, les semelles dans le flacon de parfum » est aussi importante que les descriptions positives qui précèdent : sans cette précision, le modèle reprendra des détails de la vidéo de référence.
curl : première vidéo
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5/reference-to-video",
"input": {
"prompt": "沿用 @video1 的运镜和节奏,把主体换成 @image1 里的产品,光线和构图保持一致",
"reference_video_urls": ["https://your-cdn.example.com/reference-clip.mp4"],
"reference_image_urls": ["https://your-cdn.example.com/product.jpg"],
"duration": 5,
"resolution": "480p",
"aspect_ratio": "9:16"
}
}'
Si la vidéo de référence dure 5 secondes, cette requête est facturée 10 secondes en 480p, soit $1.215.
La réponse renvoie taskId ; consultez ensuite le résultat :
curl https://api.hiapi.ai/v1/tasks/tk-hiapi-... \
-H "Authorization: Bearer $HIAPI_KEY"
Une fois status à success, téléchargez la vidéo depuis output[0].url.
Python : soumission, polling, téléchargement
# pip install requests;先 export HIAPI_KEY=你的 Key
import os, time, uuid, requests
KEY = os.environ["HIAPI_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
def generate(prompt, model="seedance-2.5/reference-to-video", timeout_s=900, **params):
body = {"model": model, "input": {"prompt": prompt, **params}}
# 重试提交同一个任务时带同一个 Idempotency-Key,避免重复扣费
headers = {**H, "Idempotency-Key": str(uuid.uuid4())}
r = requests.post("https://api.hiapi.ai/v1/tasks", json=body, headers=headers, timeout=30)
r.raise_for_status()
res = r.json()
if res.get("code") != 200:
raise RuntimeError(res)
task_id = res["data"]["taskId"]
deadline = time.time() + timeout_s
while time.time() < deadline:
d = requests.get(f"https://api.hiapi.ai/v1/tasks/{task_id}", headers=H, timeout=30).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(d)
time.sleep(10)
raise TimeoutError(task_id)
url = generate(
"保留 @video1 里柯基奔跑的节奏和低机位跟拍,把整个画面改成毛毡定格动画风格",
reference_video_urls=["https://your-cdn.example.com/corgi-run.mp4"],
duration=5, resolution="480p", aspect_ratio="16:9",
)
with open("clip.mp4", "wb") as f:
f.write(requests.get(url).content)
Trois usages courants
1. Changer le sujet en conservant le mouvement de caméra (l'exemple du parfum ci-dessus) : vidéo de référence + image de référence. Le prompt doit préciser clairement « ce qu'on prend de @video1 », « ce qu'on prend de @image1 » et « ce qu'il ne faut pas transférer ».
2. Transférer uniquement le mouvement, changer tout le style visuel : ne fournir que la vidéo de référence. L'exemple ci-dessous transforme une prise de vue réelle d'un corgi qui court en animation en stop-motion de feutrine, en conservant le rythme de course et le mouvement de caméra en suivi latéral :
Use @video1 as the sole visual reference. Preserve the corgi's recognizable markings, running cadence, stride timing, body orientation, forward momentum, and the low side-tracking camera movement. Reimagine the entire scene as a handcrafted stop-motion film made from felt, wool, miniature grass, and painted paper scenery. Keep the warm sunset backlight and continuous chase rhythm, with subtle handmade texture and natural depth of field. Maintain one coherent corgi throughout the shot, anatomically stable legs, smooth forward motion, and a continuous camera path. Do not introduce additional animals, text, logos, abrupt cuts, or unrelated objects.
Générer avec ce prompt → (importez votre vidéo de référence)
seedance-2.5/reference-to-video, 480p, uniquement la vidéo de référence, sortie de 4 secondes.
3. Combiner vidéo + image + audio : ajoutez reference_audio_urls et utilisez @audio1 dans le prompt pour préciser quel plan tombe sur quel point de la musique ; c'est bien plus précis que de simplement écrire « avec musique ». L'audio de référence doit être fourni avec la vidéo de référence.
Aperçu des paramètres
| Paramètre | Valeurs | Description |
|---|---|---|
prompt |
chaîne de caractères, obligatoire | Référencez les ressources avec @video1 @image1 @audio1 |
reference_video_urls |
obligatoire, 1 à 10 clips | MP4/MOV, chaque clip de 2 à 30 secondes, total ne dépassant pas 30 secondes, chaque clip inférieur à 200 MB |
reference_image_urls |
30 maximum | JPEG/PNG/WebP, etc., chaque image inférieure à 30 MB |
reference_audio_urls |
10 clips maximum | WAV/MP3, à utiliser avec la vidéo de référence |
duration |
entier de 4 à 30, ou -1 pour laisser le modèle décider, par défaut 5 |
en secondes |
resolution |
480p / 720p / 1080p, par défaut 480p |
|
aspect_ratio |
16:9 4:3 1:1 3:4 9:16 21:9 adaptive |
Pour le portrait, indiquez directement 9:16 |
generate_audio |
par défaut true |
Calculons le coût
Secondes facturées = durée totale des vidéos de référence + durée de sortie. Les images et audios de référence ne sont pas facturés en supplément.
| Référence + sortie | 480p ($0.1215/s) | 720p ($0.2715/s) | 1080p ($0.68/s) |
|---|---|---|---|
| 5 s + 4 s | $1.0935 | $2.4435 | $6.12 |
| 5 s + 5 s | $1.215 | $2.715 | $6.8 |
| 10 s + 10 s | $2.43 | $5.43 | $13.6 |
Pour économiser : coupez la vidéo de référence pour ne garder que le mouvement dont vous avez besoin, réglez votre prompt en 480p, puis passez en 720p ou 1080p une fois la version finale validée. Pour un calcul plus détaillé, consultez les tarifs de l'API Seedance 2.5.
À vérifier avant la mise en production
- Les adresses des ressources doivent être accessibles publiquement : la vidéo de référence doit utiliser une URL HTTPS accessible publiquement.
- Utilisez un callback plutôt que le polling : ajoutez
"callback": {"url": "https://votre-domaine/hiapi/callback"}au niveau racine de la requête et dédupliquez partaskId. - Copiez rapidement les fichiers :
output[0].urlest un lien temporaire ; enregistrez-le immédiatement dans votre propre stockage. - Réessayez avec une clé d'idempotence : ajoutez
Idempotency-Keydans l'en-tête de la requête ; une même clé ne crée la tâche qu'une seule fois lors d'un nouvel essai. - Remboursement automatique en cas d'échec : seules les vidéos générées avec succès sont facturées.
Questions fréquentes
Peut-on utiliser uniquement une image de référence, sans vidéo de référence ?
Non, reference_video_urls est obligatoire. Si vous n'avez qu'une image, utilisez le mode image de référence de Seedance 2.5 image-vers-vidéo.
Pourquoi le montant débité est-il plus élevé que mon calcul ?
La durée de la vidéo de référence est aussi facturée. 10 secondes de vidéo de référence + 5 secondes de sortie sont facturées sur 15 secondes.
Peut-on générer directement en portrait ?
Oui, indiquez 9:16 dans aspect_ratio ; le modèle génère directement en portrait, sans recadrage a posteriori.
Plus il y a de ressources de référence, plus c'est cher ?
Les images et audios de référence ne coûtent rien en plus ; seule la vidéo de référence est facturée à la durée.
Si vous n'avez aucune ressource de référence et souhaitez générer à partir d'un simple texte, consultez l'API Seedance 2.5 texte-vers-vidéo. Pour essayer un premier clip, rendez-vous sur la page du modèle pour importer une vidéo de référence.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat