Split View: 이미지 한 장으로 영상 만들기 — Kling·Veo·Sora vs Wan·HunyuanVideo, 무엇을 언제 고르나
이미지 한 장으로 영상 만들기 — Kling·Veo·Sora vs Wan·HunyuanVideo, 무엇을 언제 고르나
- 들어가며 — 답부터 말하면
- 호스티드 API는 실제로 초당 얼마인가
- Kling은 왜 "초당 가격"이 없나 — 그리고 떠도는 숫자의 정체
- 이미지를 넣을 때 진짜로 걸리는 제약
- 오픈 웨이트는 내 GPU에서 정말 돌아가나
- 라이선스 — 한국에서 읽는다면 이 절이 결론을 바꾼다
- 데모 릴에서 측정할 수 있는 것과 없는 것
- 그래서 무엇을 고르나
- 마치며
- 참고 자료
들어가며 — 답부터 말하면
"이미지 한 장 넣고 프롬프트 써서 영상 만들려는데, 뭘 써야 하나요?" 이 질문에 대한 2026년 7월 현재의 짧은 답은 이렇습니다.
한국에서 오픈 웨이트를 돌릴 거라면 Wan2.2입니다. 성능 때문이 아니라 라이선스 때문입니다. HunyuanVideo 계열의 라이선스 문서는 첫 줄부터 적용 지역에서 유럽연합·영국·한국을 명시적으로 제외한다고 적어 놓았습니다. Wan2.2는 코드도 가중치도 Apache 2.0입니다. 호스티드 API를 쓸 거라면 오디오가 필요한지가 첫 갈림길입니다 — Veo 3.1은 가격표 자체가 "오디오 포함"이고, Kling은 오디오를 켜면 정확히 2배를 받습니다. 그리고 입력 이미지에 사람 얼굴이 있다면 Sora는 후보에서 빠집니다. OpenAI 문서가 사람 얼굴이 있는 입력 이미지는 현재 거부된다고 직접 적어 놓았습니다.
이 글은 그 세 문장이 어디서 나왔는지를 벤더의 1차 문서로 따라가 봅니다. 아키텍처 이야기(DiT, 3D VAE, 플로 매칭)는 SOTA 비디오 생성 모델 분석 편에서 이미 다뤘으니, 여기서는 고르고 돌리는 데 필요한 숫자만 봅니다. 가격, VRAM, 생성 시간, 그리고 라이선스.
한 가지 미리 말해 둘 것이 있습니다. 이 글의 모든 숫자는 각 벤더의 공식 가격표·문서에서 직접 가져왔고, 출처 페이지를 마지막에 전부 적어 뒀습니다. 벤더 데모 릴에 나오는 화질과 "영화 같은 퀄리티" 같은 표현은 이 글에서 다루지 않습니다 — 그건 측정 가능한 값이 아니기 때문입니다. 왜 그런지는 뒤에서 따로 이야기합니다.
호스티드 API는 실제로 초당 얼마인가
OpenAI와 Google은 공개된 정액 요금표를 갖고 있습니다. 로그인 없이 누구나 볼 수 있고, 초 단위로 가격이 적혀 있습니다.
OpenAI 가격표는 "Prices per second"라고 명시하고 다음과 같이 적고 있습니다.
| 모델 | 해상도 | 세로/가로 | 표준(USD/초) | 배치(USD/초) |
|---|---|---|---|---|
| sora-2 | 720p | 720x1280 / 1280x720 | 0.10 | 0.05 |
| sora-2-pro | 720p | 720x1280 / 1280x720 | 0.30 | 0.15 |
| sora-2-pro | 1024p | 1024x1792 / 1792x1024 | 0.50 | 0.25 |
| sora-2-pro | 1080p | 1080x1920 / 1920x1080 | 0.70 | 0.35 |
배치 API를 쓰면 정확히 절반입니다. 실시간 응답이 필요 없는 파이프라인이라면 이건 그냥 공짜로 얻는 50퍼센트 절감입니다.
Google의 Gemini API 가격표는 Veo를 이렇게 적고 있습니다. 표의 열 제목이 "Paid Tier, per second in USD"이고, 각 행의 이름이 "video with audio price (default)"라는 점이 중요합니다 — Veo는 가격에 오디오가 포함돼 있습니다.
| 모델 | 해상도 | USD/초 | 비고 |
|---|---|---|---|
| Veo 3.1 Standard | 720p / 1080p | 0.40 | 오디오 포함 |
| Veo 3.1 Standard | 4k | 0.60 | 오디오 포함 |
| Veo 3.1 Fast | 720p | 0.10 | 오디오 포함 |
| Veo 3.1 Fast | 1080p | 0.12 | 오디오 포함 |
| Veo 3.1 Fast | 4k | 0.30 | 오디오 포함 |
| Veo 3.1 Lite | 720p | 0.05 | 오디오 포함, 4k 미지원 |
| Veo 3.1 Lite | 1080p | 0.08 | 오디오 포함, 4k 미지원 |
Veo 3.1의 세 변종(veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview)은 전부 프리뷰이고, Google은 "Preview models may change before becoming stable and have more restrictive rate limits"라고 경고를 붙여 놨습니다. 무료 티어는 Veo 전 모델에서 "Not available"입니다.
가격표에서 눈에 띄는 문장이 하나 더 있습니다. "You will only be charged if your video is successfully generated." 생성에 실패하면 과금하지 않는다는 뜻입니다. OpenAI 가격표에는 이에 대응하는 문장이 없습니다.
한 가지 이상한 점도 그대로 적어 둡니다. 같은 페이지에 Veo 3(veo-3.0-generate-001)와 Veo 2(veo-2.0-generate-001)가 여전히 남아 있고, 둘 다 "deprecated and will be shut down on June 30, 2026"라는 경고를 달고 있습니다. 이 글을 쓰는 2026년 7월 17일 기준으로 그 날짜는 이미 지났습니다. 페이지가 갱신되지 않은 것인지 종료가 미뤄진 것인지는 문서만으로 알 수 없어서, 확인되지 않은 추측 대신 문서에 적힌 그대로만 옮깁니다. 새로 만드는 코드라면 Veo 3.1을 보는 게 맞습니다.
Kling은 왜 "초당 가격"이 없나 — 그리고 떠도는 숫자의 정체
Kling을 조사하면 곧바로 벽에 부딪힙니다. 검색하면 "Kling 3.0은 초당 0.075달러부터", "Kling API는 초당 0.084~0.168달러" 같은 숫자가 잔뜩 나옵니다. 그런데 그 숫자들의 출처는 전부 Kling이 아니라 제3자 API 리셀러입니다. PiAPI, kie.ai, evolink, costbench 같은 중개 서비스들이죠.
Kling의 공식 개발자 가격 페이지를 직접 열어 확인해 봤습니다. 두 가지가 드러납니다.
첫째, 0.075라는 문자열은 Kling 공식 가격 페이지에 단 한 번도 등장하지 않습니다. 그리고 그 페이지의 "Kling 3.0"이라는 표는 비디오 표가 아니라 이미지 모델 표입니다(Text to Image / Image to Image / Image Editing). Kling 공식 API 가격표에 올라온 비디오 모델 중 가장 최신은 Kling-V2-6입니다. 즉 "Kling 3.0 영상 초당 0.075달러"는 Kling이 발표한 적 없는 가격입니다. 리셀러의 자체 요금일 수는 있지만, 그건 Kling의 가격이 아닙니다.
둘째, Kling에는 애초에 "초당 가격"이라는 개념이 없습니다. Kling은 5초 또는 10초짜리 클립 단위로 과금합니다. 공식 가격표의 Kling-V2-6 행은 이렇게 생겼습니다.
| 사양 | 클립당(USD) | 초당 환산(USD/초) |
|---|---|---|
| std x 5s x no audio | 0.21 | 0.042 |
| std x 10s x no audio | 0.42 | 0.042 |
| pro x 5s x no audio | 0.35 | 0.07 |
| pro x 10s x no audio | 0.70 | 0.07 |
| pro x 5s x audio (voice control 없음) | 0.70 | 0.14 |
| pro x 10s x audio (voice control 없음) | 1.40 | 0.14 |
| pro x 5s x audio x voice control | 0.84 | 0.168 |
| pro x 10s x audio x voice control | 1.68 | 0.168 |
오른쪽 열의 "초당 환산"은 Kling이 발표한 값이 아니라 제가 직접 나눈 값입니다. Kling 가격표에는 왼쪽 두 열만 있습니다. 이 구분이 중요한 이유는, 초당 환산이 성립하려면 5초와 10초 두 지점밖에 없다는 사실을 무시해야 하기 때문입니다. Kling에서 7초짜리 영상은 만들 수 없습니다. 10초를 만들고 잘라내야 하고, 그러면 10초 요금을 냅니다. Sora가 초 단위로 길이를 지정하고 초 단위로 과금하는 것과는 과금 모델 자체가 다릅니다.
표에서 읽어야 할 게 하나 더 있습니다. pro x 5s가 오디오 없이 0.35달러, 오디오를 켜면 0.70달러 — 정확히 2배입니다. Kling에서 오디오는 옵션이고 가격이 2배가 되는 반면, Veo는 오디오가 기본 포함이고 가격표에 아예 "video with audio price (default)"라고 적혀 있습니다. 오디오까지 필요하다면 Veo 3.1 Fast 720p(초당 0.10달러, 오디오 포함)와 Kling-V2-6 pro + audio(초당 0.14달러 환산)를 비교하는 게 맞습니다. 오디오가 필요 없다면 Kling-V2-6 std(초당 0.042달러 환산)가 이 표에서 가장 쌉니다.
예외도 있습니다. Kling 가격표에서 Kling-Video-O1과 Motion Control만은 초 단위로 과금합니다.
| 모델 / 사양 | USD |
|---|---|
| Kling-Video-O1 std x 1s (비디오 입력 없음) | 0.084 |
| Kling-Video-O1 std x 1s (비디오 입력 있음) | 0.126 |
| Kling-Video-O1 pro x 1s (비디오 입력 없음) | 0.112 |
| Kling-Video-O1 pro x 1s (비디오 입력 있음) | 0.168 |
| Kling-V2-6 Motion Control std x 1s | 0.07 |
| Kling-V2-6 Motion Control pro x 1s | 0.112 |
검색에 떠도는 "0.084~0.168달러"는 여기서 온 숫자로 보입니다. 다만 그건 Kling-Video-O1의 가격이지 Kling의 일반 image-to-video 가격이 아닙니다.
마지막으로 구조적인 차이 하나. Kling API는 선불 리소스 팩 방식입니다. 가격표에 "Resource Pack Unit Deduction"이라는 포인트 열이 따로 있고, 실제 과금은 포인트 차감으로 일어납니다. 표의 포인트와 달러를 대조해 보면 비디오 모델에서 1포인트가 일관되게 0.14달러로 떨어집니다(std 5s = 1.5포인트 = 0.21달러, pro 10s + audio + voice control = 12포인트 = 1.68달러 — 둘 다 나눠 보면 0.14달러입니다). 산수는 맞아떨어집니다. 다만 OpenAI·Google처럼 쓴 만큼 후불로 내는 게 아니라 미리 팩을 사 둬야 한다는 점은 조달 관점에서 다른 이야기입니다.
이미지를 넣을 때 진짜로 걸리는 제약
여기가 image-to-video 특유의 지뢰밭입니다. 텍스트만 넣을 때는 안 보이던 제약이 이미지를 넣는 순간 튀어나옵니다.
Sora: 사람 얼굴이 있는 입력 이미지는 거부됩니다. OpenAI 문서의 Guardrails 절을 그대로 옮기면 이렇습니다.
Only content suitable for audiences under 18 (a setting to bypass this
restriction will be available in the future). Copyrighted characters and
copyrighted music will be rejected. Real people—including public figures—
cannot be generated. Character uploads that depict human likeness are
blocked by default. Input images with faces of humans are currently rejected.
마지막 문장이 핵심입니다 — "Input images with faces of humans are currently rejected." 인물 사진을 애니메이션화하려는 용도라면 Sora는 그냥 후보에서 빠집니다. "currently"라는 단어가 붙어 있으니 나중에 풀릴 수도 있지만, 문서가 "현재는 거부된다"고 하면 오늘 기준으로는 거부되는 겁니다. 이건 실패율 문제가 아니라 기능 부재 문제입니다.
Sora의 나머지 이미지 관련 사양은 이렇습니다. input_reference로 이미지를 넣으면 그게 영상의 첫 프레임이 됩니다. 길이는 최대 20초까지 만들 수 있고, 확장(extension)으로 한 번에 최대 20초씩 최대 6번까지 이어 붙여 총 120초까지 갈 수 있습니다. 다만 문서는 "Longer durations and 1080p jobs can take materially longer to complete"라며 지연을 경고하고, "a single render may take several minutes"라고 적고 있습니다. 참고로 기존 remix 엔드포인트는 폐기 중이고 새 통합은 edits를 쓰라고 안내합니다.
Veo: 이미지를 넣으면 길이가 8초로 고정될 수 있습니다. Google 문서의 durationSeconds 파라미터 설명은 이렇습니다 — 값은 "4", "6", "8" 중 하나인데, 확장·레퍼런스 이미지·1080p·4k를 쓸 때는 반드시 "8"이어야 합니다. Veo 3.1을 소개하는 문장 자체가 "Veo 3.1 is a model for generating 8-second videos (720p, 1080p, or 4k) with natively generated audio"입니다. 즉 Veo에서 4초짜리 짧은 클립을 싸게 뽑으려던 계획은 레퍼런스 이미지를 쓰는 순간 무너집니다. 화면비는 "16:9"(기본)와 "9:16"만 됩니다.
Veo의 이미지 입력은 두 갈래입니다. 하나는 image-to-video로, 문서 표현으로는 "Veo uses the input image as the initial frame" — Sora와 같은 첫 프레임 방식입니다. 다른 하나는 레퍼런스 이미지로, Veo 3.1은 최대 3장까지 받아서 인물·캐릭터·제품의 외형을 유지합니다. 후자가 앞서 말한 8초 고정 조건에 걸립니다.
Veo: 사람 생성 옵션이 입력 방식에 따라 달라집니다. personGeneration 파라미터가 text-to-video에서는 allow_all만 되고, image-to-video·보간·레퍼런스 이미지에서는 allow_adult만 됩니다. 지역 제한도 있습니다 — 문서는 "In EU, UK, CH, MENA locations"에서 Veo 3과 3.1은 allow_adult만 허용된다고 적고 있습니다. 한국은 이 목록에 없습니다.
Veo: 생성한 영상은 2일 뒤 서버에서 사라집니다. 이건 놓치기 쉬운 운영상의 함정입니다. 문서 그대로 "Generated videos are stored on the server for 2 days, after which they are removed. To save a local copy, you must download your video within 2 days of generation." 파이프라인에 다운로드 단계를 넣지 않으면 결과물을 잃습니다. 그리고 Veo가 만든 영상에는 SynthID 워터마크가 들어갑니다. 이건 옵션이 아닙니다.
정리하면 이렇습니다.
| 항목 | sora-2 / sora-2-pro | Veo 3.1 | Kling-V2-6 |
|---|---|---|---|
| 이미지 입력 방식 | input_reference = 첫 프레임 | 첫 프레임 + 레퍼런스 이미지 최대 3장 | 첫 프레임, 시작/끝 프레임 |
| 길이 | 최대 20초, 확장으로 총 120초 | 4 / 6 / 8초, 레퍼런스·1080p·4k는 8초 고정 | 5초 또는 10초만 |
| 사람 얼굴 입력 | 현재 거부됨 | allow_adult (image-to-video 시) | 문서상 명시 제한 확인 못 함 |
| 오디오 | 가격표에 별도 표기 없음 | 기본 포함 | 옵션, 켜면 2배 |
| 워터마크 | 문서에서 확인 못 함 | SynthID, 강제 | 문서에서 확인 못 함 |
| 결과물 보존 | 문서에서 확인 못 함 | 2일 후 삭제 | 문서에서 확인 못 함 |
"확인 못 함"이라고 쓴 칸은 해당 기능이 없다는 뜻이 아니라, 제가 확인한 공식 문서 범위에서 그 항목을 찾지 못했다는 뜻입니다. 없는 걸 있다고 쓰는 것만큼이나 모르는 걸 아는 척 쓰는 것도 틀린 답이라서, 빈칸은 빈칸으로 둡니다.
오픈 웨이트는 내 GPU에서 정말 돌아가나
이제 반대편입니다. 여기서 궁금한 건 딱 두 개죠 — 내 카드에 올라가나, 얼마나 걸리나.
Wan2.2 (Alibaba). 저장소 README가 제시하는 숫자는 이렇습니다.
| 모델 | 용도 | 단일 GPU VRAM | 비고 |
|---|---|---|---|
| TI2V-5B | T2V + I2V 통합, 720P | 최소 24GB (예: RTX 4090) | --offload_model True --convert_model_dtype --t5_cpu 필요 |
| I2V-A14B | Image-to-Video, 480P/720P | 최소 80GB | --offload_model True --convert_model_dtype |
| T2V-A14B | Text-to-Video, 480P/720P | 최소 80GB | 동일 |
| S2V-14B | Speech-to-Video | 최소 80GB | 동일 |
이 표가 말하는 바는 분명합니다. 소비자용 카드에서 실제로 돌릴 수 있는 건 TI2V-5B 하나입니다. A14B 계열은 단일 GPU 기준 80GB를 요구하니 RTX 4090(24GB)에서는 시작조차 못 합니다. 그리고 TI2V-5B의 24GB조차 오프로딩 옵션 세 개를 다 켠 상태의 숫자입니다. README는 80GB 이상이면 그 옵션들을 빼서 속도를 올리라고 안내합니다.
속도는 어떨까요. README의 문장을 그대로 옮기면 "Without specific optimization, TI2V-5B can generate a 5-second 720P video in under 9 minutes on a single consumer-grade GPU"입니다. 5초 영상에 9분. 이건 Alibaba 자체 측정치이고, "특별한 최적화 없이"라는 조건이 붙어 있습니다. 어떤 카드인지는 이 문장에 명시돼 있지 않습니다("consumer-grade GPU"라고만 적혀 있습니다).
여기서 솔직히 짚을 게 있습니다. Wan2.2 README에는 GPU별 생성 시간과 피크 메모리를 담은 "Computational Efficiency on Different GPUs" 표가 있는데, 그 표가 이미지 파일로 올라가 있습니다. 텍스트가 아니라 PNG입니다. 그래서 그 표의 숫자는 이 글에서 인용하지 않았습니다. 기계로 읽을 수 없는 값을 옮겨 적다가 틀리느니 안 쓰는 게 낫습니다. 대신 README 본문에 텍스트로 적힌 "9분", "24GB", "80GB"만 썼습니다.
구조는 간단히만 짚으면, A14B는 MoE입니다 — 고노이즈 전문가와 저노이즈 전문가 둘로 나뉘어 각각 약 14B, 합쳐서 27B이고 스텝당 활성은 14B입니다. TI2V-5B는 그냥 밀집 모델인데, Wan2.2-VAE의 압축률이 4x16x16이라 총 압축률 64에 도달하고 패치화까지 더하면 4x32x32가 됩니다. 720P를 24fps로 뽑을 수 있는 근거가 이 압축률입니다.
HunyuanVideo-1.5 (Tencent). 2025년 11월 21일 공개된 최신 라인입니다. 저장소 README의 숫자는 이렇습니다.
- 파라미터 8.3B — DiT + 3D causal VAE, 공간 16배 / 시간 4배 압축
- 최소 GPU 메모리 14GB(모델 오프로딩 켠 상태 기준). README는 이 값이 오프로딩 전제 측정치이고, 메모리가 충분하면 오프로딩을 꺼서 속도를 올리라고 적습니다
- 해상도는 480p와 720p, 1080p는 별도의 초해상도 네트워크로 올립니다
- 기본 길이는
--video_length121프레임이고 예제 코드가 24fps로 저장하니 약 5초입니다 - 2025년 12월 5일 공개된 480p I2V 스텝 증류 모델은 8~12스텝으로 돌아가고, Tencent 측정으로 "On RTX 4090, end-to-end generation time is reduced by 75%, and a single RTX 4090 can generate videos within 75 seconds"입니다
마지막 줄이 눈에 띕니다. RTX 4090에서 75초. Wan2.2 TI2V-5B의 "9분"과 비교하고 싶어지지만, 여기서 멈춰야 합니다. 두 숫자는 비교 가능한 값이 아닙니다. Hunyuan의 75초는 480p, 스텝 증류 모델(8~12스텝), RTX 4090 명시 기준입니다. Wan의 9분은 720p, 증류 없음, "consumer-grade GPU"라고만 적힌 기준입니다. 해상도도 다르고 스텝 수도 다르고 카드 명시 여부도 다릅니다. 각자 자기 저장소에서 자기에게 유리한 조건으로 잰 값이고, 공통 벤치마크는 존재하지 않습니다. 두 벤더의 자체 측정치를 나란히 놓고 "Hunyuan이 7배 빠르다"고 쓰는 건 그냥 틀린 계산입니다.
Hunyuan README에는 SSTA(Selective and Sliding Tile Attention)에 대한 주장도 있습니다 — 10초 720p 합성에서 FlashAttention-3 대비 종단간 1.87배 가속. 이건 어텐션 구현끼리의 비교이고 저자 자체 측정치입니다. 다른 모델과의 비교가 아닙니다.
라이선스 — 한국에서 읽는다면 이 절이 결론을 바꾼다
성능 이야기를 여기까지 끌고 왔지만, 한국 사용자에게는 앞의 모든 표보다 이 한 절이 중요합니다.
HunyuanVideo, HunyuanVideo-I2V, HunyuanVideo-1.5 — 세 저장소의 라이선스 문서가 모두 동일한 문장으로 시작합니다.
TENCENT HUNYUAN COMMUNITY LICENSE AGREEMENT
Tencent HunyuanVideo 1.5 Release Date: November 21, 2025
THIS LICENSE AGREEMENT DOES NOT APPLY IN THE EUROPEAN UNION, UNITED
KINGDOM AND SOUTH KOREA AND IS EXPRESSLY LIMITED TO THE TERRITORY, AS
DEFINED BELOW.
그리고 정의 절에서 "Territory"를 이렇게 규정합니다.
l. "Territory" shall mean the worldwide territory, excluding the territory
of the European Union, United Kingdom and South Korea.
즉 라이선스가 허용하는 지역에서 한국이 빠져 있습니다. 그리고 5조 (c)항이 이 제외의 의미를 못 박습니다.
c. You must not use, reproduce, modify, distribute, or display the Tencent
Hunyuan Works, Output or results of the Tencent Hunyuan Works outside
the Territory. Any such use outside the Territory is unlicensed and
unauthorized under this Agreement.
읽어야 할 부분은 "Output or results"입니다. 가중치를 받아 쓰는 것만이 아니라 그걸로 만들어 낸 영상까지 허용 지역 밖에서는 쓸 수 없다고 적혀 있습니다. 덤으로 월간 활성 사용자 1억 명을 넘는 사업자는 별도 라이선스를 Tencent에 요청해야 하고(그리고 Tencent가 재량으로 거절할 수 있고), 준거법은 홍콩 특별행정구 법입니다.
반대로 Wan2.2는 Apache 2.0입니다. 이건 세 군데서 독립적으로 확인됩니다.
| 확인 경로 | Wan2.2 | HunyuanVideo-1.5 |
|---|---|---|
| 저장소 라이선스 파일 | Apache License 2.0 전문 | Tencent Hunyuan Community License |
| GitHub API의 라이선스 판별 | Apache-2.0 | NOASSERTION (표준 라이선스 아님) |
| Hugging Face 모델 카드 | license: apache-2.0 | license: other, license_name: tencent-hunyuan-community |
Hugging Face 확인이 중요한 이유가 있습니다. 코드 라이선스와 가중치 라이선스는 다를 수 있습니다. 저장소는 Apache인데 가중치는 별도 약관인 경우가 흔하죠. Wan2.2는 Wan-AI/Wan2.2-TI2V-5B와 Wan-AI/Wan2.2-I2V-A14B 모델 카드가 둘 다 apache-2.0이라 그 함정이 없습니다.
여기서 흥미로운 대조가 하나 있습니다. 같은 Tencent가 Hy3를 공개할 때는 Apache 2.0을 썼습니다 — 지역 제한도 사용 분야 제한도 없이요. 즉 이건 "중국 벤더라서"의 문제가 아니라 모델 라인별 정책의 문제입니다. 같은 회사가 언어 모델은 Apache로 풀고 비디오 모델은 지역 제한을 겁니다. 벤더 이름만 보고 라이선스를 짐작하면 안 되는 이유입니다.
두 가지는 분명히 해 두겠습니다. 첫째, 저는 변호사가 아니고 이건 법률 자문이 아닙니다. 위 인용문은 Tencent가 자기 저장소에 올려놓은 문서의 원문 그대로이고, 제가 한 일은 그걸 찾아서 옮긴 것뿐입니다. 둘째, 이 조항이 한국에서 실제로 어떻게 해석되고 집행되는지는 문서만으로는 알 수 없습니다. 제가 말할 수 있는 건 딱 여기까지입니다 — Tencent가 배포한 라이선스 문서는 한국을 허용 지역에서 제외한다고 명시적으로 적고 있고, 회사에서 이 모델을 쓸 계획이라면 법무 검토 없이 넘어갈 문장은 아닙니다. 개인이 로컬에서 실험하는 것과 제품에 넣는 것은 다른 문제이고, 그 판단은 이 글이 대신해 줄 수 없습니다.
데모 릴에서 측정할 수 있는 것과 없는 것
이 글에 화질 비교가 없는 이유를 말할 차례입니다.
각 벤더의 프로젝트 페이지에는 근사한 데모 영상이 걸려 있습니다. Wan2.2는 "cinematic-level aesthetics"를 내세우고, Kling은 자기 모델을 "master" 티어로 부르고, HunyuanVideo-1.5는 "state-of-the-art among open-source models"라고 씁니다. 이 표현들에 대해 정직하게 말할 수 있는 건 이겁니다 — 그 데모 릴은 마케팅이고, 그것으로부터 측정 가능한 값을 얻을 수 없습니다. 벤더가 고른 프롬프트를, 벤더가 고른 시드로, 벤더가 몇 번 돌려서 골랐는지 알 수 없는 결과물이니까요. 실패한 생성은 릴에 올라가지 않습니다.
그래서 이 글이 다룬 값과 다루지 않은 값은 이렇게 갈립니다.
측정·검증 가능한 것 — 초당 가격(벤더 가격표에 숫자로 적혀 있음), 최대 길이와 허용 길이 값(API 파라미터 사양), VRAM 하한(README에 숫자로 적혀 있음), 라이선스 조항(문서 원문), 결과물 보존 기간(문서 명시), 워터마크 유무(문서 명시). 이런 건 논쟁의 여지가 없습니다. 페이지를 열면 그렇게 적혀 있거나 아니거나입니다.
벤더 자체 측정치라 조건과 함께 읽어야 하는 것 — Wan의 "9분", Hunyuan의 "75초"와 "1.87배". 전부 각자 자기 저장소에서 자기 조건으로 잰 값이고, 조건이 서로 달라서 교차 비교가 성립하지 않습니다. 이 글에서 이 숫자들을 나란히 놓되 빼기나 나누기를 하지 않은 이유입니다.
아예 측정 불가능한 것 — "어느 모델의 화질이 더 좋은가". 이 질문에 대해 벤더 문서가 주는 답은 전부 자기 자랑이고, 다섯 모델을 공통 조건에서 비교한 독립 벤치마크는 제가 확인한 범위에서 존재하지 않습니다. 그래서 이 글은 그 질문에 답하지 않습니다. 답을 지어내는 것보다 "그런 수치는 공개된 적이 없다"고 쓰는 게 정확합니다.
이게 뜻하는 실무적 결론은 단순합니다. 화질은 당신이 직접 테스트해야 합니다. 당신의 실제 입력 이미지와 실제 프롬프트로요. 다행히 이건 싸게 할 수 있습니다 — sora-2 720p로 5초 영상 하나가 0.50달러, Kling-V2-6 std 5초가 0.21달러입니다. 열 개씩 돌려 봐도 커피 한 잔 값입니다. 반대로 라이선스와 VRAM은 테스트로 알아낼 수 있는 게 아니고, 그래서 이 글이 그쪽에 지면을 쓴 겁니다.
그래서 무엇을 고르나
결정 규칙으로 정리하면 이렇습니다. 위에서부터 순서대로 내려오면 됩니다.
1. 입력 이미지에 사람 얼굴이 있는가? 있다면 Sora는 제외입니다. 문서가 현재 거부한다고 적었습니다. Veo는 personGeneration을 allow_adult로 두고 갑니다.
2. 한국에서 오픈 웨이트를 제품에 넣을 것인가? 그렇다면 Wan2.2입니다. HunyuanVideo 계열은 라이선스 문서가 한국을 허용 지역에서 제외하고, 그 제외가 결과물까지 미친다고 적고 있습니다. Apache 2.0인 Wan2.2에는 그 문제가 없습니다.
3. 가진 GPU가 24GB인가 80GB인가? 24GB(RTX 4090급)라면 선택지는 사실상 Wan2.2 TI2V-5B(720p, 5초에 9분) 또는 HunyuanVideo-1.5(최소 14GB, 480p 증류 모델로 4090에서 75초)입니다. Wan의 A14B 계열은 80GB부터 시작합니다. 오픈 웨이트를 아예 못 돌릴 GPU라면 2번 항목은 자동으로 넘어갑니다.
4. 오디오가 필요한가? 필요하면 Veo 3.1이 가장 단순합니다 — 가격에 포함돼 있고 Fast 720p가 초당 0.10달러입니다. Kling은 오디오를 켜면 2배(pro 5초 기준 0.35 → 0.70달러)를 받습니다.
5. 길이가 자유로워야 하는가? 7초, 13초 같은 임의 길이가 필요하면 Sora입니다(초 단위 지정, 최대 20초, 확장으로 120초). Veo는 4/6/8초뿐이고 레퍼런스 이미지를 쓰면 8초 고정입니다. Kling은 5초와 10초 두 지점밖에 없습니다.
6. 배치로 돌려도 되는가? 그렇다면 sora-2 배치가 720p 초당 0.05달러로, 초 단위로 과금하는 선택지 중에서는 Veo 3.1 Lite(초당 0.05달러, 단 오디오 포함)와 함께 가장 쌉니다. 다만 5초·10초 길이로 만족한다면 Kling-V2-6 std 5초 클립이 0.21달러 — 초당 0.042달러 환산으로 더 낮습니다. 클립 단위 과금과 초 단위 과금을 한 줄에 세워 비교하는 게 원래 성립하지 않는다는 점은 기억해 두시고요.
쓰지 말아야 할 경우도 적어 둡니다.
- 영상 몇 개 만들려고 오픈 웨이트를 세팅하는 건 거의 항상 손해입니다. GPU를 빌리는 비용과 셋업 시간을 생각하면, 5초 클립 수십 개까지는 호스티드가 압도적으로 쌉니다. 오픈 웨이트가 값을 하는 건 볼륨이 크거나, 데이터를 밖으로 못 내보내거나, 파인튜닝이 필요할 때입니다.
- Veo를 쓰면서 다운로드 단계를 파이프라인에 안 넣으면 안 됩니다. 2일 뒤 서버에서 사라집니다.
- 워터마크가 곤란한 용도라면 Veo는 후보에서 빼야 합니다. SynthID는 선택 항목이 아닙니다.
- 리셀러 가격표를 Kling 공식 가격으로 인용하면 안 됩니다. 앞서 봤듯 Kling 공식 페이지에 없는 숫자가 검색 결과에는 사실처럼 떠다닙니다.
마치며
image-to-video 모델 선택에서 실제로 결정을 가르는 건 데모 릴의 화질이 아니었습니다. 벤더 문서를 직접 열어 확인해 보면 결정적인 건 세 가지입니다 — 초당 가격의 구조(Sora·Veo는 초 단위, Kling은 5초·10초 클립 단위), 이미지를 넣는 순간 걸리는 제약(Sora의 얼굴 거부, Veo의 8초 고정과 2일 보존과 SynthID), 그리고 라이선스(Wan2.2는 Apache 2.0, HunyuanVideo 계열은 한국을 허용 지역에서 제외).
그중 한국에서 읽는 사람에게 가장 값싼 조언은 여전히 첫 문단의 그것입니다. 오픈 웨이트를 제품에 넣을 거라면, 벤치마크를 보기 전에 LICENSE 파일을 먼저 여십시오. Wan2.2와 HunyuanVideo-1.5의 성능을 비교하느라 몇 주를 쓰고 나서 라이선스 첫 줄을 읽는 것보다, 30초 걸리는 그 순서가 낫습니다. 그리고 그 첫 줄은 같은 회사의 다른 모델이라고 같지 않습니다 — Tencent가 언어 모델은 Apache로 풀고 비디오 모델은 지역 제한을 건 것처럼요.
나머지 — 어느 모델 화질이 더 나은가 — 는 공통 벤치마크가 없어서 아무도 대신 답해 줄 수 없습니다. 다만 그건 당신의 이미지 열 장과 몇 달러로 오늘 직접 확인할 수 있는 문제이기도 합니다. 라이선스와 VRAM은 그렇지 않고요.
참고 자료
- OpenAI API Pricing — 비디오 생성 모델 초당 가격표(sora-2, sora-2-pro, 표준/배치)
- OpenAI — Video generation 가이드(input_reference, seconds, 확장, Guardrails)
- Gemini API Pricing — Veo 3.1 / Veo 3 / Veo 2 초당 가격과 지원 중단 공지
- Gemini API — Veo 문서(durationSeconds, personGeneration, 레퍼런스 이미지, 2일 보존, SynthID)
- Kling AI Developer — API 가격 페이지(Kling-V2-6, Kling-Video-O1, 리소스 팩 포인트)
- Wan-Video/Wan2.2 — 저장소 README(TI2V-5B 24GB / A14B 80GB, 5초 720P 9분, MoE 구조)
- Wan-Video/Wan2.2 — LICENSE.txt (Apache License 2.0)
- Wan-AI/Wan2.2-TI2V-5B — Hugging Face 모델 카드(가중치 라이선스 apache-2.0)
- Tencent-Hunyuan/HunyuanVideo-1.5 — 저장소 README(8.3B, 최소 14GB, 4090 75초 증류 모델, SSTA)
- Tencent-Hunyuan/HunyuanVideo-1.5 — LICENSE (Tencent Hunyuan Community License, Territory 정의)
- Tencent-Hunyuan/HunyuanVideo — LICENSE.txt (동일한 지역 제외 조항)
- tencent/HunyuanVideo-1.5 — Hugging Face 모델 카드(license: other, tencent-hunyuan-community)
- Tencent Hy3 — 같은 회사가 언어 모델은 Apache 2.0으로 공개한 사례(관련 글)
- SOTA 비디오 생성 모델 분석 — DiT·3D VAE 아키텍처(관련 글)
Making Video from a Single Image — Kling·Veo·Sora vs Wan·HunyuanVideo, What to Pick and When
- Introduction — The Answer, Up Front
- What a Hosted API Actually Costs Per Second
- Why Kling Has No "Per-Second Price" — and the Truth About the Numbers Floating Around
- The Constraints That Actually Bite When You Feed an Image
- Do the Open Weights Actually Run on My GPU?
- Licensing — If You're Reading from South Korea, This Section Changes the Conclusion
- What You Can and Can't Measure from a Demo Reel
- So, What Do You Pick?
- Closing
- References
Introduction — The Answer, Up Front
"I want to feed in a single image, write a prompt, and get a video — what should I use?" As of July 2026, the short answer to that question is this.
If you are going to run open weights in South Korea, it's Wan2.2. Not because of performance, because of the license. The license document for the HunyuanVideo family states, from its very first lines, that it does not apply in the European Union, the United Kingdom, and South Korea. Wan2.2 is Apache 2.0 for both code and weights. If you are going to use a hosted API, the first fork is whether you need audio — Veo 3.1's price sheet itself is "audio included," while Kling charges exactly 2x when you turn audio on. And if your input image has a human face, Sora drops out of the running. OpenAI's docs state directly that input images with human faces are currently rejected.
This post traces where those three sentences come from, following each vendor's primary documentation. The architecture story (DiT, 3D VAE, flow matching) was already covered in an analysis of SOTA video-generation models, so here we look only at the numbers you need to choose one and run it: price, VRAM, generation time, and licensing.
One thing up front. Every number in this post was taken directly from each vendor's official price sheet or docs, and all the source pages are listed at the end. The image quality in vendor demo reels and phrases like "cinematic quality" are not covered here — because they are not measurable values. Why that is, I discuss separately below.
What a Hosted API Actually Costs Per Second
OpenAI and Google have public, flat-rate price sheets. Anyone can view them without logging in, and the price is written per second.
OpenAI's price sheet states "Prices per second" and lists the following.
| Model | Resolution | Portrait/Landscape | Standard (USD/sec) | Batch (USD/sec) |
|---|---|---|---|---|
| sora-2 | 720p | 720x1280 / 1280x720 | 0.10 | 0.05 |
| sora-2-pro | 720p | 720x1280 / 1280x720 | 0.30 | 0.15 |
| sora-2-pro | 1024p | 1024x1792 / 1792x1024 | 0.50 | 0.25 |
| sora-2-pro | 1080p | 1080x1920 / 1920x1080 | 0.70 | 0.35 |
Use the Batch API and it is exactly half. For a pipeline that does not need a real-time response, that is a 50% discount you get essentially for free.
Google's Gemini API price sheet lists Veo like this. The column header of the table is "Paid Tier, per second in USD," and the important part is that each row is named "video with audio price (default)" — Veo's price includes audio.
| Model | Resolution | USD/sec | Note |
|---|---|---|---|
| Veo 3.1 Standard | 720p / 1080p | 0.40 | audio included |
| Veo 3.1 Standard | 4k | 0.60 | audio included |
| Veo 3.1 Fast | 720p | 0.10 | audio included |
| Veo 3.1 Fast | 1080p | 0.12 | audio included |
| Veo 3.1 Fast | 4k | 0.30 | audio included |
| Veo 3.1 Lite | 720p | 0.05 | audio included, no 4k |
| Veo 3.1 Lite | 1080p | 0.08 | audio included, no 4k |
The three Veo 3.1 variants (veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview) are all preview, and Google attaches the warning "Preview models may change before becoming stable and have more restrictive rate limits." The free tier is "Not available" across every Veo model.
There is one more sentence on the price sheet worth noticing: "You will only be charged if your video is successfully generated." Meaning you are not billed if generation fails. OpenAI's price sheet has no corresponding sentence.
I will also record one odd thing as-is. The same page still lists Veo 3 (veo-3.0-generate-001) and Veo 2 (veo-2.0-generate-001), both carrying the warning "deprecated and will be shut down on June 30, 2026." As of July 17, 2026, the day I am writing this, that date has already passed. Whether the page simply was not updated or the shutdown was postponed cannot be known from the docs alone, so instead of an unverified guess I copy only what the docs say. For new code, Veo 3.1 is the right thing to look at.
Why Kling Has No "Per-Second Price" — and the Truth About the Numbers Floating Around
Investigate Kling and you hit a wall immediately. Search and you get a pile of numbers like "Kling 3.0 from $0.075 per second" and "Kling API at $0.084–$0.168 per second." But the source for all of those numbers is not Kling but third-party API resellers — intermediaries like PiAPI, kie.ai, evolink, and costbench.
I opened Kling's official developer pricing page and checked directly. Two things become clear.
First, the string 0.075 never appears even once on Kling's official pricing page. And the "Kling 3.0" table on that page is not a video table but an image model table (Text to Image / Image to Image / Image Editing). The newest video model listed on Kling's official API price sheet is Kling-V2-6. In other words, "Kling 3.0 video at $0.075 per second" is a price Kling has never announced. It may be a reseller's own rate, but that is not Kling's price.
Second, Kling has no concept of a "per-second price" to begin with. Kling bills by clip — either 5 seconds or 10 seconds. The Kling-V2-6 rows on the official price sheet look like this.
| Spec | Per clip (USD) | Per-second conversion (USD/sec) |
|---|---|---|
| std x 5s x no audio | 0.21 | 0.042 |
| std x 10s x no audio | 0.42 | 0.042 |
| pro x 5s x no audio | 0.35 | 0.07 |
| pro x 10s x no audio | 0.70 | 0.07 |
| pro x 5s x audio (no voice control) | 0.70 | 0.14 |
| pro x 10s x audio (no voice control) | 1.40 | 0.14 |
| pro x 5s x audio x voice control | 0.84 | 0.168 |
| pro x 10s x audio x voice control | 1.68 | 0.168 |
The right-hand "per-second conversion" column is not a value Kling published — it is a value I divided out myself. Kling's price sheet has only the two left columns. This distinction matters because for the per-second conversion to hold, you have to ignore the fact that there are only two points, 5s and 10s. You cannot make a 7-second video on Kling. You make 10 seconds and cut it, and then you pay the 10-second rate. This is a fundamentally different billing model from Sora, which specifies length by the second and bills by the second.
There is one more thing to read off the table. pro x 5s is $0.35 without audio and $0.70 with audio on — exactly 2x. With Kling, audio is optional and doubles the price, whereas with Veo audio is included by default and the price sheet literally reads "video with audio price (default)." If you also need audio, the right comparison is Veo 3.1 Fast 720p ($0.10 per second, audio included) versus Kling-V2-6 pro + audio ($0.14 per second equivalent). If you do not need audio, Kling-V2-6 std ($0.042 per second equivalent) is the cheapest on this table.
There is an exception too. On Kling's price sheet, only Kling-Video-O1 and Motion Control bill by the second.
| Model / Spec | USD |
|---|---|
| Kling-Video-O1 std x 1s (no video input) | 0.084 |
| Kling-Video-O1 std x 1s (with video input) | 0.126 |
| Kling-Video-O1 pro x 1s (no video input) | 0.112 |
| Kling-Video-O1 pro x 1s (with video input) | 0.168 |
| Kling-V2-6 Motion Control std x 1s | 0.07 |
| Kling-V2-6 Motion Control pro x 1s | 0.112 |
The "$0.084–$0.168" floating around in search results appears to come from here. Except that is Kling-Video-O1's price, not Kling's general image-to-video price.
Finally, one structural difference. The Kling API works on a prepaid resource pack model. The price sheet has a separate points column called "Resource Pack Unit Deduction," and actual billing happens by deducting points. Cross-check the points against dollars and, for video models, one point consistently comes out to $0.14 (std 5s = 1.5 points = $0.21, pro 10s + audio + voice control = 12 points = $1.68 — divide either and you get $0.14). The arithmetic lines up. But unlike OpenAI and Google, where you pay after the fact for what you used, you have to buy a pack ahead of time — which, from a procurement standpoint, is a different story.
The Constraints That Actually Bite When You Feed an Image
This is where the image-to-video minefield is. Constraints invisible when you feed only text jump out the moment you feed an image.
Sora: input images with human faces are rejected. Copying the Guardrails section of OpenAI's docs verbatim, it reads:
Only content suitable for audiences under 18 (a setting to bypass this
restriction will be available in the future). Copyrighted characters and
copyrighted music will be rejected. Real people—including public figures—
cannot be generated. Character uploads that depict human likeness are
blocked by default. Input images with faces of humans are currently rejected.
The last sentence is the key one — "Input images with faces of humans are currently rejected." If your use case is animating a photo of a person, Sora is simply out of the running. The word "currently" is attached, so it may be lifted later, but if the docs say "currently rejected," then as of today it is rejected. This is not a failure-rate problem; it is a missing-feature problem.
The rest of Sora's image-related spec is this. Feed an image via input_reference and it becomes the first frame of the video. Length can go up to 20 seconds, and via extension you can stitch on up to 20 seconds at a time, up to 6 times, reaching a total of 120 seconds. The docs do warn about latency, however — "Longer durations and 1080p jobs can take materially longer to complete" — and note that "a single render may take several minutes." For reference, the old remix endpoint is being retired, and the guidance for new integrations is to use edits.
Veo: feed an image and the length may be locked to 8 seconds. Google's docs describe the durationSeconds parameter like this — the value is one of "4", "6", "8", but it must be "8" when you use extension, a reference image, 1080p, or 4k. The very sentence introducing Veo 3.1 reads "Veo 3.1 is a model for generating 8-second videos (720p, 1080p, or 4k) with natively generated audio." In other words, any plan to cheaply pull a short 4-second clip out of Veo collapses the moment you use a reference image. Aspect ratio is only "16:9" (default) and "9:16".
Veo's image input comes in two flavors. One is image-to-video, which in the docs' words is "Veo uses the input image as the initial frame" — the same first-frame approach as Sora. The other is reference images, where Veo 3.1 takes up to 3 to keep the appearance of a person, character, or product consistent. The latter is what runs into the 8-second lock mentioned above.
Veo: the person-generation option changes depending on the input method. The personGeneration parameter allows only allow_all in text-to-video, but only allow_adult in image-to-video, interpolation, and reference images. There is a regional restriction too — the docs say that "In EU, UK, CH, MENA locations," Veo 3 and 3.1 allow only allow_adult. South Korea is not on this list.
Veo: generated videos disappear from the server after 2 days. This is an easy-to-miss operational trap. Verbatim from the docs: "Generated videos are stored on the server for 2 days, after which they are removed. To save a local copy, you must download your video within 2 days of generation." If you do not put a download step in your pipeline, you lose your output. And videos Veo makes carry a SynthID watermark. This is not optional.
To summarize:
| Item | sora-2 / sora-2-pro | Veo 3.1 | Kling-V2-6 |
|---|---|---|---|
| Image input method | input_reference = first frame | first frame + up to 3 reference images | first frame, start/end frames |
| Length | up to 20s, 120s total via extension | 4 / 6 / 8s; 8s fixed for reference/1080p/4k | 5s or 10s only |
| Face in input image | currently rejected | allow_adult (for image-to-video) | couldn't confirm an explicit restriction in the docs |
| Audio | not separately listed on the price sheet | included by default | optional, 2x when on |
| Watermark | couldn't confirm in the docs | SynthID, forced | couldn't confirm in the docs |
| Output retention | couldn't confirm in the docs | deleted after 2 days | couldn't confirm in the docs |
The cells marked "couldn't confirm" do not mean the feature is absent; they mean I did not find that item within the range of official docs I checked. Writing something absent as present is a wrong answer, and so is pretending to know what you don't — so I leave the blanks blank.
Do the Open Weights Actually Run on My GPU?
Now the other side. Here there are exactly two questions — does it fit on my card, and how long does it take.
Wan2.2 (Alibaba). The numbers the repository README gives are these.
| Model | Use | Single-GPU VRAM | Note |
|---|---|---|---|
| TI2V-5B | T2V + I2V unified, 720P | at least 24GB (e.g., RTX 4090) | requires --offload_model True --convert_model_dtype --t5_cpu |
| I2V-A14B | Image-to-Video, 480P/720P | at least 80GB | --offload_model True --convert_model_dtype |
| T2V-A14B | Text-to-Video, 480P/720P | at least 80GB | same |
| S2V-14B | Speech-to-Video | at least 80GB | same |
What this table says is clear. The only one you can actually run on a consumer card is TI2V-5B. The A14B family demands 80GB on a single GPU, so on an RTX 4090 (24GB) you cannot even start. And even TI2V-5B's 24GB is the number with all three offloading options turned on. The README advises that with 80GB or more you should drop those options to raise speed.
What about speed? Copying the README's sentence verbatim: "Without specific optimization, TI2V-5B can generate a 5-second 720P video in under 9 minutes on a single consumer-grade GPU." Nine minutes for a 5-second video. This is Alibaba's own measurement, and it carries the condition "without specific optimization." Which card is not specified in this sentence (it only says "consumer-grade GPU").
An honest note here. The Wan2.2 README has a "Computational Efficiency on Different GPUs" table with per-GPU generation times and peak memory, but that table is posted as an image file. It is a PNG, not text. So I did not quote the numbers in that table here. Better to leave them out than to transcribe machine-unreadable values and get them wrong. Instead I used only the "9 minutes," "24GB," and "80GB" written as text in the README body.
On structure, just briefly: A14B is an MoE — split into a high-noise expert and a low-noise expert, each about 14B, 27B combined, with 14B active per step. TI2V-5B is a plain dense model, but the Wan2.2-VAE has a compression ratio of 4x16x16, reaching a total compression of 64, and with patchification added it becomes 4x32x32. That compression ratio is the basis for being able to pull 720P at 24fps.
HunyuanVideo-1.5 (Tencent). This is the newest line, released November 21, 2025. The repository README's numbers are these.
- 8.3B parameters — DiT + 3D causal VAE, 16x spatial / 4x temporal compression
- Minimum GPU memory 14GB (measured with model offloading on). The README notes this value assumes offloading, and says that if you have enough memory you should turn offloading off to raise speed
- Resolutions are 480p and 720p; 1080p is upscaled by a separate super-resolution network
- Default length is
--video_length121 frames, and since the example code saves at 24fps, that is about 5 seconds - The 480p I2V step-distilled model released December 5, 2025 runs in 8–12 steps, and by Tencent's measurement "On RTX 4090, end-to-end generation time is reduced by 75%, and a single RTX 4090 can generate videos within 75 seconds"
The last line stands out. 75 seconds on an RTX 4090. You will want to compare that to Wan2.2 TI2V-5B's "9 minutes," but you have to stop right here. The two numbers are not comparable. Hunyuan's 75 seconds is measured at 480p, with the step-distilled model (8–12 steps), on a specified RTX 4090. Wan's 9 minutes is at 720p, no distillation, on a card described only as "consumer-grade GPU." The resolution differs, the step count differs, and whether the card is named differs. Each measured a value on its own repo under conditions favorable to itself, and no common benchmark exists. Putting the two vendors' own measurements side by side and writing "Hunyuan is 7x faster" is just wrong arithmetic.
The Hunyuan README also makes a claim about SSTA (Selective and Sliding Tile Attention) — a 1.87x end-to-end speedup over FlashAttention-3 on 10-second 720p synthesis. This is a comparison between attention implementations, and it is the authors' own measurement. It is not a comparison against another model.
Licensing — If You're Reading from South Korea, This Section Changes the Conclusion
I've dragged the performance discussion this far, but for a South Korean user this one section matters more than all the tables above.
HunyuanVideo, HunyuanVideo-I2V, HunyuanVideo-1.5 — the license documents of all three repositories begin with the same sentence.
TENCENT HUNYUAN COMMUNITY LICENSE AGREEMENT
Tencent HunyuanVideo 1.5 Release Date: November 21, 2025
THIS LICENSE AGREEMENT DOES NOT APPLY IN THE EUROPEAN UNION, UNITED
KINGDOM AND SOUTH KOREA AND IS EXPRESSLY LIMITED TO THE TERRITORY, AS
DEFINED BELOW.
And the definitions section defines "Territory" like this.
l. "Territory" shall mean the worldwide territory, excluding the territory
of the European Union, United Kingdom and South Korea.
That is, South Korea is left out of the territory the license permits. And clause 5 (c) nails down the meaning of this exclusion.
c. You must not use, reproduce, modify, distribute, or display the Tencent
Hunyuan Works, Output or results of the Tencent Hunyuan Works outside
the Territory. Any such use outside the Territory is unlicensed and
unauthorized under this Agreement.
The part to read is "Output or results." It is written that not only downloading and using the weights but also the videos you produce with them cannot be used outside the permitted territory. On top of that, an operator exceeding 100 million monthly active users must request a separate license from Tencent (and Tencent may refuse at its discretion), and the governing law is that of the Hong Kong Special Administrative Region.
By contrast, Wan2.2 is Apache 2.0. This is confirmed independently in three places.
| Verification path | Wan2.2 | HunyuanVideo-1.5 |
|---|---|---|
| Repository license file | full Apache License 2.0 | Tencent Hunyuan Community License |
| GitHub API license detection | Apache-2.0 | NOASSERTION (not a standard license) |
| Hugging Face model card | license: apache-2.0 | license: other, license_name: tencent-hunyuan-community |
The Hugging Face check matters for a reason. The code license and the weights license can differ. The repository being Apache while the weights carry separate terms is common. Wan2.2's Wan-AI/Wan2.2-TI2V-5B and Wan-AI/Wan2.2-I2V-A14B model cards are both apache-2.0, so it does not have that trap.
There is an interesting contrast here. The same Tencent used Apache 2.0 when it released Hy3 — with no regional restriction and no field-of-use restriction. In other words, this is not a "because it's a Chinese vendor" problem but a per-model-line policy problem. The same company releases its language model under Apache and puts a regional restriction on its video model. This is why you cannot guess a license from the vendor's name alone.
Two things I'll make clear. First, I am not a lawyer and this is not legal advice. The quotations above are the original text of documents Tencent posted to its own repositories, and all I did was find them and copy them. Second, how this clause is actually interpreted and enforced in South Korea cannot be known from the docs alone. What I can say stops exactly here — Tencent's distributed license document explicitly excludes South Korea from the permitted territory, and if your company plans to use this model, it is not a sentence to wave past without legal review. An individual experimenting locally and putting it into a product are different matters, and this post cannot make that judgment for you.
What You Can and Can't Measure from a Demo Reel
Time to explain why this post has no image-quality comparison.
Each vendor's project page has a slick demo video. Wan2.2 touts "cinematic-level aesthetics," Kling calls its own model the "master" tier, and HunyuanVideo-1.5 writes "state-of-the-art among open-source models." What can be said honestly about these phrases is this — that demo reel is marketing, and you cannot get a measurable value out of it. It is a result from a prompt the vendor chose, a seed the vendor chose, and an unknown number of runs the vendor picked from. Failed generations do not make it into the reel.
So the values this post did and did not cover split like this.
Measurable and verifiable — price per second (written as a number on the vendor price sheet), maximum and permitted length values (API parameter specs), VRAM floor (written as a number in the README), license clauses (original document text), output retention period (stated in the docs), presence of a watermark (stated in the docs). These are not up for debate. Open the page and it either says so or it does not.
Vendor's own measurements, to be read together with their conditions — Wan's "9 minutes," Hunyuan's "75 seconds" and "1.87x." All are values each measured on its own repo under its own conditions, and because the conditions differ, no cross-comparison holds. This is why this post places these numbers side by side but does no subtraction or division on them.
Not measurable at all — "which model has better image quality." Every answer the vendor docs give to that question is self-promotion, and no independent benchmark comparing the five models under common conditions exists within the range I checked. So this post does not answer that question. Writing "no such figures have ever been published" is more accurate than inventing an answer.
The practical conclusion this implies is simple. You have to test image quality yourself. With your actual input images and your actual prompts. Fortunately this can be done cheaply — one 5-second video at sora-2 720p is $0.50, and Kling-V2-6 std 5 seconds is $0.21. Run ten of each and it is the price of a cup of coffee. Licensing and VRAM, by contrast, are not things you can find out by testing, which is why this post spent its page count on those.
So, What Do You Pick?
Boiled down to decision rules, it goes like this. Just come down them in order.
1. Is there a human face in the input image? If yes, Sora is out. The docs say it is currently rejected. Go with Veo, setting personGeneration to allow_adult.
2. Are you putting open weights into a product in South Korea? If so, Wan2.2. The HunyuanVideo family's license document excludes South Korea from the permitted territory, and it states that the exclusion reaches the output too. Apache 2.0's Wan2.2 does not have that problem.
3. Is your GPU 24GB or 80GB? With 24GB (RTX 4090 class), your options are effectively Wan2.2 TI2V-5B (720p, 9 minutes for 5 seconds) or HunyuanVideo-1.5 (min 14GB, 75 seconds on a 4090 with the 480p distilled model). Wan's A14B family starts at 80GB. If your GPU can't run open weights at all, item 2 is automatically moot.
4. Do you need audio? If you do, Veo 3.1 is the simplest — it is included in the price, and Fast 720p is $0.10 per second. Kling charges 2x when you turn audio on ($0.35 → $0.70 for pro 5 seconds).
5. Do you need free choice of length? If you need arbitrary lengths like 7 or 13 seconds, it's Sora (specify by the second, up to 20 seconds, 120 seconds via extension). Veo is only 4/6/8 seconds and locks to 8 seconds if you use a reference image. Kling has only two points, 5 and 10 seconds.
6. Can you run it in batch? If so, sora-2 batch at $0.05 per second at 720p is, among the per-second billing options, the cheapest along with Veo 3.1 Lite ($0.05 per second, but audio included). That said, if you are fine with 5- or 10-second lengths, a Kling-V2-6 std 5-second clip is $0.21 — lower at a $0.042-per-second conversion. Keep in mind that lining up clip-based billing and per-second billing on a single line was never a valid comparison to begin with.
I'll also note when not to use each.
- Setting up open weights just to make a handful of videos is almost always a loss. Factor in the cost of renting a GPU and the setup time, and up to dozens of 5-second clips, hosted is overwhelmingly cheaper. Open weights earn their keep when volume is large, when you can't send data out, or when you need fine-tuning.
- Don't use Veo without putting a download step in your pipeline. It disappears from the server after 2 days.
- If a watermark is a problem for your use case, drop Veo from the running. SynthID is not an opt-in item.
- Don't quote a reseller's price sheet as Kling's official price. As we saw, numbers that are not on Kling's official page float around search results as if they were fact.
Closing
What actually decides an image-to-video model choice was not the image quality of the demo reel. Open the vendor docs and check directly, and the decisive things are three — the structure of per-second pricing (Sora and Veo bill by the second, Kling by 5- and 10-second clips), the constraints that bite the moment you feed an image (Sora's face rejection, Veo's 8-second lock and 2-day retention and SynthID), and licensing (Wan2.2 is Apache 2.0; the HunyuanVideo family excludes South Korea from the permitted territory).
Of those, the cheapest advice for someone reading from South Korea is still the one in the first paragraph. If you are going to put open weights into a product, open the LICENSE file before you look at benchmarks. That 30-second step beats spending weeks comparing the performance of Wan2.2 and HunyuanVideo-1.5 only to then read the license's first line. And that first line is not the same just because it's a different model from the same company — as when Tencent released its language model under Apache and put a regional restriction on its video model.
The rest — which model has better image quality — cannot be answered for you by anyone, because there is no common benchmark. But that too is something you can check for yourself today with ten of your own images and a few dollars. Licensing and VRAM are not.
References
- OpenAI API Pricing — per-second price table for video-generation models (sora-2, sora-2-pro, standard/batch)
- OpenAI — Video generation guide (input_reference, seconds, extension, Guardrails)
- Gemini API Pricing — Veo 3.1 / Veo 3 / Veo 2 per-second prices and deprecation notice
- Gemini API — Veo docs (durationSeconds, personGeneration, reference images, 2-day retention, SynthID)
- Kling AI Developer — API pricing page (Kling-V2-6, Kling-Video-O1, resource-pack points)
- Wan-Video/Wan2.2 — repository README (TI2V-5B 24GB / A14B 80GB, 5-second 720P in 9 minutes, MoE structure)
- Wan-Video/Wan2.2 — LICENSE.txt (Apache License 2.0)
- Wan-AI/Wan2.2-TI2V-5B — Hugging Face model card (weights license apache-2.0)
- Tencent-Hunyuan/HunyuanVideo-1.5 — repository README (8.3B, min 14GB, RTX 4090 75s distilled model, SSTA)
- Tencent-Hunyuan/HunyuanVideo-1.5 — LICENSE (Tencent Hunyuan Community License, Territory definition)
- Tencent-Hunyuan/HunyuanVideo — LICENSE.txt (same territorial exclusion clause)
- tencent/HunyuanVideo-1.5 — Hugging Face model card (license: other, tencent-hunyuan-community)
- Tencent Hy3 — a case where the same company released its language model under Apache 2.0 (related post)
- Analysis of SOTA Video Generation Models — DiT/3D VAE architecture (related post)