Seedance 2.5 이미지 투 비디오: API 가이드
Seedance 2.5는 정지 이미지를 오디오가 있는 4~30초 클립으로 바꿉니다. 첫 프레임을 주면 동영상이 정확히 그 이미지에서 시작하고, 첫 프레임과 마지막 프레임을 주면 한쪽에서 다른 쪽으로 움직입니다. 각각의 요청과 실행할 수 있는 코드를 소개합니다.
이미지에서 시작하는 두 가지 방법
| 모드 | 필드 | 제공 내용 |
|---|---|---|
| 첫 프레임 | image_url | 클립이 내 이미지로 시작해 프롬프트대로 이어서 움직입니다. |
| 첫 프레임과 마지막 프레임 | image_url + end_image_url | 클립이 한 이미지에서 시작해 다른 이미지에서 끝납니다. 같은 이미지를 두 번 쓰면 루프가 됩니다. |
| 참조 이미지 | image_urls (최대 30) | 이미지가 모습(얼굴, 제품, 장소)을 이끌지만 첫 프레임을 고정하지는 않습니다. 참조 투 비디오를 참고하세요. |
이미지 하나 움직이기(첫 프레임)
aspect_ratio를 adaptive로 설정하면 동영상이 이미지의 모양을 유지하므로 9:16 사진에서 9:16 클립이 나옵니다. 이미지에 이미 있는 것이 아니라 무엇이 움직이는지 묘사하세요. 모델은 이미지를 볼 수 있습니다.
# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $KEY" \
-d '{
"model": "seedance-2.5",
"input": {
"prompt": "The model turns her head toward the camera and smiles as the wind lifts her hair, slow push-in, city traffic in the background",
"image_url": "https://example.com/portrait.jpg",
"duration": 6,
"resolution": "720p",
"aspect_ratio": "adaptive",
"audio": true
},
"max_cost_usd": 3
}'한 이미지에서 다른 이미지로(첫·마지막 프레임)
end_image_url를 추가합니다. 변화(비포 앤 애프터, 낮에서 밤으로, 빈 방에서 가구가 놓인 방으로)와 매끄러운 루프에 좋습니다.
# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $KEY" \
-d '{
"model": "seedance-2.5",
"input": {
"prompt": "Time-lapse: the empty plot becomes a finished house, workers moving fast, clouds racing",
"image_url": "https://example.com/plot.jpg",
"end_image_url": "https://example.com/house.jpg",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "adaptive"
},
"max_cost_usd": 3
}'컴퓨터의 파일로, Python에서
참조는 https 링크여야 합니다. 로컬 파일이라면 POST /v1/uploads가 바이트를 PUT할 링크와 image_url로 전달할 url(14일 유효)를 줍니다. 이미지는 최대 30 MB입니다.
import os, time, uuid, requests
API = "https://api.revana.si/v1"
H = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
# 1. Upload the picture from your computer (skip this if it already has a public https link).
up = requests.post(f"{API}/uploads", headers=H, json={"content_type": "image/jpeg", "bytes": os.path.getsize("product.jpg"), "filename": "product.jpg"}).json()
with open("product.jpg", "rb") as fh:
requests.put(up["upload_url"], data=fh, headers=up["upload_headers"]).raise_for_status()
# 2. Quote, then animate it. The clip starts on exactly this picture.
body = {"model": "seedance-2.5", "input": {
"prompt": "The bottle slowly turns on the marble counter as morning light sweeps across the label, water droplets glisten",
"image_url": up["url"], "duration": 5, "resolution": "720p", "aspect_ratio": "adaptive", "audio": True}}
quote = requests.post(f"{API}/generations/quote", headers=H, json=body).json()
print("price", quote["quoted_usd"])
key = str(uuid.uuid4()) # made once: resend with the same key after a timeout, a 429 or a 5xx
job = requests.post(f"{API}/generations", headers={**H, "Idempotency-Key": key},
json={**body, "max_cost_usd": quote["reserved_usd"]}).json()
# 3. Wait, then download.
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=H).json()
if job["status"] == "succeeded":
open("product.mp4", "wb").write(requests.get(f"{API}/generations/{job['id']}/content", headers=H).content)이미지 투 비디오 비용
텍스트 투 비디오와 같은 초당 요금입니다: 480p $0.09 · 720p $0.21 · 1080p $0.52, 오디오 포함. 첫 프레임을 쓰면 표시 요금보다 조금 더 들 수 있으므로, 견적 엔드포인트(무료)로 각 요청의 정확한 가격을 확인하고 그 reserved_usd를 max_cost_usd로 전달하세요. 실패한 생성은 과금되지 않습니다. 가격 계산기.
이미지 투 비디오에 잘 맞는 프롬프트
- 무엇이 바뀌는지 쓰세요. '그녀가 돌아서서 화면 밖으로 걸어 나간다'가 사진에 이미 있는 여성을 묘사하는 것보다 낫습니다.
- 카메라 움직임은 하나. 느린 푸시인, 오빗, 왼쪽 팬, 또는 고정. 짧은 클립에서 두 움직임을 동시에 쓰면 서로 충돌하기 쉽습니다.
- 빛을 유지하세요. 이미지에 있는 빛('따뜻한 창가 빛')을 언급하면 클립이 다른 분위기로 흘러가지 않습니다.
- 사운드를 추가하세요. Seedance 2.5는 영상과 함께 사운드를 만듭니다: '자갈 위 발소리, 멀리서 들리는 기차'.
- 깨끗하고 선명한 이미지를 쓰세요. 모양은 출력과 비슷하게. 이미지 속 글자와 로고는 움직이면서 일그러질 수 있으니 편집기에서 넣으세요.
더 많은 예시는 Seedance 2.5 프롬프트 가이드에 있습니다.
같은 키로 쓰는 다른 이미지 투 비디오 모델
| 모델 | 길이 | 해상도 | 첫 프레임과 마지막 프레임 | 720p 초당 가격(오디오 포함) |
|---|---|---|---|---|
| Seedance 2.5 | 4–30 s | 480p, 720p, 1080p | 예 | $0.21 |
| Seedance 2.0 | 4–15 s | 480p, 720p, 1080p, 4K | 예 | $0.15 |
| Kling 4.0 | 3–30 s | 720p, 1080p | 예 | $0.18 |
| Kling 3.0 | 3–15 s | 720p, 1080p, 4K | 예 | $0.13 |
| Veo 3.1 | 4, 6, 8 s | 720p, 1080p, 4K | 예 | $0.40 |
| Wan 3.0 | 2–30 s | 480p, 720p, 1080p | 예 | $0.07 |
| MiniMax H3 | 4–15 s | 768p, 2K | 예 | $0.03 (768p) |
FAQ
Seedance 2.5는 이미지 투 비디오를 지원하나요?
네. 첫 프레임은 image_url을, 첫·마지막 프레임은 image_url과 end_image_url을 텍스트 투 비디오와 같은 POST /v1/generations 요청에 보냅니다. 클립은 오디오 포함 4~30초입니다.
Seedance 2.5 이미지 투 비디오는 얼마인가요?
Revana에서 오디오 포함 초당 480p $0.09 · 720p $0.21 · 1080p $0.52입니다. 첫 프레임을 쓰면 조금 더 들 수 있으며, 무료 견적 엔드포인트가 정확한 가격을 알려 줍니다.
어떤 이미지 형식과 크기를 지원하나요?
JPEG, PNG, WebP 이미지의 공개 https 링크 또는 POST /v1/uploads로 업로드한 파일(이미지 최대 30 MB)입니다.
동영상이 내 이미지의 화면비를 유지하나요?
네. aspect_ratio를 adaptive로 설정하면 클립이 첫 프레임의 모양을 따릅니다.
매끄러운 루프를 만들 수 있나요?
네. 같은 이미지를 image_url과 end_image_url로 보내고, 처음으로 돌아오는 움직임을 묘사하세요.