소개
Vidu Q3 이미지→영상은 시작 프레임 한 장과 글로 쓴 지시를 540p, 720p, 1080p 중 하나의 116초(정수 초) 클립으로 만듭니다. 두 입력은 모두 필수입니다. 4:1 범위여야 합니다. 오디오는 같은 생성 과정에서 만들어지고 기본값은 켜짐입니다.image_url은 인물, 의상, 세트와 출력 형태를 정하고, prompt는 그 프레임 이후에 일어나는 일, 즉 동작과 카메라 움직임과 소리를 맡습니다. 화면비 필드가 없으므로 클립은 보낸 이미지의 비율 그대로 돌아오며, 이미지 비율은 1:4
핵심 기능 및 하이라이트
프레임을 그대로 따릅니다
모델은 정지 이미지에 담긴 얼굴, 의상, 세트, 구도에서 그대로 출발합니다. 그래서 이미 승인된 이미지와 일치해야 하는 클립이라면 무검열 원본 프레임까지 포함해 믿고 쓸 수 있는 선택입니다. 반대로 프레임에 보이지 않는 부분은 모델이 새로 만들어야 합니다. 의상의 뒷모습이 드러나는 회전이나 정지 이미지 밖의 공간으로 들어가는 카메라 이동에서 어긋남이 생깁니다.
움직임의 크기는 별도 컨트롤입니다
movement_amplitude는 auto, small, medium, large 네 단계입니다. auto에서는 모델이 시작 프레임을 읽고 판단합니다. 정적인 장면을 더 움직이고 싶으면 올리고, 지시에서 움직임을 배제했다면 낮게 두십시오. 공개된 블라인드 예시에서는 빛 말고는 아무것도 움직이지 않는데, 높은 값을 주면 바로 그 지시가 배제한 움직임이 생겨납니다. 그러면 프롬프트는 무게 중심 이동, 반쯤 도는 동작, 프레임 밖으로 걸어 나가는 동작처럼 구체적인 한 박자에 쓸 수 있습니다.
소리도 같은 과정에서
generate_audio의 기본값은 true이므로 룸톤, 폴리, 앰비언스가 화면과 함께 렌더링되어 싱크가 맞은 상태로 도착합니다. 빛을 묘사하듯 바다의 굉음과 바람, 흔들리는 커튼 같은 소리도 프롬프트에 적으십시오. 직접 만든 믹스 아래에 깔 클립이라면 false로 설정합니다. 별도의 bgm 스위치(기본으로 켜짐)가 배경 음악을 넣습니다. 음악이 필요 없으면 끄십시오.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
image_url | 예 | 첫 프레임입니다. 피사체와 구도를 고정하고 출력 형태도 정합니다. |
prompt | 예 | 필수입니다. 프레임 다음에 달라지는 것, 즉 동작과 카메라, 소리를 적으세요. 1자 이상 |
duration_seconds | 아니요 | 정수 초로 1에서 16까지입니다. |
resolution | 아니요 | 540p, 720p, 1080p 중에서 고릅니다. |
movement_amplitude | 아니요 | auto, small, medium, large 중에서 고릅니다. auto는 시작 프레임을 보고 판단하므로, 정적인 장면을 더 움직이게 하려면 한 단계 올리세요. |
generate_audio | 아니요 | 기본으로 켜져 있습니다. 무음 클립을 원하면 false로 두세요. 기본값: |
bgm | 아니요 | 클립에 배경 음악을 넣습니다. 기본으로 켜져 있습니다. 기본값: |
seed | 아니요 | 두 실행을 통제된 조건에서 비교할 때 씁니다. |
요금
| 사양 | 요금 |
|---|---|
| $0.07 / 초 |
| $0.15 / 초 |
| $0.16 / 초 |
활용 사례
어긋나면 안 되는 승인된 정지 이미지
승인을 마친 캠페인 사진, 캐릭터 시트, 스토리보드 컷이 기준점으로 남습니다. 클립이 거기서 시작하므로 얼굴, 의상, 세트가 그대로 이어지고, 검수할 질문은 ‘움직임이 성립하는가’ 하나로 좁혀집니다. 크게 보여 줄 요소는 프롬프트에 맡기지 말고 정지 이미지 안에 넣어 두십시오.
한 장면을 세로와 가로로
출력은 프레임의 형태를 따르므로 같은 장면을 9:16과 16:9로 자르면 다른 필드를 바꾸지 않고도 스토리용 컷과 피드용 컷을 얻습니다. 자르는 작업은 업로드 전에 이미지 단계에서 하십시오.
빛과 분위기만 움직이는 샷
인물은 그대로 두고 다른 무언가만 바뀌어야 하는 샷이 있습니다. 8초, 1080p 예시는 두 사람을 제자리에 두고, 해가 질 때 블라인드의 선명한 줄무늬가 두 사람의 어깨 위를 지나갑니다. 빛 말고는 아무것도 움직이지 않는다고 쓴 프롬프트, 절제된 movement_amplitude, 꺼 둔 generate_audio가 함께 이 결과를 만듭니다.
짧은 컷부터 한 장면까지 같은 엔드포인트로
duration_seconds는 1~16초이므로 1초짜리 리액션 컷과 시작과 끝이 있는 16초 장면을 같은 필드로 만듭니다. 가격을 좌우하는 값은 길이와 해상도 두 가지이며, 어느 쪽을 바꾸든 예상 금액이 바로 갱신됩니다.
프롬프트 가이드 및 실전 팁
시작 프레임을 준비합니다
클립은 이미지의 형태를 물려받으므로 먼저 납품할 형태로 자르고 비율은 1:4~4:1 안에 두십시오. 인물, 의상, 세트처럼 반드시 보여야 하는 것은 모두 이미지에 넣습니다. 모델은 프레임에 보이는 것에서 출발하고 나머지는 새로 만들어야 합니다.
움직임을 일어나는 순서대로 씁니다
프레임 이후의 일을 동작, 카메라, 빛, 소리 순서로 쓰되 정지 이미지를 다시 묘사하지 마십시오. 하이키 조명의 아침 침실 예시는 5초 안에 세 동작을 잇습니다. 기지개를 켜고, 흰 침대 위로 천천히 뒤로 쓰러진 뒤, 고개를 돌려 카메라를 보며 미소 짓습니다. 마무리는 빛과 카메라로, 햇빛 속 얇은 커튼, 빛줄기에 떠도는 먼지, 느린 핸드헬드 흔들림입니다. 이 동작들은 프레임에 하나도 없고 모두 프롬프트에 있습니다.
공개된 예시를 응용합니다
공개된 절벽 예시는 바다 위 흰 드레스를 입은 여성의 정지 이미지에서 generate_audio를 기본값으로 두고 5초, 720p로 만든 것입니다. ‘하나의 힘, 여러 소재, 하나의 카메라 움직임’이라는 구조를 유지하면서 인물과 배경을 원하는 것으로 바꾸십시오.
The wind gusts and the long grass runs in waves across the clifftop; her white dress and hair stream sideways and snap. She turns from the sea into the wind toward the camera, catching the hair off her face with one hand and laughing, then spreads both arms and leans into the gust. Gulls cross far below. Slow steadicam arc around her, bright overcast daylight, cool green and pale blue, sea roar and wind.
주인공은 바람입니다. 긴 풀이 물결치고, 드레스와 머리카락이 옆으로 휘날리며 펄럭이고, 그녀가 돌풍에 몸을 기대는 동안 스테디캠이 그녀 주위를 호를 그리며 돕니다. 하나의 연속된 힘이 세 가지 소재에 동시에 작용하므로, 인물이 그냥 돌아서는 장면보다 정지 이미지를 움직이는 능력을 더 엄격하게 시험합니다.
540p로 다듬고 1080p로 납품합니다
움직임이 제대로 읽힐 때까지 540p로 반복한 뒤 같은 프레임, 프롬프트, seed로 1080p를 다시 생성하십시오. 그러면 바뀐 값은 해상도 하나뿐입니다. 고정한 seed는 두 번의 생성을 비교하기 쉽게 해 줄 뿐 프레임 단위로 같은 결과를 보장하지 않습니다. 어긋남이 생기면 먼저 옷의 뒷면이나 방의 가장자리처럼 정지 이미지에 없던 부분을 확인하고, 그 장면은 프롬프트를 늘리는 대신 새 시작 프레임에 담으십시오.
API 빠른 시작
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "vidu/q3/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"movement_amplitude": "auto",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
인증, 전체 스키마, 폴링과 오류 처리는 API 레퍼런스에서 확인하세요.













