HiAPI
블로그

사용 가이드

Vidu Q4 Preview 이미지 투 비디오: 제품 정지 이미지를 4K 숏폼 비디오 클립으로 변환

Oct 19, 2026
Vidu Q4 Preview 이미지 투 비디오: 제품 정지 이미지를 4K 숏폼 비디오 클립으로 변환

정지 이미지는 이미 가지고 있습니다—제품 이미지 한 장, 주력 제품 장면 한 프레임, 인물 사진 한 장. 숏폼 비디오에서 해야 할 일은 그것을 움직이게 만드는 것입니다: 약간의 카메라 움직임과 오디오 트랙이 있는 4–6초 세로 비트를 만들어 후크 / 본문 / CTA 시퀀스로 합치는 것이죠. hiapi API의 vidu-q4-preview/image-to-video는 바로 이를 위해 만들어졌습니다. 첫 프레임 한 장을 입력하면 3–16초, 최대 4K, 네이티브 오디오 트랙이 포함된 클립을 돌려받습니다.

이것은 프롬프트 갤러리가 아니라 엔드투엔드 프로덕션 파이프라인입니다: 첫 프레임 준비, 세 개의 비동기 클립 일괄 생성, 4K 비트 정밀 다듬기, 웹용 H.264 내보내기. 아래의 각 클립, 각 숫자, 각 스키마 세부 사항은 2026-10-19의 실제 실행에서 나온 것입니다—세 개의 클립이 생성되어 인라인으로 삽입되어 있으니 직접 시청할 수 있습니다.

복사해서 붙여넣을 수 있는 샷 프롬프트만 원한다면 Vidu Q4 Preview 이미지 투 비디오 프롬프트 레시피를 읽어 보세요. 소재가 브랜드 키트(여러 장의 참조 이미지와 음성 샘플)라면 그것은 참조 투 비디오입니다—다른 작업이며 다른 엔드포인트를 사용합니다. 이 페이지는 단일 정지 이미지의 경우를 다룹니다.

이미지 투 비디오 엔드포인트가 실제로 받는 것

다음은 이번 실행에서 실시간으로 다시 탐지한 입력 규약입니다(유효하지 않은 값만 사용했으므로 탐지에 비용은 한 푼도 들지 않았습니다):

필드 필수 값
model 예 vidu-q4-preview/image-to-video
prompt 예 움직임 설명
image_url 예 단일 첫 프레임 이미지 URL 한 장
resolution 아니오 540p · 720p · 1080p · 2k · 4k
duration 아니오 정수 초, 3–16

파이프라인 구축 방식을 결정하는 네 가지 동작이 있으며, 이 네 가지 모두 쉽게 틀릴 수 있습니다:

  1. aspect_ratio 필드가 없습니다. 전달하면 즉시 거부됩니다(invalid input: <root>: additional properties 'aspect_ratio' not allowed). 클립은 첫 프레임의 방향을 상속합니다—9:16 정지 이미지는 9:16 클립을 만듭니다. 방향은 호출 시점이 아니라 정지 이미지를 만들 때 결정됩니다, 따라서 숏폼 비디오를 만들 때는 처음부터 세로 방향을 확정해야 합니다.
  2. resolution은 긴 변이 아니라 짧은 변을 설정합니다. 세로 화면에서 1080p는 1080×1918을, 720p는 720×1278을 반환합니다. 세로 정지 이미지에 4k를 쓰면 너비 2160의 거대한 결과물이 됩니다(여기서는 2160×3836)—예산과 인코딩을 그에 맞게 계획하세요.
  3. 모든 클립에 오디오 트랙이 포함됩니다. 오디오 참조가 없어도 그렇습니다. 세 출력 모두 48 kHz 스테레오 AAC 오디오 트랙을 가지며, 이는 프롬프트의 사운드 어휘로 구동됩니다. 유지할지 후반에 음소거할지 미리 계획하세요; 결코 빠지지 않습니다.
  4. image_url은 단수입니다. reference_image_urls를 전달하면 거부됩니다(additional properties 'reference_image_urls' not allowed)—그 배열은 참조 투 비디오에 속합니다. 정지 이미지 하나가 들어가고, 클립 하나가 나옵니다.

마지막 요점이 진정한 갈림길입니다: 여러 제품 각도를 함께 고정해야 한다면 참조 투 비디오가 필요합니다. 좋은 장면 한 장이 있다면 이미지 투 비디오가 더 간단하고 저렴합니다.

파이프라인 개요

숏폼 비디오 시퀀스는 결국 N개의 독립적인 단일 프레임 애니메이션이므로, 전체 작업을 깔끔하게 병렬화할 수 있습니다:

  1. 각 비트마다 첫 프레임 한 장 준비—숏폼 비디오에는 세로(9:16)를 사용하세요, 방향이 이미지에 고정되기 때문입니다.
  2. 각 비트를 독립적인 비동기 작업으로 제출—각각 POST /v1/tasks 한 번씩; 첫 번째가 완료되기 전에 나머지를 막지 마세요.
  3. 각 taskId를 success까지 폴링하고 mp4 다운로드(출력 URL에서).
  4. 4K 비트 정밀 다듬기, HEVC→H.264 재인코딩, 이어 붙이거나 분리 유지, 내보내기.

1단계—첫 프레임 준비

방향과 짧은 변 모두 정지 이미지에서 나오므로, 장면 선택이 클립을 결정합니다. 이번 실행에서는 gpt-image-2/text-to-image로 두 장의 9:16 정지 이미지를 생성했습니다: 스튜디오 제품 이미지 한 장과 라이프스타일 인물 사진 한 장. 다음은 후크를 시작하는 데 사용한 제품 이미지입니다:

다음은 같은 장면을 4K로 애니메이션화한 것입니다—천천히 다가가며 빛줄기가 유리를 훑고 지나갑니다:

이를 생성한 프롬프트(이 글을 위해 작성하고 실행함):

Animate the first frame into a cinematic short-form hook: a slow push-in toward
the amber serum bottle while a soft beam of light sweeps across the glass from
left to right, catching the condensation droplets so they glint. The out-of-focus
eucalyptus leaves behind drift a few millimetres. Unhurried, premium motion.
Subtle ambient whoosh and a soft chime as the light reaches the bottle.

프롬프트는 움직임과 소리만 묘사한다는 점에 주목하세요—물체가 무엇인지 다시 설명하지 않습니다. 정지 이미지가 이미 주체를 고정하고 있으므로, 이미지 투 비디오는 그것이 어떻게 움직이고 어떻게 들릴지만 알려주면 됩니다.

2단계—한 비트 제출, 폴링, 다운로드

호출은 단일 비동기 작업입니다. 제출:

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vidu-q4-preview/image-to-video",
    "input": {
      "prompt": "Animate the first frame into a cinematic short-form hook ...",
      "image_url": "https://your-storage.example.com/still-product.jpg",
      "resolution": "4k",
      "duration": 4
    }
  }'
# -> {"data": {"taskId": "tk-hiapi-01M597ARAKTTJ9YWRPEXPBAYHJ"}}

그런 다음 작업을 최종 상태까지 폴링하고 결과를 다운로드하세요:

curl -s https://api.hiapi.ai/v1/tasks/$TASK_ID \
  -H "Authorization: Bearer $HIAPI_TOKEN"
# in progress -> {"data": {"status": "processing"}}
# done        -> {"data": {"status": "success",
#                          "output": [{"url": "https://.../out.mp4", "expireAt": ...}]}}

실제 응답에서 알아 둘 만한 두 가지:

  • 출력 URL은 임시입니다. expireAt이 붙어 있으므로 바이트를 즉시 디스크나 자체 스토리지에 다운로드하세요—페이지에 핫링크하지 마세요.
  • 유효하지 않은 값은 청구 전 검증 단계에서 실패합니다. "duration": 99를 보내면 invalid input: duration: maximum: got 99, want 16이 반환되고 taskId는 없습니다—바로 위의 3–16 경계가 무료로 확인된 방식입니다. 클라이언트에서 이 400을 잡아 노출하세요; 이는 요청이 거부된 것이지 작업이 렌더링 도중 실패한 것이 아닙니다.

3단계—후크, 본문, CTA 일괄 생성

각 비트가 정지 이미지 한 장 → 작업 하나이므로, 차단형 체인을 실행하는 대신 함께 발사하고 함께 폴링합니다. 이번 실행에서는 세 개를 한꺼번에 보냈고 720p와 1080p 비트는 몇 분 안에, 4K 후크는 그 후 몇 분 뒤에 반환되었습니다—이것이 바로 직렬 호출로 기다리지 않고 비동기로 제출하는 이유입니다.

인물 정지 이미지에서 1080p로 6초간 애니메이션화한 라이프스타일 본문 비트:

Animate the first frame into a lifestyle short-form beat: a gentle parallax orbit
around the woman as she turns her face a few degrees toward the window light and
her soft smile widens slightly. Loose strands of hair sway in a faint breeze; the
blurred plant leaves behind shift gently. Warm, natural, editorial motion with no
jump cuts. Soft airy room tone.

제품 정지 이미지로 돌아가 720p로 4초간 만든 CTA 엔드 카드 비트—작고 저렴하며 마무리 카드로 충분합니다:

Animate the first frame into a clean end-card beat: the serum bottle rotates slowly
and settles to a confident three-quarter angle as the light steadies. Minimal,
product-forward motion that holds on the bottle. A soft sustained ambient tone that
resolves cleanly.

최소한의 일괄 처리 루프는 대략 다음과 같습니다—모든 비트를 제출하고 작업 ID를 수집한 다음 폴링합니다:

import requests, time

BEATS = [
    {"name": "hook", "image_url": PRODUCT_STILL,  "resolution": "4k",    "duration": 4, "prompt": HOOK},
    {"name": "body", "image_url": PORTRAIT_STILL, "resolution": "1080p", "duration": 6, "prompt": BODY},
    {"name": "cta",  "image_url": PRODUCT_STILL,  "resolution": "720p",  "duration": 4, "prompt": CTA},
]
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

# submit all at once -- do not block between beats
tasks = {}
for b in BEATS:
    r = requests.post("https://api.hiapi.ai/v1/tasks",
                      headers=H, json={"model": "vidu-q4-preview/image-to-video",
                      "input": {k: b[k] for k in ("prompt", "image_url", "resolution", "duration")}})
    tasks[b["name"]] = r.json()["data"]["taskId"]

# poll each saved taskId to a terminal state; never resubmit
done = {}
while len(done) < len(tasks):
    for name, tid in tasks.items():
        if name in done:
            continue
        t = requests.get(f"https://api.hiapi.ai/v1/tasks/{tid}", headers=H).json()["data"]
        if t["status"] == "success":
            done[name] = t["output"][0]["url"]
        elif t["status"] == "fail":
            raise RuntimeError(f"{name} failed: {t.get('error')}")
    time.sleep(15)

작업 ID를 보관하세요. 폴링 중 네트워크가 잠깐 끊기면 저장된 ID로 다시 폴링하세요—절대 다시 제출하지 마세요, 그러면 같은 비트에 두 번 비용을 지불하게 됩니다.

4단계—4K 정밀 다듬기, 웹용 H.264로 내보내기

4K 후크는 HEVC(H.265), Main 10, 2160×3836으로 반환됩니다—진정한 세로 4K 마스터입니다. HEVC는 브라우저에서 안정적으로 인라인 재생되지 않으므로 웹 전달을 위해 H.264로 재인코딩하세요:

# 4K HEVC master -> H.264 web export (downscaled to a 1080-wide delivery copy)
ffmpeg -i hook_4k.mp4 -vf "scale=1080:-2" \
  -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \
  -c:a aac -b:a 128k -movflags +faststart hook_web.mp4

1080p와 720p 비트는 이미 H.264로 반환되므로 재인코딩이 필요 없습니다—완전히 다운로드되기 전에 재생을 시작하도록 -movflags +faststart로 다시 패키징만 하면 됩니다. 2160 너비의 HEVC는 아카이브 마스터로 보관하고, 다운스케일된 H.264를 페이지에 전달하세요; 그것이 바로 1단계 상단에서 재생되는 후크 클립입니다.

여기서부터는 세 비트를 세로 단편 하나로 concat하거나, 플랫폼이 후크, 본문, CTA를 각각 업로드하기를 원한다면 별도 자산으로 유지하세요.

3비트 숏폼 비디오의 실제 비용

가격은 초 단위로 책정되며, duration 계수로 청구되고 resolution에 따라 결정됩니다(이번 실행에서 실시간 /api/pricing과 대조하여 확인):

해상도 가격 / 초
540p $0.0515
720p $0.109
1080p $0.1375
2K $0.2175
4K $0.446

위의 정확한 3비트 숏폼 비디오의 경우:

비트 해상도 길이 비용
후크 4K 4s $1.784
본문 1080p 6s $0.825
CTA 720p 4s $0.436
비디오 합계 14s $3.045

두 장의 gpt-image-2 첫 프레임 각각 $0.03을 더하면 완성된 숏폼 비디오 생성 비용은 약 $3.11입니다. 4K 후크만으로 청구서의 59%를 차지합니다. 후크를 1080p로 낮추면 세 비트 합계가 약 $1.81이 됩니다; 4K 프리미엄은 가치 있는 비트—영웅적 공개—를 위해 내리는 선택이며, 720p CTA 엔드 카드는 엄지로 스크롤을 멈추는 속도에서는 구분할 수 없습니다. 각 모델의 전체 계층은 hiapi 가격 페이지에서 확인하세요.

자주 묻는 질문

요청에서 9:16을 강제할 수 있나요? 할 수 없습니다—aspect_ratio 필드가 없으며 전달하면 거부됩니다. 방향은 첫 프레임에서 상속되므로 호출 전에 세로 정지 이미지를 만들거나 잘라 두세요.

내 클립에 요청하지 않은 소리가 나는 이유는 무엇인가요? Vidu Q4 Preview는 각 클립에 네이티브 오디오 트랙을 출력하며, 이는 프롬프트의 사운드 어휘로 유도됩니다. 음소거를 원한다면 후반 작업에서 해당 트랙을 음소거하세요.

내 4K 클립이 인라인 재생되지 않습니다—파일이 손상되었나요? 아닙니다; 4K는 HEVC/H.265로 반환되며 일부 브라우저는 이를 인라인으로 렌더링하지 않습니다. 4단계에 표시된 대로 H.264로 재인코딩하세요.

한 번의 호출로 여러 제품 각도를 전달할 수 있나요? 이 엔드포인트에서는 불가능합니다—image_url은 단일 프레임이며, reference_image_urls는 여기서 거부됩니다. 여러 참조(및 음성)는 참조 투 비디오 엔드포인트입니다.

한 비트는 얼마나 길 수 있나요? 각 클립은 최대 16초입니다(스키마가 duration 상한을 16으로 설정). 더 긴 작품의 경우 여러 비트를 생성하여 이어 붙이세요.

카메라 움직임을 어떻게 제어하나요? 프롬프트에서 묘사하세요—다가가기, 시차 궤도, 정지—위의 세 프롬프트처럼요. 더 깊은 카메라 언어 카탈로그는 AI 비디오 시네마틱 카메라 무브먼트에 관한 저희 노트를 참고하세요.

정지 이미지를 움직이게 시작하세요

강력한 장면 한 장이 있다면, 숏폼 비디오 클립 하나가 있는 것입니다. image_url을 그것을 가리키게 하고, 비트 역할에 맞는 해상도를 선택한 뒤, 일괄 처리를 실행하세요. 전체 입력 스키마와 실시간 예시는 Vidu Q4 Preview 이미지 투 비디오 모델 페이지에서 확인하거나, hiapi 빠른 시작으로 제출 및 폴링 루프를 자신의 기술 스택에 연결하세요.

영구 AI 아티팩트로 빌드 시작하기

API 키를 받아 태스크 기반의 하나의 API로 이미지, 비디오, 오디오 모델을 호출하세요.

API 문서 보기