`experimental_generateVideo()`

experimental_generateVideo()

비디오 모델을 사용해 주어진 프롬프트를 기반으로 비디오를 생성하는 실험적 함수예요. 시각 콘텐츠나 애니메이션을 만들거나, 이미지에서 비디오를 생성하는 등 프로그래밍 방식으로 비디오를 만들어야 하는 곳에 쓰면 좋아요. 다만 실험 기능이라 API가 바뀔 수 있다는 점을 유의하세요.

출처: 문서

본문

비디오 생성은 실험적 기능입니다. API는 향후 버전에서 변경될 수 있습니다.

비디오 모델을 사용해 주어진 프롬프트를 기반으로 비디오를 생성합니다.

시각 콘텐츠, 애니메이션 생성이나 이미지에서 비디오를 생성하는 것처럼 비디오를 프로그래밍 방식으로 생성해야 하는 사용 사례에 적합합니다.

import { experimental_generateVideo as generateVideo } from 'ai';
__PROVIDER_IMPORT__;

const { videos } = await generateVideo({
  model: __VIDEO_MODEL__,
  prompt: 'A cat walking on a treadmill',
  aspectRatio: '16:9',
});

console.log(videos);

Import

import { experimental_generateVideo } from "ai"

API 시그니처 (API Signature)

Parameters (매개변수)

<PropertiesTable content={[ { name: 'model', type: 'VideoModelV4', description: '사용할 비디오 모델.', }, { name: 'prompt', type: 'string | GenerateVideoPrompt', description: '비디오를 생성할 입력 프롬프트.', properties: [ { type: 'GenerateVideoPrompt', type: 'object', description: '선택적 입력 이미지가 있는 비디오 생성용 프롬프트 객체', parameters: [ { name: 'image', type: 'DataContent', description: '이미지-투-비디오 생성을 위한 입력 이미지. URL 문자열, base64로 인코딩된 문자열, Uint8Array, ArrayBuffer, 또는 Buffer일 수 있습니다.', }, { name: 'text', type: 'string', description: '텍스트 프롬프트.', }, ], }, ], }, { name: 'n', type: 'number', isOptional: true, description: '생성할 비디오 수. 기본값: 1.', }, { name: 'aspectRatio', type: 'string', isOptional: true, description: "생성할 비디오의 가로세로 비율. 형식: {width}:{height}, 또는 입력 미디어(예: 첫 프레임 이미지 또는 소스 비디오)에서 비율을 상속하려면 'adaptive'. 'adaptive' 지원은 프로바이더별로 다릅니다.", }, { name: 'resolution', type: 'string', isOptional: true, description: '생성할 비디오의 해상도. 형식: {width}x{height}.', }, { name: 'duration', type: 'number', isOptional: true, description: '비디오의 길이(초).', }, { name: 'fps', type: 'number', isOptional: true, description: '비디오의 초당 프레임 수(fps).', }, { name: 'seed', type: 'number', isOptional: true, description: '비디오 생성용 시드(seed).', }, { name: 'frameImages', type: 'Array<{ image: DataContent; frameType: "first_frame" | "last_frame" }>', isOptional: true, description: '첫/마지막 프레임 생성을 위한 역할 태그가 붙은 이미지 입력.', }, { name: 'inputReferences', type: 'Array<DataContent | { data: DataContent; mediaType?: string }>', isOptional: true, description: '참조-투-비디오 생성을 위한 참조 이미지 또는 비디오 입력. URL 기반 비디오 참조에는 명시적 mediaType이 있는 객체 형식을 사용하세요. 프로바이더는 각 참조를 미디어 타입별로 라우팅하며, 참조 종류가 지원되지 않을 때 경고합니다.', }, { name: 'generateAudio', type: 'boolean', isOptional: true, description: '모델이 비디오와 함께 오디오를 생성해야 하는지 여부.', }, { name: 'providerOptions', type: 'ProviderOptions', isOptional: true, description: '추가적인 프로바이더별 옵션.', }, { name: 'maxVideosPerCall', type: 'number', isOptional: true, description: 'API 호출당 생성할 최대 비디오 수. n이 이 값을 초과하면 여러 번의 API 호출이 이루어집니다.', }, { name: 'maxRetries', type: 'number', isOptional: true, description: '최대 재시도 횟수. 기본값: 2.', }, { name: 'abortSignal', type: 'AbortSignal', isOptional: true, description: '호출을 취소할 선택적 abort signal.', }, { name: 'headers', type: 'Record<string, string>', isOptional: true, description: '요청에 대한 추가 HTTP 헤더.', }, { name: 'download', type: '(options: { url: URL; abortSignal?: AbortSignal }) => Promise<{ data: Uint8Array; mediaType: string | undefined }>', isOptional: true, description: 'URL에서 비디오를 가져오는 커스텀 다운로드 함수. ai에서 createDownload()를 사용해 커스텀 크기 제한이 있는 다운로드 함수를 만들 수 있습니다. 예: createDownload({ maxBytes: 50 * 1024 * 1024 }). 기본값: 2 GiB 제한의 내장 다운로드.', }, { name: 'poll', type: 'object', isOptional: true, description: '비동기 시작/상태 흐름을 위한 폴링 구성.', properties: [ { type: 'object', parameters: [ { name: 'intervalMs', type: 'number', isOptional: true, description: '상태 확인 사이의 간격(밀리초). 기본값: 5000.', }, { name: 'timeoutMs', type: 'number', isOptional: true, description: '완료를 기다리는 최대 시간(밀리초). 웹훅 알림을 기다리는 시간을 포함합니다. 기본값: 600000 (10분).', }, { name: 'delay', type: '(delayInMs: number, options?: { abortSignal?: AbortSignal }) => PromiseLike', isOptional: true, description: '폴링 간격과 웹훅 타임아웃을 위한 커스텀 지연 구현. 내구성 있는 워크플로 sleep 함수에 유용합니다. 기본값: 내장 타이머 기반 지연.', }, ], }, ], }, { name: 'webhook', type: '() => PromiseLike<{ url: string; received: PromiseLike }>', isOptional: true, description: '웹훅 알림을 지원하는 프로바이더를 위한 웹훅 팩토리. 제공되고 모델이 웹훅을 지원하면 SDK는 폴링 대신 웹훅을 사용합니다. 팩토리는 프로바이더가 알림을 보낼 URL과 알림이 도착할 때 resolve되는 received 프로미스를 반환해야 합니다. 웹훅 타임아웃과 폴링 폴백을 구성하기 위해 poll 옵션도 제공할 수 있습니다.', }, ]} />

Returns (반환값)

<PropertiesTable content={[ { name: 'video', type: 'GeneratedFile', description: '생성된 첫 번째 비디오.', properties: [ { type: 'GeneratedFile', parameters: [ { name: 'base64', type: 'string', description: 'base64로 인코딩된 문자열 비디오.', }, { name: 'uint8Array', type: 'Uint8Array', description: 'Uint8Array 형태의 비디오.', }, { name: 'mediaType', type: 'string', description: '비디오의 IANA 미디어 타입 (예: video/mp4).', }, ], }, ], }, { name: 'videos', type: 'Array', description: '생성된 모든 비디오.', properties: [ { type: 'GeneratedFile', parameters: [ { name: 'base64', type: 'string', description: 'base64로 인코딩된 문자열 비디오.', }, { name: 'uint8Array', type: 'Uint8Array', description: 'Uint8Array 형태의 비디오.', }, { name: 'mediaType', type: 'string', description: '비디오의 IANA 미디어 타입 (예: video/mp4).', }, ], }, ], }, { name: 'warnings', type: 'Warning[]', description: '모델 프로바이더의 경고(예: 지원되지 않는 설정).', }, { name: 'providerMetadata', type: 'VideoModelProviderMetadata', isOptional: true, description: '프로바이더의 선택적 메타데이터. 바깥 키는 프로바이더 이름입니다. 안쪽 값은 메타데이터입니다. 메타데이터에는 최상위 videos 키와 같은 길이의 배열인 videos 키가 일반적으로 포함됩니다. 세부 내용은 프로바이더에 따라 다릅니다.', }, { name: 'responses', type: 'Array', description: '프로바이더의 응답 메타데이터. 모델에 여러 번 호출했다면 여러 응답이 있을 수 있습니다.', properties: [ { type: 'VideoModelResponseMetadata', parameters: [ { name: 'timestamp', type: 'Date', description: '생성된 응답 시작 시각.', }, { name: 'modelId', type: 'string', description: '응답을 생성하는 데 사용된 응답 모델의 ID.', }, { name: 'headers', type: 'Record<string, string>', isOptional: true, description: '응답 헤더.', }, { name: 'providerMetadata', type: 'VideoModelProviderMetadata', isOptional: true, description: '개별 API 호출에 대한 프로바이더별 메타데이터. 여러 번 호출할 때 호출별 메타데이터에 접근하는 데 유용합니다.', }, ], }, ], }, ]} />

더 알아보기 (Learn more)

전체 사이트맵