API 호출을 구현하면서 중요했던 것은 영상 생성의 성공 여부뿐만 아니라 예산 판정, 접수 영수증(控え), 완료 대기를 각각 별도로 저장하는 것이었습니다. 이 글에서는 Higgsfield를 통해 Seedance 2.5를 세 번 실행한 기록을 사용하며, 재전송 시 중복 생성을 하지 않도록 설계 과정을 정리합니다.
Seedance 비용은 견적 공식에서 계산한다
Higgsfield API에는 생성하기 전에 비용을 알려주는 견적(見積もり) 기능이 있습니다. Kling 3.0 Pro의 경우 금액($5초에 $0.84)이 그대로 반환되었지만, Seedance 2.5에서는 금액 대신 요금의 계산식 설명이 반환되었습니다. 그래서 이 설명문의 공식을 사용하여 전송하기 전에 금액을 계산하고 있습니다.
import math
SIZE = {'480p': (854, 480), '720p': (1280, 720)}
def usd(res, seconds=5):
...
설명문의 공식을 계산하는 코드입니다. 1,000 토큰당 $0.0214(480p・720p)입니다.
계산된 금액을 기록하고, 합계가 상한선인 $8를 초과하는 생성은 스크립트가 전송 전에 중지하도록 만들었습니다. 실제로 반환된 영상은 720p의 경우 1280×720, 480p의 경우 854×480으로, 계산에 사용한 크기와 동일했습니다.
전송부터 완료까지 기다리는 방법과 실제 대기 시간
전송하면 즉시 request_id와 status_url이 반환되며 상태는 queued였습니다. 영상이 생성될 때까지 status_url을 약 20초마다 확인하고, 상태가 in_progress에서 completed로 바뀌면 영상의 URL로부터 가져옵니다.
status = call(receipt['status_url'])
if status['status'] == 'completed':
download(status['video']['url'])
상태 확인. completed가 되면 video.url에서 가져옵니다.
480p 핸드드리프:
약 4분 24초
720p 핸드드리프:
약 7분 53초
720p 고지대의 들판:
약 14분
실패
세 가지 모두 첫 번째 시도에 완료되었습니다.
대기 시간은 전송부터 가져온 확인까지의 시간이며, 확인 간격만큼(약 20초) 오차가 있습니다. 같은 720p의 5초라도 약 8분과 약 14분으로 차이가 있으며, 혼잡도에 따라 변한다고 생각됩니다. 대기 처리에는 상한선을 두어 시간 내에 완료되지 않아도 동일한 생성을 재전송하지 않도록 했습니다.
재시도를 하지 않기 위한 기록 남기는 방법
영상 생성은 1회당 비용이 발생하기 때문에, 통신이 도중에 끊겼을 때 자동으로 재전송하면 같은 영상에 두 번 지불할 수 있습니다. 이번에는 다음과 같이 기록을 남겨서 결과가 불분명한 생성은 재전송하지 않도록 했습니다.
- 전송 전에 모델・본문・계산된 금액을 적은 기록을 만듭니다.
- 보낼 때 고유 키(Idempotency-Key)를 붙입니다.
- 반환된
request_id와 status_url을 즉시 저장합니다.
- 기록이 있고 접수 영수증이 없는 생성은 재전송하지 않고 상태를 확인합니다.
Seedance의 480p와 720p 차이점
핸드드리프 이미지는 480p와 720p로 제작했습니다. 움직임의 느낌은 거의 같지만, 480p는 수증기나 도자기의 세밀한 부분이 부드럽습니다. 비용은 480p가 720p의 절반 이하이고, 대기 시간도 짧았습니다.
움직임의 방향이나 카메라 워크를 확인할 단계에서는 480p로 만들고, 사용할 컷이 결정된 후에 720p로 다시 제작하면 비용을 절감할 수 있습니다. 다만 같은 지시라도 재제작할 때마다 움직임은 달라지므로, 480p에서 정한 움직임이 그대로 재현된다는 보장은 없습니다.
480p:
1280×720・약 $2.31 (원문 오류로 추정되는 크기/가격 표기 유지)
720p:
1280×720・약 $2.31
구현 전 체크리스트
- 모델명・이용 경로・설정・확인일을 기록합니다.
- 소수의 시제품으로 결과를 확인하고, 비용과 재시도 상한을 정합니다.
- 생성물의 권리, 화면의 문자, 음성을 공개 전에 사람이 확인합니다.
본고의 수치는 제작 당시 관측치이며, 성능 비교나 대기 시간 보장을 의미하지 않습니다.
비교용 출력 및 소재
Seedance APIで動画を作る|生成・待機・費用の記録
자세한 조건과 제작 기록: Seedance API로 영상 만들기 | 생성・대기・비용 기록
Discussion