Reference to Video를 사용하면 캐릭터, 객체, 장면의 외형을 고정해 AI가 생성하는 비디오의 시각적 일관성을 유지할 수 있습니다. 모델이 prompt를 올바르게 해석해 주길 바라는 대신, 모델에게 피사체가 어떻게 생겼는지 정확히 알려주는 시각적 앵커, 즉 레퍼런스 이미지를 제공합니다.
이 기능은 Venice Video Studio의 Kling O3 및 Grok Imagine R2V 모델에서 사용 가능합니다. 각 모델 패밀리는 레퍼런스 이미지에 서로 다른 접근 방식을 사용합니다 — 아래 모델별 섹션을 참고하세요.
Reference to Video를 언제 사용하나요
다음이 필요할 때 Reference to Video를 사용하세요:
- 캐릭터 일관성 — 여러 샷에 걸쳐 같은 사람이나 캐릭터
- 제품 정확성 — 원본과 동일하게 보여야 하는 실제 제품
- 장면 연속성 — 여러 생성에 걸친 특정 환경이나 배경
- 멀티 캐릭터 장면 — 섞이지 않고 상호작용하는 여러 명의 구분된 캐릭터
일관성이 중요하지 않은 단순한 text-to-video나 image-to-video에서는 레퍼런스 없이도 표준 모델이 잘 동작합니다.
사용 가능한 모델
| Model | Approach | Best for |
|---|
| Kling O3 Pro R2V | Elements + 장면 이미지 | 정밀한 정체성 제어가 필요한 복잡한 멀티 캐릭터 장면 |
| Kling O3 Standard R2V | Elements + 장면 이미지 | element 기반 장면을 빠르게 반복 |
| Grok Imagine R2V | 평면 레퍼런스 이미지 | 최대 7장의 이미지로 빠른 레퍼런스 기반 생성 |
Kling O3는 Elements(정면 + 레퍼런스 이미지가 있는 캐릭터 정체성 앵커)와 Scene Images를 사용하는 구조화된 접근을 채택합니다. Grok Imagine R2V는 더 단순한 접근으로, 레퍼런스 이미지를 직접 업로드하고 prompt에서 @Image1, @Image2 등으로 참조합니다.
Kling O3 Reference to Video
핵심 개념
Kling O3 Reference to Video는 함께 동작하는 세 가지 시각적 input을 사용합니다:
| Input | Required | Purpose | How to reference in prompt |
|---|
| Elements | 최소 하나의 시각 input* | 캐릭터나 객체의 정체성 고정 | @Element1, @Element2 등 |
| Scene Reference Images | 최소 하나의 시각 input* | 환경, 스타일, 분위기 설정 | @Image1, @Image2 등 |
| Start Frame | 최소 하나의 시각 input* | 비디오의 첫 프레임 제어 | N/A (업로드로 설정) |
| End Frame | 아니오 | 비디오의 마지막 프레임 제어 | N/A (업로드로 설정) |
*start frame, elements, scene reference images 중 적어도 하나는 필요합니다.
Elements
Element는 비디오 전반에 걸쳐 시각적으로 안정적으로 유지하고 싶은 캐릭터나 객체입니다. 각 element는 다음으로 구성됩니다:
- 정면 이미지(Frontal Image) (element당 필수) — 피사체의 선명한 정면 사진. 주요 정체성 앵커입니다. 캐릭터나 제품의 “여권 사진”이라고 생각하세요.
- 레퍼런스 이미지(Reference Images) (1–3장, 선택) — 같은 피사체의 추가 각도(측면, 45도, 후면). 모델이 피사체를 3D 공간에서 이해하는 데 도움이 됩니다. 제공하지 않으면 정면 이미지가 자동으로 레퍼런스로 사용됩니다.
생성당 최대 7개의 element를 추가할 수 있습니다(전체 합계로 제한). prompt에서 @Element1, @Element2 등으로 참조하세요.
Scene Reference Images
Scene 레퍼런스는 액션이 일어나는 “무대”를 정의합니다. 다음에 영향을 줍니다:
- 조명과 색상 팔레트
- 건축과 환경 디테일
- 전반적인 시각 스타일과 분위기
최대 4개의 scene 이미지를 추가할 수 있습니다. prompt에서 @Image1, @Image2 등으로 참조하세요.
제한 사항
모든 input 유형 전체의 이미지 수에 제한이 있습니다:
| Limit | Value |
|---|
| 최소 요구 사항 | 최소 1개의 시각 input(start frame, element, scene 이미지) |
| 전체 합계(first frame + last frame + elements + scene 이미지) | 최대 7 |
| Elements(start/end frame 없음) | 최대 7 |
| Elements(start 또는 end frame 있음) | 최대 3 |
| Scene 레퍼런스 이미지 | 최대 4 |
| Element당 레퍼런스 이미지 | 1–3 |
예시 시나리오:
- 7 elements + 0 scene 이미지 = 7 ✓ (프레임 없음)
- 5 elements + 2 scene 이미지 = 7 ✓ (프레임 없음)
- First frame (1) + 3 elements + 3 scene 이미지 = 7 ✓
- First frame (1) + last frame (1) + 3 elements + 2 scene 이미지 = 7 ✓
- First frame (1) + 4 elements = ✗ (프레임이 있으면 최대 3 elements)
- First frame (1) + last frame (1) + 4 elements = ✗ (프레임이 있으면 최대 3 elements)
각 element는 정면 이미지가 필요합니다. element에 레퍼런스 이미지를 제공하지 않으면 정면 이미지가 자동으로 레퍼런스로 사용됩니다.
멀티 샷 모드
멀티 샷 모드를 사용하면 단일 생성을 여러 장면으로 나눠 각 장면마다 자체 prompt와 길이를 지정할 수 있습니다. Elements와 scene 레퍼런스는 모든 샷에 걸쳐 유지되어 일관성을 보장합니다. 모든 샷의 총 길이는 15초를 초과할 수 없습니다.
단계별 가이드 (Video Studio)
1. Video Studio 열기 및 모델 선택
venice.ai/video로 이동하세요. 왼쪽의 Model Browser에서 Kling O3 Reference to Video 모델 중 하나를 선택하세요:
- Kling O3 Pro R2V — 더 높은 품질, 더 긴 생성 시간(~6분)
- Kling O3 Standard R2V — 더 빠르고 반복에 비용 효율적
비디오를 생성하려면 최소 하나의 시각 input을 제공해야 합니다: start frame, element, scene 레퍼런스 이미지 중 하나. Input 패널에서 Elements 섹션을 보세요. Add Element를 클릭해 시각적으로 일관성을 유지하고 싶은 캐릭터나 객체에 대한 element를 생성하세요.
각 element에 대해:
- Frontal 타일을 클릭해 캐릭터나 객체의 선명한 정면 이미지를 업로드
- 선택적으로 Reference Images 아래 Add를 클릭해 추가 각도(1–3개)를 업로드
추가 캐릭터나 객체에 대해 반복하세요(총 최대 7개 elements, 또는 start/end frame을 사용한다면 3개).
first frame, last frame, elements, scene 이미지의 전체 합계는 7을 초과할 수 없습니다. 자세한 내용은 제한 사항을 참고하세요.
좋은 레퍼런스 이미지: 깨끗한 배경의 잘 조명된 사진을 사용하세요. 가장 강한 정체성 고정을 위해 정면, 측면, 45도 각도 뷰를 제공하세요. 모든 레퍼런스 이미지가 같은 시각 스타일을 공유하도록 하세요(사진 사실주의와 애니메이션을 섞지 마세요).
3. Scene 레퍼런스 이미지 추가(선택)
Elements 섹션 아래에 Scene Reference Images가 있습니다. 원하는 환경을 정의하는 이미지를 업로드하세요 — 특정 장소, 조명 설정, 또는 아트 스타일.
이들은 자동으로 @Image1, @Image2 등으로 태깅됩니다.
4. Start Frame 업로드(선택)
비디오의 정확한 첫 프레임을 제어하고 싶다면 Image input 유형으로 전환해 start frame을 업로드하세요. 선택적으로 end frame도 설정할 수 있습니다.
5. Prompt 작성
prompt 필드에 @ 태그를 사용해 elements와 scene 이미지를 참조하면서 원하는 액션을 설명하세요:
@Element1 walks through the streets of @Image1, looking up at the buildings.
The camera slowly tracks from behind, revealing the city skyline.
멀티 캐릭터 장면의 경우:
@Element1 and @Element2 enter the cafe in @Image1 from opposite sides.
@Element1 waves and walks toward @Element2, who is sitting at a corner table.
6. 설정 구성
Video Settings를 열어 다음을 조정하세요:
| Setting | Options | Default |
|---|
| Duration | 3s – 15s | 5s |
| Aspect Ratio | 16:9, 9:16, 1:1 | 16:9 |
| Generate Audio | On/Off | Off |
오디오 생성은 비디오에 동기화된 네이티브 효과음, 대사, 환경음을 추가합니다. 비용을 약 25% 증가시킵니다.
7. 생성
Generate Video를 클릭하세요. Kling O3는 모델 등급과 길이에 따라 보통 4–6분이 걸립니다. 여러 생성 작업을 큐에 넣고 Video Gallery에서 결과를 둘러볼 수 있습니다.
멀티 샷 스토리보드
내러티브 시퀀스의 경우, 단일 생성 내에서 별도의 장면을 정의하기 위해 멀티 샷 모드를 사용하세요.
- prompt 영역에서 Add Shot을 클릭해 추가 샷 생성
- 각 샷에 별도의 prompt 작성
- 각 샷의 길이를 설정(각각 3–15초, 합계 ≤ 15초)
Elements와 scene 레퍼런스는 모든 샷에서 자동으로 유지됩니다:
Shot 1 (5s): @Element1 stands at the edge of @Image1, looking out at the horizon.
Slow camera push forward.
Shot 2 (5s): Close-up of @Element1's face as they turn toward the camera.
Soft natural lighting, shallow depth of field.
Shot 3 (5s): @Element1 walks away from camera into the distance.
Wide cinematic shot, golden hour lighting.
멀티 샷 전체 길이는 15초를 초과할 수 없습니다. 예를 들어 3개의 5초 샷 = 최대 15초.
Prompt 작성 팁
Prompt 구조화
신뢰성 있는 결과를 위해 다음 패턴을 따르세요:
[@Element 태그가 있는 피사체] + [액션] + [@Image 태그가 있는 환경] + [카메라 움직임] + [조명/스타일]
예시:
@Element1 hops happily across the candy ground of @Image1, stops to look at a
giant lollipop, tilts its head curiously. Cinematic tracking shot, soft warm lighting.
Prompt를 50–150 단어로 유지
너무 짧은 prompt는 디테일이 부족합니다. 너무 긴 prompt는 모순을 만듭니다. 스위트 스팟을 노리세요.
단순한 카메라 언어 사용
모델은 직관적인 카메라 지시에 가장 잘 반응합니다:
| Use | Avoid |
|---|
slow camera push forward | dolly zoom with rack focus transition |
tracking shot from behind | complex handheld parallax movement |
close-up | extreme macro with tilt-shift bokeh |
wide cinematic shot | anamorphic ultra-wide establishing crane shot |
일관된 어휘 사용
한 prompt에서 캐릭터가 “a red jacket”을 입었다고 설명했다면, 다음에는 “crimson coat”로 바꾸지 마세요. 모델은 다른 단어를 다른 의도로 취급합니다.
카메라 지시를 앞에 배치
더 신뢰성 있는 결과를 위해 카메라 방향을 prompt 시작 근처에 두세요:
Cinematic tracking shot of @Element1 walking through @Image1, leaves
blowing in the wind, golden afternoon light.
Kling O3 가격
Kling O3 Reference to Video 모델은 길이 기반 가격을 사용합니다:
| Model | Per second (no audio) | Per second (with audio) |
|---|
| Kling O3 Pro R2V | $0.112 | $0.140 |
| Kling O3 Standard R2V | $0.112 | $0.140 |
예시: 오디오 포함 10초 비디오 = 10 × 0.14=∗∗1.40**
생성 전 정확한 가격은 Video Quote API를 사용하세요.
Kling O3 API 사용
Kling O3 Reference to Video는 Venice API로도 사용할 수 있습니다. 전체 세부 내용은 Video Queue API를 참고하세요.
Python
import requests
response = requests.post(
"https://api.venice.ai/api/v1/video/queue",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "kling-o3-pro-reference-to-video",
"prompt": "@Element1 walks through @Image1, camera tracking from behind",
"duration": "8",
"aspect_ratio": "16:9",
"audio": True,
"elements": [
{
"frontal_image_url": "https://example.com/character-front.jpg",
"reference_image_urls": [
"https://example.com/character-side.jpg",
"https://example.com/character-angle.jpg"
]
}
],
"image_urls": [
"https://example.com/scene-background.jpg"
]
}
)
queue_id = response.json()["id"]
Node.js
const response = await fetch("https://api.venice.ai/api/v1/video/queue", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-o3-pro-reference-to-video",
prompt: "@Element1 walks through @Image1, camera tracking from behind",
duration: "8",
aspect_ratio: "16:9",
audio: true,
elements: [
{
frontal_image_url: "https://example.com/character-front.jpg",
reference_image_urls: [
"https://example.com/character-side.jpg",
"https://example.com/character-angle.jpg"
]
}
],
image_urls: [
"https://example.com/scene-background.jpg"
]
})
});
const { id: queueId } = await response.json();
cURL
curl https://api.venice.ai/api/v1/video/queue \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-o3-pro-reference-to-video",
"prompt": "@Element1 walks through @Image1, camera tracking from behind",
"duration": "8",
"aspect_ratio": "16:9",
"audio": true,
"elements": [
{
"frontal_image_url": "https://example.com/character-front.jpg",
"reference_image_urls": [
"https://example.com/character-side.jpg",
"https://example.com/character-angle.jpg"
]
}
],
"image_urls": [
"https://example.com/scene-background.jpg"
]
}'
Element 스키마
elements 배열의 각 element는 다음을 받습니다:
| Field | Type | Required | Description |
|---|
frontal_image_url | string | 예 | 선명한 정면 이미지 URL |
reference_image_urls | string[] | 아니오 | 추가 각도 URL(1–3개). 생략하면 정면 이미지가 레퍼런스로 사용됩니다. |
API는 비디오 기반 element를 위한 video_url도 지원하지만, 현재 Video Studio UI에서는 사용할 수 없습니다.
Kling O3 문제 해결
| Problem | Likely cause | Fix |
|---|
| Generate 버튼이 비활성화 | 시각적 input이 없음 | 최소 하나의 시각 input 추가: start frame, element, 또는 scene 레퍼런스 이미지 |
| ”Number of images exceeds the limit” 에러 | 결합된 input이 너무 많음 | first frame + last frame + elements + scene 이미지 합계가 ≤ 7이어야 함 |
| 샷 사이에 캐릭터 얼굴이 변함 | 다르거나 누락된 정면 이미지 | 같은 정면 이미지를 일관되게 사용, 설명을 동일하게 유지 |
| 카메라 움직임이 무작위로 느껴짐 | 여러 개 또는 상충하는 카메라 지시 | 단일 카메라 지시 사용, prompt 앞쪽에 배치 |
| 생성 사이에 스타일이 바뀜 | 일관성 없는 scene 레퍼런스 또는 혼합 스타일 | 같은 scene 이미지 재사용, 스타일 키워드를 일관되게 유지 |
| 멀티 캐릭터 장면에서 element가 섞임 | 모호한 공간 지시 | 각 element의 위치를 명시: “foreground left”, “entering from right” |
| 배경이 왜곡되어 보임 | 어수선하거나 복잡한 scene 레퍼런스 이미지 | 깨끗하고 고품질의 scene 레퍼런스 이미지 사용 |
| 모션이 부자연스러움 | 하나의 prompt에 너무 많은 액션 | 액션 단순화, 더 짧은 길이 사용, 샷당 하나의 액션 |
더 긴 길이로 가기 전에 3–5초 클립으로 테스트하세요. 짧은 클립은 일관성을 더 잘 유지하고 더 빠른 반복을 가능하게 합니다.
Grok Imagine Reference to Video
Grok Imagine R2V는 Kling O3보다 더 단순한 접근을 사용합니다. 정면/레퍼런스 이미지로 분리된 구조화된 Elements 대신, 평면 레퍼런스 이미지를 업로드해 prompt에서 @Image1, @Image2 등으로 직접 참조합니다. 모델은 해당 피사체들을 생성된 비디오에 통합합니다.
동작 방식
- 1–7개의 레퍼런스 이미지 업로드 — 비디오에 원하는 캐릭터, 객체, 장면의 사진
- 비디오를 설명하는 prompt를 작성하고,
@Image1, @Image2 등으로 특정 이미지를 참조
- 모델이 그 레퍼런스들을 통합한 비디오를 생성
prompt에 @Image 태그를 포함하지 않으면 업로드된 모든 이미지가 자동으로 참조됩니다.
| Setting | Options | Default |
|---|
| Aspect Ratio | 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16 | 16:9 |
| Resolution | 480p, 720p | 480p |
| Duration | 5s, 8s, 10s | 8s |
Grok Imagine R2V는 오디오 생성, 멀티 샷 모드, Elements를 지원하지 않습니다. 그러한 기능에는 Kling O3 R2V를 사용하세요.
단계별 가이드 (Video Studio)
1. 모델 선택
venice.ai/video로 이동하세요. Model Browser에서 Grok Imagine R2V를 선택하세요.
2. 레퍼런스 이미지 업로드
input 툴바에서 References(또는 + 메뉴 사용)를 클릭해 레퍼런스 이미지 패널을 여세요. 비디오에 원하는 캐릭터, 객체, 장면의 1–7개 이미지를 업로드하세요.
각 이미지는 업로드한 순서(왼쪽에서 오른쪽)대로 자동으로 @Image1, @Image2 등으로 태깅됩니다.
3. Prompt 작성
원하는 비디오를 설명하세요. @Image 태그를 사용해 특정 이미지를 참조하세요:
@Image1 and @Image2 walking together through a sunlit park,
camera slowly tracking alongside them, warm afternoon light.
prompt 필드에서 @를 입력하면 사용 가능한 이미지 레퍼런스의 자동완성 메뉴를 볼 수 있습니다.
@Image 태그를 완전히 생략하면 백엔드가 자동으로 모든 업로드된 이미지에 대한 참조를 prepend합니다. 어떤 이미지를 어디에 쓸지 명시하지 않고 모든 이미지를 사용하고 싶을 때 유용합니다.
4. 설정 구성 및 생성
Video Settings를 열어 종횡비, 해상도, 길이를 조정하세요. Generate Video를 클릭하세요.
Grok Imagine R2V 가격
Grok Imagine R2V는 길이 및 해상도 기반 가격을 사용합니다:
| Resolution | Per second |
|---|
| 480p | ~$0.063 |
| 720p | ~$0.088 |
예시: 480p의 8초 비디오 = 8 × 0.063=∗∗약0.50**
Grok Imagine은 비디오가 거부되더라도 생성된 비디오에 대해 콘텐츠 모더레이션 수수료를 부과합니다. 이는 생성 전에 표시되는 크레딧 비용에 반영됩니다.
Grok Imagine R2V API 사용
Python
import requests
response = requests.post(
"https://api.venice.ai/api/v1/video/queue",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "grok-imagine-reference-to-video",
"prompt": "@Image1 and @Image2 walking through a park, cinematic tracking shot",
"duration": "8",
"aspect_ratio": "16:9",
"referenceImageUrls": [
"https://example.com/character-a.jpg",
"https://example.com/character-b.jpg"
]
}
)
queue_id = response.json()["id"]
Node.js
const response = await fetch("https://api.venice.ai/api/v1/video/queue", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "grok-imagine-reference-to-video",
prompt: "@Image1 and @Image2 walking through a park, cinematic tracking shot",
duration: "8",
aspect_ratio: "16:9",
referenceImageUrls: [
"https://example.com/character-a.jpg",
"https://example.com/character-b.jpg"
]
})
});
const { id: queueId } = await response.json();
cURL
curl https://api.venice.ai/api/v1/video/queue \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-reference-to-video",
"prompt": "@Image1 and @Image2 walking through a park, cinematic tracking shot",
"duration": "8",
"aspect_ratio": "16:9",
"referenceImageUrls": [
"https://example.com/character-a.jpg",
"https://example.com/character-b.jpg"
]
}'
API 파라미터
| Field | Type | Required | Description |
|---|
model | string | 예 | grok-imagine-reference-to-video여야 함 |
prompt | string | 예 | 선택적 @Image1, @Image2 참조가 있는 텍스트 prompt |
referenceImageUrls | string[] | 예 | 1–7개의 이미지 URL 또는 data URL |
duration | string | 아니오 | "5", "8"(기본), 또는 "10" |
aspect_ratio | string | 아니오 | 예: "16:9"(기본), "9:16", "1:1" |
resolution | string | 아니오 | "480p"(기본) 또는 "720p" |
Grok Imagine R2V는 elements, image_urls, imageUrl 필드를 사용하지 않습니다. 모든 레퍼런스 이미지는 referenceImageUrls를 통해 전달됩니다.
Grok Imagine R2V 문제 해결
| Problem | Likely cause | Fix |
|---|
| Generate 버튼이 비활성화 | 레퍼런스 이미지가 업로드되지 않음 | 최소 1개의 레퍼런스 이미지 업로드 |
| ”At least one reference image is required” 에러 | referenceImageUrls가 비어있거나 누락 | referenceImageUrls에 최소 하나의 이미지 URL 제공 |
@Image 태그와 잘못된 이미지가 연결됨 | 이미지 순서가 태그와 맞지 않음 | @Image1은 업로드 순서(왼쪽에서 오른쪽)에서 첫 번째 이미지에 해당합니다. 필요하면 업로드 재정렬. |
| 비디오에 피사체가 나타나지 않음 | 명시적 태그 없이 레퍼런스가 너무 많음 | prompt에서 사용할 이미지를 명시하기 위해 @Image 태그 사용 |
| 출력 품질이 낮음 | 480p 해상도 사용 중 | 더 높은 품질을 위해 720p 시도(비용 증가) |
| 비디오가 너무 짧음 | 기본 길이가 8초 | 더 긴 비디오를 위해 길이를 "10"으로 설정 |