# MiniMax H3 참조 영상 사용법: 카메라 무빙만 빌리는 프롬프트·규격·비용

> MiniMax H3 레퍼런스 영상은 역할 하나와 가져오지 말 것을 프롬프트에 적어야 카메라·동작만 넘어옵니다. 영상은 3개·합계 15초 이하, 첫 프레임과 혼용 불가, 참조 길이도 과금됩니다.

- URL: https://blog.laozhang.ai/ko/posts/minimax-h3-reference-video
- Published: 2026-11-03
- Updated: 2026-11-03
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ko/about)
- Topic: AI 동영상 생성
- Tags: MiniMax H3, 참조 영상, 레퍼런스 투 비디오, Ref2VA, ComfyUI, AI 비디오 생성

---
MiniMax H3에 넣은 참조 영상이 결과를 통째로 베끼거나 아예 무시되는 것처럼 보인다면, 먼저 프롬프트에서 그 영상에 맡긴 역할을 확인하세요. 요청의 `content` 배열에 텍스트 1개와 `reference_video` 역할의 영상을 넣고, 프롬프트에는 "reference video 1은 카메라 무빙에만 쓴다"처럼 역할을 하나만 적은 다음 인물·의상·동물·장소처럼 가져오지 말 것을 이름으로 나열합니다. 2026년 11월 2일(UTC) 6.06초짜리 공개 데모 클립(분홍 정장 남자가 검은 새끼 양을 안고 있는 장면)으로 이렇게 요청했을 때, 4초 768P 결과에는 천천히 다가가는 카메라만 남고 인물·양·초원은 나오지 않았습니다. 샘플은 1개였고 과금은 $0.55였습니다.

요청을 보내기 전에는 소재부터 확인합니다. 참조 영상은 3개 이하, 클립당 2~15초, 합계 15초 이하여야 하고 `first_frame`·`last_frame`과 함께 쓸 수 없습니다. 이 규격을 벗어나면 경로에 따라 제출 즉시 HTTP 400으로 거부되기도 하지만, 일단 접수된 뒤 "temporary service error … Please retry"로 끝나 서버 장애처럼 보이기도 합니다. 그래서 이런 메시지를 받으면 재시도보다 소재 길이와 개수를 먼저 고쳐야 합니다. 참조 영상의 길이도 출력 해상도의 초당 단가로 과금되므로, 6.06초 클립을 6.00초로 잘라 두는 것만으로 과금 초가 1초 줄어드는 경로가 있습니다.

예외는 영상 자체를 고치거나 이어 붙이려는 경우입니다. 이때 참조 영상은 카메라나 동작을 빌려 주는 재료가 아니라 편집할 원본이므로, 프롬프트에도 원본을 수정하거나 이어 간다고 분명히 적어야 합니다.

## MiniMax H3 참조 영상이란: Reference Generation·Ref2VA는 같은 모드

MiniMax H3의 참조 영상은 첫 프레임처럼 화면을 그대로 이어받는 입력이 아니라, 텍스트로 지정한 관계(움직임, 카메라, 컷 리듬, 소리 등)만 새 영상으로 옮기는 입력입니다. [MiniMax 공식 영상 생성 가이드](https://platform.minimax.io/docs/guides/video-generation)는 이 모드를 Reference Generation이라고 부르고, 프롬프트와 참조 이미지·영상·오디오로 캐릭터, 동작, 카메라, 스타일, 목소리, 편집 리듬을 참조하는 용도라고 설명합니다(2026년 11월 2일 기준). 공개 가중치에서는 Ref2VA, API 예시에서는 r2va, ComfyUI 한국어 문서에서는 "MiniMax H3 참조 → 비디오", Domo 같은 플랫폼에서는 레퍼런스 투 비디오라고 부르지만 모두 같은 기능입니다.

할 수 없는 일도 분명합니다. [Hugging Face의 MiniMax H3 모델 카드](https://huggingface.co/MiniMaxAI/MiniMax-H3)에 따르면 참조 영상은 픽셀 단위로 맞춘 편집이 아니고 denoise strength 같은 강도 조절 값도 없습니다. 참조를 얼마나 강하게 따를지는 숫자가 아니라 프롬프트 문장으로만 조절한다는 뜻입니다.

[MiniMax의 참조 모드 프롬프트 작성 가이드](https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/docs/VIDEO_PROMPT_WRITING_GUIDE_ref_en.md)는 그 문장을 어떻게 나누는지 보여 줍니다. `<Video N>`은 원본 편집, 이어 붙이기, 카메라·컷·리듬 참조처럼 영상 전체와의 관계에만 쓰고, 영상에서 가져와 화면에 보이게 할 인물이나 물체는 따로 `<Subject N>`으로 정의합니다. 보존 정도는 그대로 유지하는 fully_preserved, 일부만 유지하는 partially_preserved, 특징을 다른 대상에게 옮기는 attribute_transfer, 분위기·구도 정도만 남기는 weak_reference로 표시합니다. 이 형식은 MiniMax가 프롬프트를 재작성할 때 쓰는 구조이고 필수 문법은 아니어서, 평범한 영어 문장으로 역할을 적어도 아래 실측처럼 작동합니다.

## 참조 영상에 줄 역할: 카메라·동작·편집 원본·이어 붙이기·소리

참조 영상 하나에는 역할 하나만 주는 것이 기본입니다. 역할을 적지 않으면 모델은 영상에 보이는 인물·장소·조명까지 참조 대상으로 받아들일 수 있고, 반대로 "느낌만 참고"처럼 역할이 드러나지 않는 문장에서는 참조가 약해지거나 무시될 수 있습니다. [Domo의 레퍼런스 투 비디오 가이드](https://www.domoai.app/blog/minimax-h3-reference-to-video)도 참조가 약해지는 원인으로 역할이 암묵적인 경우를 들고, 대상·속성·구간·관계를 정확히 적으라고 권합니다. 공식 가이드는 카메라 무빙·컷·리듬만 주는 영상을 reference generation으로 분류하고, 영상 자체를 수정하거나 이어 갈 때만 video editing·video continuation으로 봅니다.

| 원하는 것 | 작업 유형(공식 가이드) | 프롬프트 문장 예 | 넘어오는 것과 주의점 |
| --- | --- | --- | --- |
| 카메라 무빙, 컷 리듬 | reference generation | Use reference video 1 only for its camera movement. Do not copy the person, clothing or location. | 카메라 경로와 속도. 조명·색감이 함께 넘어올 수 있으므로 참조의 색감을 유지하라는 지시와 다른 조명을 한 요청에 섞지 않음 |
| 동작(걷기, 춤) | reference generation | Transfer the walking motion from reference video 1 to the woman in reference image 1. | 동작. 한 가지 동작만 담긴 깨끗한 클립일수록 잘 넘어옴 |
| 원본 영상 편집 | video editing | Edit reference video 1: replace the sky with a stormy sunset and keep everything else. | 원본 화면 대부분. 픽셀 정렬 편집은 아님 |
| 이어 붙이기 | video continuation | Continue reference video 1 from its last moment. | 원본 마지막 장면 이후의 흐름 |
| 소리 | audio reuse, audio reference | Keep the original audio of reference video 1. 또는 Voice timbre follows reference audio 1. | 참조 영상에 소리가 들어 있다는 이유만으로 오디오 참조가 되지는 않음. 쓰려면 명시 |

표의 조명 사례는 [Atlas Cloud의 H3 레퍼런스 투 비디오 정리](https://www.atlascloud.ai/blog/tips/minimax-h3-reference-to-video)(2026년 8월 12일 자사 경로 테스트)에서 나온 것입니다. 참조 영상의 조명과 색보정이 프롬프트의 "bright empty covered market, cold clean daylight"를 덮어썼는데, 같은 프롬프트에 "carry the grade and grain of the reference clip"이라는 지시도 함께 들어 있어 요청 자체가 서로 어긋나 있었습니다. Atlas의 결론은 한 번의 호출로 참조의 색감과 그와 반대되는 조명을 동시에 요구할 수 없으니, 색감 유지 지시를 지우거나 영상 참조를 빼라는 것입니다. 소리에 관한 줄은 공식 프롬프트 가이드의 "일반 참조 영상은 파일에 소리가 있다는 이유만으로 오디오 참조를 만들지 않는다"는 설명을 따릅니다. 목소리 톤을 따로 주고 싶다면 `reference_audio`를 추가하는 편이 명확하고, 공식 API에서 참조 오디오는 무료입니다.

## 참조 영상 요청 작성 순서: content 배열과 프롬프트

요청은 텍스트 1개와 참조 영상 항목으로 된 `content` 배열 하나입니다. 공식 엔드포인트 `POST https://api.minimax.io/v2/video_generation`에 모델 `MiniMax-H3`, 해상도(`768P` 또는 `2K`), 길이(4~15초 정수), 비율을 함께 보내고, 돌려받은 `task_id`로 결과를 조회합니다. 순서는 다음과 같습니다.

1. 위 표에서 참조 영상에 맡길 역할을 하나 고릅니다. 카메라와 동작을 둘 다 원하면 가능한 한 클립을 나눠 각각 역할을 줍니다.
2. 소재를 아래 "제출 전 점검" 스크립트로 확인합니다. 개수, 길이, 합계, 코덱, 프레임레이트를 한 번에 봅니다.
3. `content`에 비어 있지 않은 `text` 1개와 `role: "reference_video"`인 `video_url`을 넣고, `first_frame`·`last_frame` 항목은 빼 둡니다. 큰 파일은 공개 URL이나 `mm_file://{file_id}`로 보냅니다. Base64(`data:video/mp4;base64,…`)는 공식 문서상 허용되지만 크기가 약 33% 늘고 요청 본문은 64MB가 상한입니다.
4. 프롬프트를 세 부분으로 씁니다. 역할("reference video 1은 카메라 무빙에만"), 가져오지 말 것(인물, 의상, 동물, 장소), 새 장면 전체 묘사입니다. 참조와 다른 조명을 원하면 참조의 색감을 유지하라는 문장은 넣지 않습니다.
5. `ratio`를 생략하면 `adaptive`로 참조 소재에 맞춰지고, 결과 비율을 고정하려면 `16:9`, `9:16` 등을 지정합니다. `MiniMax-H3-Lite`는 아직 `adaptive`를 지원하지 않습니다.
6. 10초 간격으로 `GET /v2/query/video_generation/{task_id}`를 조회하고, 상태가 `succeeded`가 되면 `task.content.url`에서 MP4를 받습니다.

아래는 2026년 11월 2일 실측에 쓴 요청 본문을 공식 엔드포인트 형식으로 옮긴 예입니다. 참조 영상 URL만 자기 소재로 바꾸면 됩니다.

```bash
export MINIMAX_API_KEY="공식 API 키"

curl -s -X POST "https://api.minimax.io/v2/video_generation" \
  -H "Authorization: Bearer $MINIMAX_API_KEY" \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "MiniMax-H3",
    "content": [
      {
        "type": "text",
        "text": "Use reference video 1 only for its camera movement: a slow handheld push-in that drifts slightly around the subject. Do not copy the person, clothing, animals or field from reference video 1. New scene: an elderly fisherman in a yellow raincoat mends a net on a wooden pier at dawn, light rain, sea in the background."
      },
      {
        "type": "video_url",
        "role": "reference_video",
        "video_url": { "url": "https://example.com/push-in-6s.mp4" }
      }
    ],
    "resolution": "768P",
    "duration": 4,
    "ratio": "16:9"
  }'
# 응답 예: {"task_id": "..."}

curl -s "https://api.minimax.io/v2/query/video_generation/$TASK_ID" \
  -H "Authorization: Bearer $MINIMAX_API_KEY"
# 완료되면 task.status = "succeeded", 영상 주소는 task.content.url
```

프롬프트에서 참조 영상을 부르는 이름은 쓰는 곳마다 다릅니다. 공식 API 예시는 "reference video 1", "reference images 1 and 2"처럼 종류별 번호를 자연어로 쓰고, MiniMax 출시 블로그의 예시는 "Video 1 / Image 2 / Audio 3"처럼 전체 순서로 번호를 매겨 혼동하기 쉽습니다. API 문서 기준으로는 종류별로 1부터 세면 됩니다.

| 사용하는 곳 | 참조 영상을 부르는 법 |
| --- | --- |
| MiniMax 공식 API 예시 | reference video 1 (자연어, 종류별 번호) |
| ComfyUI 로컬 노드(공개 가중치) | `<Video 1>` |
| fal, RunDiffusion, ComfyUI API 노드 | `Video 1` |
| Hailuo 웹 앱 | `@Video1` |

### 참조 영상이 통째로 복제되거나 무시될 때 고칠 문장

증상별로 고칠 곳이 다릅니다. 아래 처방은 [RunDiffusion의 MiniMax H3 프롬프트 가이드](https://learn.rundiffusion.com/minimax-h3-prompt-guide/)와 [Domo의 레퍼런스 투 비디오 가이드](https://www.domoai.app/blog/minimax-h3-reference-to-video)가 권하는 방식이고, 통제된 비교 실험 결과는 아닙니다. 조명 행만은 앞의 Atlas Cloud 사례에서 나온 처방입니다. 첫 줄의 "역할만 쓰고 금지 목록을 붙이는" 방식은 11월 2일 실측에서 1회 그대로 통했습니다.

| 증상 | 고칠 문장 |
| --- | --- |
| 참조 영상의 인물·장소가 그대로 나옴 | Video 1은 움직임과 카메라에만 쓴다고 쓰고, 출연자·의상·장소를 하나씩 이름으로 금지 |
| 동작이 넘어오지 않음 | 한 가지 동작만 담긴 깨끗한 클립으로 바꾸고 "Transfer the [동작] from Video 1 to [Image 1의 인물]"처럼 대상까지 지정 |
| 조명·색감이 프롬프트와 다름 | 참조의 색감을 유지하라는 지시를 지우거나, 그래도 안 되면 영상 참조를 빼고 요청(Atlas Cloud 사례) |
| 원본 대사나 목소리가 새어 나옴 | 영상은 목소리 톤만 제공한다고 쓰고, 새 대사를 처음부터 끝까지 적음 |
| 여러 참조가 섞여 엉킴 | 참조를 하나씩 추가하면서 어느 단계에서 깨지는지 확인 |

## 2026년 11월 2일 실측: 카메라 무빙만 빌린 4초 영상, 과금 $0.55

위 curl과 같은 본문으로 보낸 요청은 45초째 조회에서 완료됐고, 결과 화면에는 참조 영상의 카메라 움직임만 남았습니다. 요청은 2026년 11월 2일 15:54:50(UTC)에 LaoZhang API의 `/hailuo/v2/video_generation` 엔드포인트로 보냈습니다. [LaoZhang API의 MiniMax H3 문서](https://docs.laozhang.ai/api-capabilities/minimax-h3-video-generation)에 따르면 이 경로는 MiniMax가 공개한 H3 가중치를 자체 배포해 운영하며 MiniMax 공식 API를 거치지 않으므로, 아래 결과와 과금은 이 경로 기준이고 공식 API에서는 같은 요청을 시험하지 않았습니다.

*안내: [laozhang.ai는 이 블로그 운영팀의 자사 서비스입니다](https://blog.laozhang.ai/ko/about#laozhang). 그 가격은 독립적인 비교가 아니라 자사 제시 가격입니다.*

참조 클립은 MiniMax 공식 API 문서의 r2va 예시에 들어 있는 공개 데모 영상입니다. 길이 6.06초, 1920×1080, 24fps, H.264+AAC, 4.4MB이고, 분홍 정장을 입은 남자가 검은 새끼 양을 안고 초원에 서 있으며 핸드헬드 카메라가 천천히 다가가는 장면입니다. 요청은 `MiniMax-H3`, 768P, 4초, 16:9였고 프롬프트는 앞의 curl에 적힌 영어 문장 그대로입니다. 서버 기록상 생성부터 완료까지 26초가 걸렸고, 10초 간격 조회에서는 45초째에 `succeeded`가 나왔습니다.

출력은 1344×768, 24fps, 4.46초, H.264, AAC 스테레오 32kHz, 3.5MB 파일이었습니다. 1초 간격으로 뽑은 프레임에는 노란 비옷을 입은 노인 어부, 나무 부두, 새벽 바다가 보였고 분홍 정장·새끼 양·초원은 한 장면도 나오지 않았습니다. 어부가 화면 왼쪽 3분의 1에서 중앙 쪽으로 옮겨 가며 조금씩 커지는데, 옆으로 흐르며 다가가는 참조 영상의 카메라와 같은 움직임입니다. 프롬프트의 가벼운 비는 화면에서 뚜렷하지 않았습니다. 프롬프트 하나, 참조 하나, 샘플 하나의 결과라서 피사체 분리를 보장한다고 볼 수는 없습니다.

조회 응답의 `usage`는 `total_seconds` 11, `input_seconds` 7, `output_seconds` 4였고, 계정 사용액은 정확히 55센트 늘었습니다. 출력 4초와 참조 7초를 더한 (4 + 7) × $0.05 = $0.55이며, 6.06초 클립이 7초로 올림 처리된 것입니다. 결과 파일 주소는 Python urllib의 기본 User-Agent로 내려받을 때 403을 돌려줬고, 브라우저 User-Agent를 붙인 curl로는 정상적으로 받아졌습니다.

![참조 영상의 인물·양·초원은 결과에 나오지 않고 푸시인 카메라만 넘어온 실측 결과와 출력 4초·참조 7초를 합친 $0.55 과금 계산](https://blog.laozhang.ai/posts/ko/minimax-h3-reference-video/img/reference-test-result.webp)

## 참조 영상 규격: 3개, 클립당 2~15초, 합계 15초 이하

참조 영상은 최대 3개, 클립마다 2~15초, 모두 합쳐 15초 이하여야 하며 이 밖에도 코덱·크기·비율·프레임레이트 제한이 있습니다. 아래 표는 [MiniMax 영상 생성 API 레퍼런스](https://platform.minimax.io/docs/api-reference/video-generation-v2-create)와 공식 가이드를 2026년 11월 2일 기준으로 정리한 것입니다.

| 항목 | 한도 |
| --- | --- |
| 개수 | 영상 3개 이하. 이미지 9장, 오디오 3개까지 섞어 전체 12개 이하 |
| 길이 | 클립당 2~15초, 영상 합계 15초 이하(오디오도 같은 기준) |
| 형식 | MP4 또는 MOV, 영상 H.264/AVC 또는 H.265/HEVC, 오디오 AAC 또는 MP3 |
| 파일 크기 | 영상 1개당 50MB 이하, 요청 본문 전체 64MB 이하 |
| 해상도·비율 | 각 변 256~5760px, 가로/세로 0.4~2.5 |
| 프레임레이트 | 23.976~60fps |
| 함께 넣을 수 없는 것 | `first_frame`, `last_frame` (이미지 투 비디오와 동시 사용 불가) |
| 반드시 필요한 것 | 비어 있지 않은 `text` 1개, 프롬프트 7,000자 이하 |

규격은 클립 하나씩만 보지 말고 합계로 봐야 합니다. 9.47초 클립 두 개는 각각은 규격 안이지만 합계가 18.95초라서 실패했습니다. 세로 영상도 비율 0.4~2.5 안이라면 그대로 쓸 수 있는데, 1080×1922 클립의 가로/세로 비율은 약 0.56입니다.

## 제출 즉시 400, 접수 후 'temporary service error': 규격 밖 요청의 결말

규격 밖 요청이 항상 제출 단계에서 막히지는 않습니다. 2026년 11월 2일 15:53~15:54(UTC)에 앞의 실측과 같은 경로로 768P·4초·16:9 요청 6개를 일부러 규격 밖으로 보냈더니, 4개는 HTTP 400으로 바로 거부되고 과금이 없었지만 2개는 HTTP 200과 `task_id`를 받은 뒤 약 3초 만에 `generation_failed`로 끝났습니다. 그 메시지는 "Video generation failed because of a temporary service error. This request is not charged. Please retry."라서 일시적 장애처럼 읽히지만, 몇 분 뒤 보낸 규격 안의 요청은 정상 완료됐습니다.

| 보낸 요청 | 2026년 11월 2일 결과 | 다른 경로의 보고 |
| --- | --- | --- |
| 참조 영상 4개 | 제출 시 400 `参考图片、视频或音频数量超过支持上限。`, 과금 없음 | — |
| 참조 영상 + `first_frame` | 제출 시 400 `首尾帧图片不能与参考素材混合使用。`, 과금 없음 | Atlas Cloud(8월 12일): 오류 없이 접수, 입력 하나를 조용히 버리고 $0.40 과금 |
| `text` 항목 없음 | 제출 시 400 `内容中必须至少包含一项非空文本。`, 과금 없음 | — |
| 텍스트 + 참조 오디오만 | 제출 시 400 `bad_request_error` "Invalid request parameters…", 과금 없음 | — |
| 1.5초 클립을 Base64로 전송 | 접수 후 약 3초 뒤 temporary service error, 과금 없음 | — |
| 9.47초 클립 2개(합계 18.95초) | 접수 후 약 3초 뒤 temporary service error, 과금 없음 | Atlas Cloud는 영상 합계 초과를 시험하지 않음. 참조 오디오 약 8초 2개(합계 16.1초)는 그대로 완료·$0.40 과금 |

![규격 밖 요청이 제출 즉시 HTTP 400으로 거부되는 경우와 접수 후 약 3초 뒤 temporary service error로 실패하는 경우, 그리고 제출 전 점검 스크립트가 잡아낸 출력](https://blog.laozhang.ai/posts/ko/minimax-h3-reference-video/img/out-of-spec-failures.webp)

400 메시지가 중국어인 것은 이 게이트웨이가 돌려주는 문구이고, MiniMax 공식 API의 오류 문구는 아닙니다. 1.5초 Base64 요청은 너무 짧은 길이와 Base64 전송이 겹쳐 있어 어느 쪽이 원인인지 가를 수 없지만, 18.95초 요청은 각 클립이 규격 안이라 합계 15초 초과만 따로 걸린 경우입니다. 같은 요청을 다시 보내는 시험은 하지 않았으나, 몇 분 뒤 규격 안의 요청이 성공한 점으로 보아 재시도해도 같은 결과가 나올 것으로 추정됩니다. 접수 후 실패한 두 건은 생성 시 4초 × $0.05씩 모두 40센트가 먼저 빠졌다가 실패 직후 원래 잔액으로 돌아왔습니다.

다른 경로의 결과는 반대 방향으로 어긋납니다. Atlas Cloud의 2026년 8월 보고에서는 잘못된 요청이 모두 HTTP 200으로 접수됐고, 첫 프레임과 참조를 섞은 요청은 입력 하나가 빠진 채 과금됐으며, 오디오 합계 15초 제한을 넘긴 참조 오디오 16.1초 요청도 그대로 완료됐습니다. 영상 합계 15초 초과는 그 보고에서 시험되지 않았습니다. 경로마다 검사 방식이 이렇게 다르므로, 어떤 경로든 검사에 기대지 말고 문서 규격 안에 맞춘 소재만 보내는 것이 안전합니다.

## 제출 전 점검: ffprobe 스크립트와 6.00초로 자르는 ffmpeg 명령

소재가 규격 안인지는 제출 전에 ffprobe로 확인할 수 있습니다. 아래 스크립트는 공식 API 레퍼런스의 한도(개수 3개, 클립당 2~15초, 합계 15초, MP4/MOV, H.264/H.265, 50MB, 256~5760px, 비율 0.4~2.5, 23.976~60fps)를 검사하고, 1초 단위로 올림한 과금 예상 초도 함께 출력합니다. ffprobe(ffmpeg에 포함)가 설치돼 있어야 하며, `python3 h3_ref_check.py clip1.mp4 clip2.mp4`처럼 실행합니다.

```python
#!/usr/bin/env python3
# h3_ref_check.py: MiniMax H3 참조 영상 사전 점검 (공식 API 레퍼런스 한도 기준)
import json, math, subprocess, sys

def probe(path):
    out = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
        "format=duration,size,format_name:stream=codec_type,codec_name,width,height,avg_frame_rate",
        "-of", "json", path], capture_output=True, text=True, check=True).stdout
    return json.loads(out)

def check(paths):
    problems, total = [], 0.0
    if len(paths) > 3:
        problems.append(f"{len(paths)} clips: H3 accepts at most 3 reference videos")
    for p in paths:
        info = probe(p)
        fmt = info["format"]
        v = next(s for s in info["streams"] if s["codec_type"] == "video")
        dur, size_mb = float(fmt["duration"]), int(fmt["size"]) / 1e6
        num, den = map(int, v["avg_frame_rate"].split("/"))
        fps = num / den if den else 0
        w, h = v["width"], v["height"]
        total += dur
        print(f"{p}: {dur:.2f}s (billed {math.ceil(dur)}s), {w}x{h}, {fps:.3f} fps, "
              f"{v['codec_name']}, {size_mb:.1f} MB")
        if not 2 <= dur <= 15: problems.append(f"{p}: {dur:.2f}s is outside 2-15 s")
        if v["codec_name"] not in ("h264", "hevc"): problems.append(f"{p}: codec {v['codec_name']} is not H.264/H.265")
        if not ("mp4" in fmt["format_name"] or "mov" in fmt["format_name"]): problems.append(f"{p}: container is not MP4/MOV")
        if size_mb > 50: problems.append(f"{p}: {size_mb:.1f} MB is over 50 MB")
        if not (256 <= w <= 5760 and 256 <= h <= 5760): problems.append(f"{p}: {w}x{h} outside 256-5760 px")
        if not 0.4 <= w / h <= 2.5: problems.append(f"{p}: aspect ratio {w/h:.2f} outside 0.4-2.5")
        if not 23.976 <= round(fps, 3) <= 60: problems.append(f"{p}: {fps:.2f} fps outside 23.976-60")
    if total > 15: problems.append(f"total {total:.2f}s is over 15 s")
    print(f"total reference length {total:.2f}s")
    print("OK" if not problems else "FIX BEFORE SUBMITTING:\n- " + "\n- ".join(problems))
    return not problems

if __name__ == "__main__":
    sys.exit(0 if check(sys.argv[1:]) else 1)
```

2026년 11월 2일 macOS 26.1과 ffprobe 9.0.2에서 앞의 실측 소재로 돌려 보니, 실측 성공에 쓴 6.06초 클립은 OK와 함께 "billed 7s"가 나왔습니다. 접수 후 실패했던 두 요청의 소재는 모두 제출 전에 걸려, 1.5초 클립은 "1.50s is outside 2-15 s", 9.47초 클립 2개는 "total 18.95s is over 15 s"를 출력했습니다. 9.47초 클립을 6.00초로 자른 파일과 6.06초 클립을 함께 넣으면 합계 12.06초로 OK가 나옵니다.

긴 클립은 필요한 구간만 정확한 길이로 잘라 쓰면 합계 제한과 과금 초를 함께 줄일 수 있습니다. 위 표의 6.00초 파일은 다음 명령으로 만들었고, 1초 지점부터 6초를 다시 인코딩해 잘라 길이가 정확히 6.00초가 됐습니다.

```bash
ffmpeg -ss 1 -i dance.mp4 -t 6 -c:v libx264 -crf 20 -preset veryfast -c:a aac dance-6s.mp4
```

이 스크립트는 문서에 적힌 한도만 확인하므로 생성 품질이나 MiniMax의 자동 콘텐츠 검수 통과 여부는 알려 주지 않습니다.

## 참조 영상 비용: (출력 초 + 참조 초) × 해상도별 초당 단가

MiniMax 공식 API에서 참조 영상은 선택한 모델의 출력 해상도 초당 단가로, 입력한 길이만큼 따로 과금됩니다. [MiniMax 종량제 가격 페이지](https://platform.minimax.io/docs/guides/pricing-paygo) 기준(2026년 11월 2일) MiniMax-H3의 출력과 참조 영상 단가는 768P가 초당 $0.08, 2K가 초당 $0.13입니다. 따라서 768P 4초 출력에 6초 참조 영상을 넣으면 (4 + 6) × $0.08 = $0.80, 같은 조합을 2K로 만들면 (4 + 6) × $0.13 = $1.30입니다.

공식 가격 페이지에는 참조 영상 길이를 몇 초로 반올림하는지 적혀 있지 않습니다. LaoZhang 경로는 1초 미만을 1초로 올린다고 문서에 밝히고 있고 11월 2일 실측에서도 6.06초가 7초로 계산됐는데, 공식 API도 같은 방식이라고 가정하면 6.06초 클립을 넣은 768P 4초 요청은 (4 + 7) × $0.08 = $0.88이 됩니다. 이 가정 아래서는 클립을 6.00초로 잘라 두는 것만으로 요청당 1초분($0.08)이 줄어듭니다.

모델과 서비스에 따라 계산식이 달라지는 점도 확인하세요. MiniMax-H3-Max는 768P 출력이 초당 $0.08인데 참조 영상은 초당 $0.143이라 참조 1초가 출력 1초의 약 1.8배이고, H3 모델 중 참조 단가가 출력 단가와 다른 것은 Max뿐입니다. 참조 이미지는 MiniMax-H3에서 작업당 5장까지 무료이고 6장째부터 장당 $0.04이지만, H3-Max는 앞 2장만 무료이고 그 뒤로 장당 $0.074입니다. 참조 오디오는 무료입니다. fal의 기본 H3 레퍼런스 투 비디오는 참조 영상을 따로 과금하지 않는 대신 출력 단가(768p 초당 $0.06)가 붙고, fal의 H3 Max는 참조를 토큰으로 계산해 5초 24fps 16:9 클립이 768p에서 약 $0.56을 더합니다. 다른 영상 모델과 초당 가격을 함께 비교하려면 [AI 동영상 생성 비용: 초당 가격 비교와 60초 영상 예산](https://blog.laozhang.ai/ko/posts/how-much-does-ai-video-generator-cost)을 참고하세요.

## ComfyUI·로컬에서 참조 영상 쓸 때: 문서에 적힌 주의점

로컬에서는 2026년 8월 3일 공개된 Ref2VA 체크포인트로 같은 기능을 쓸 수 있지만, [MiniMax H3 오픈소스 공개 발표](https://www.minimax.io/news/minimax-h3-open-source)와 모델 카드에 따르면 공개 가중치의 출력은 768p·24fps·4~15초뿐입니다. 2K 모듈은 공개되지 않아 2K가 필요하면 호스팅 API인 H3-Context-IR과 H3-Regenerate-2K를 함께 써야 합니다. 아래 주의점은 [ComfyUI 공식 MiniMax H3 네이티브 튜토리얼](https://docs.comfy.org/tutorials/video/minimax/minimax-h3-native)과 [ComfyUI의 MiniMaxH3ReferenceToVideo 노드 문서](https://docs.comfy.org/built-in-nodes/MiniMaxH3ReferenceToVideo)를 기준으로 정리한 문서상 동작이며, 로컬 ComfyUI에서 직접 실행한 결과는 아닙니다.

먼저 모델과 소재를 맞춥니다. 확산 모델은 `ref2va` 계열(예: `minimax_h3_ref2va_pruned_int8_convrot`)을 골라야 하고, 첫/마지막 프레임용 `fl2va`로는 참조 영상이 작동하지 않습니다. 참조 영상은 메타데이터 없이 24fps로 읽히기 때문에 30fps 같은 소재는 불러오기 전에 24fps로 변환해야 하며, 생성 `length`(기본 124프레임, 약 5초)를 넘는 참조 프레임은 잘려 나갑니다. 참조 영상은 최소 5프레임이 필요합니다.

참조가 무시되는 것처럼 보이면 노드 연결부터 확인합니다. `vae`를 연결하지 않으면 참조 이미지와 영상은 텍스트 인코더에만 작용하고 참조 latent가 만들어지지 않으며, 참조 영상의 소리는 같은 번호의 `ref_video_audio_N`을 `ref_video_N`과 맞춰 연결했을 때만 쓰입니다. 4스텝 Turbo LoRA는 빠른 대신 참조와 오디오를 약하게 만들므로 참조가 유지돼야 할 때는 20~25스텝이 권장되고, 스타일 LoRA는 참조와 경쟁하므로 0.5 정도로 낮추라고 안내합니다. 프롬프트에서는 `<Picture 1>`, `<Video 1>`, `<Audio 1>`처럼 종류별로 1부터 번호를 붙이고, 모델에는 이미지, 영상, 오디오 순서로 전달됩니다.

하드웨어 부담도 큽니다. [SGLang의 MiniMax H3 쿡북](https://docs.sglang.io/cookbook/diffusion/MiniMax/MiniMax-H3)은 H200 또는 H100 4장, 호스트 메모리 384GiB를 갖춘 RTX 5090 2장, 또는 최대 약 18GB를 쓰는 RTX 4090 1장 구성을 제시하는데, RTX 4090 구성은 참조 모드가 아닌 프레임 모드로 시험한 것입니다. 같은 문서의 예시에서 참조 작업은 260초로, 텍스트 투 비디오의 37초보다 훨씬 오래 걸렸습니다.

## MiniMax H3 참조 영상 관련 질문

### H3-Context-IR로 참조 영상 프롬프트를 다듬을 수 있나요?

가능하지만 영상은 나오지 않습니다. MiniMax 공식 가이드(2026년 11월 2일 기준)에 따르면 H3-Context-IR 작업은 텍스트와 참조 소재를 해석해 강화된 프롬프트만 `content.prompt`로 돌려주고, 작업 유형은 `h3_context_ir`입니다. 돌려받은 프롬프트에는 앞에서 설명한 작업 유형과 보존 표시가 들어가므로, 그것을 검토한 뒤 일반 생성 요청에 넣어 쓰는 방식입니다.

### 768P로 만든 MiniMax H3 결과를 2K로 바꿀 수 있나요?

공식 API의 Video Regeneration으로 바꿀 수 있습니다. 2026년 11월 2일 기준 공식 가이드는 원래 요청의 `content`를 그대로 다시 보내면서 768P 결과 영상을 `role: "base_video"`인 `video_url`로 하나 추가하라고 안내합니다(작업 유형 `regeneration`). 로컬 공개 가중치로 만든 768p 결과를 2K로 올릴 때도 이 호스팅 API가 필요합니다.

### MiniMax H3-Max에서도 참조 영상을 쓸 수 있나요?

공식 API에서는 쓸 수 있습니다. API 레퍼런스(2026년 11월 2일 기준)는 MiniMax-H3, H3-Highspeed, H3-Lite, H3-Max 네 모델 모두 참조 이미지·영상·오디오를 지원한다고 적고 있으며, H3-Max는 5~15초, 480P·768P만 지원합니다. 반면 Hailuo 웹 앱의 화면 문구는 참조 영상을 H3에서만 받는다고 안내하므로, 앱과 API의 지원 범위를 같은 것으로 보면 안 됩니다.

### MiniMax H3와 다른 영상 모델 중 무엇부터 테스트해야 하나요?

길이, 2K, 레퍼런스 개수, 로컬 실행 중 무엇이 필수인지에 따라 달라지며, [Wan 3.0·MiniMax H3·Seedance 2.5 비교: 납품 기준으로 먼저 테스트할 모델](https://blog.laozhang.ai/ko/posts/wan-3-vs-minimax-h3-vs-seedance-2-5)에서 세 모델을 납품 조건별로 비교했습니다.

## 참고 자료

이 글이 링크한 외부 페이지를 본문에 나온 순서대로 정리했습니다. 마지막 업데이트: 2026-11-03.

- [MiniMax 공식 영상 생성 가이드](https://platform.minimax.io/docs/guides/video-generation) (platform.minimax.io)
- [Hugging Face의 MiniMax H3 모델 카드](https://huggingface.co/MiniMaxAI/MiniMax-H3) (huggingface.co)
- [MiniMax의 참조 모드 프롬프트 작성 가이드](https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/docs/VIDEO_PROMPT_WRITING_GUIDE_ref_en.md) (huggingface.co)
- [Domo의 레퍼런스 투 비디오 가이드](https://www.domoai.app/blog/minimax-h3-reference-to-video) (domoai.app)
- [Atlas Cloud의 H3 레퍼런스 투 비디오 정리](https://www.atlascloud.ai/blog/tips/minimax-h3-reference-to-video) (atlascloud.ai)
- [RunDiffusion의 MiniMax H3 프롬프트 가이드](https://learn.rundiffusion.com/minimax-h3-prompt-guide/) (learn.rundiffusion.com)
- [MiniMax 영상 생성 API 레퍼런스](https://platform.minimax.io/docs/api-reference/video-generation-v2-create) (platform.minimax.io)
- [MiniMax 종량제 가격 페이지](https://platform.minimax.io/docs/guides/pricing-paygo) (platform.minimax.io)
- [MiniMax H3 오픈소스 공개 발표](https://www.minimax.io/news/minimax-h3-open-source) (minimax.io)
- [ComfyUI 공식 MiniMax H3 네이티브 튜토리얼](https://docs.comfy.org/tutorials/video/minimax/minimax-h3-native) (docs.comfy.org)
- [ComfyUI의 MiniMaxH3ReferenceToVideo 노드 문서](https://docs.comfy.org/built-in-nodes/MiniMaxH3ReferenceToVideo) (docs.comfy.org)
- [SGLang의 MiniMax H3 쿡북](https://docs.sglang.io/cookbook/diffusion/MiniMax/MiniMax-H3) (docs.sglang.io)
