참조 이미지를 사용하여 동영상 생성 안내

Vertex AI 기반 Veo를 사용하면 veo-2.0-generate-exp와 함께 참조 이미지를 사용하여 생성된 동영상의 콘텐츠와 예술적 스타일을 안내할 수 있습니다. Veo에서 참조 이미지를 사용할 때 다음 중 하나를 선택할 수 있습니다.

  • 애셋 이미지: 단일 인물, 캐릭터 또는 제품의 이미지를 최대 3개 제공합니다. Veo는 출력 동영상에서 피사체의 모습을 유지합니다.

  • 스타일 이미지: 하나의 스타일 이미지를 제공합니다. Veo가 업로드된 이미지의 스타일을 출력 동영상에 적용합니다.

동영상 생성에 효과적인 텍스트 프롬프트 작성에 대한 자세한 내용은 Veo 프롬프트 가이드를 참조하세요.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. 환경에 대한 인증을 설정하세요.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.

    주제 이미지를 사용하여 동영상 생성

    다음 단계를 따르세요.

    콘솔

    1. Google Cloud 콘솔에서 Vertex AI Studio > Media Studio 페이지로 이동합니다.

      Media Studio

    2. Veo를 클릭합니다.

    3. 설정 창에서 다음 설정을 선택합니다.

      • 모델: veo-2.0-generate-exp를 선택합니다.

      • 결과 수: 슬라이더를 조정하거나 1~4 사이의 값을 입력합니다.

    4. 참조 섹션에서 제목을 선택하고 > 추가를 클릭합니다.

    5. 컴퓨터에서 업로드할 이미지를 1~3개 선택합니다.

    6. 선택사항: 안전 섹션에서 다음 인물 생성 설정 중 하나를 선택합니다.

      • 허용(성인만 해당): 기본값입니다. 성인이나 성인 얼굴만 생성합니다. 청소년 또는 아동이나 청소년 또는 아동의 인물을 생성하지 마세요.

      • 허용 안함: 사람이나 얼굴을 생성하지 않습니다.

    7. 선택사항: 동영상을 무작위로 생성하려면 고급 옵션 섹션에서 시드 값을 입력합니다.

    8. 프롬프트 작성 상자에 생성할 동영상을 설명하는 텍스트 프롬프트를 입력합니다.

    9. 생성을 클릭합니다.

    REST

    환경을 설정하면 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다. 다음 샘플은 요청을 게시자 모델 엔드포인트에 전송합니다.

    Veo API에 대한 자세한 내용은 Vertex AI 기반 Veo API를 참조하세요.

    1. 다음 명령어를 사용하여 동영상 생성 요청을 전송합니다. 이 요청은 장기 실행 작업을 시작하고 지정한 Cloud Storage 버킷에 출력을 저장합니다.

      요청 데이터를 사용하기 전에 다음을 바꿉니다.

      • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
      • TEXT_PROMPT: 동영상 생성을 안내하는 데 사용되는 텍스트 프롬프트입니다.
      • BASE64_ENCODED_IMAGE: base64 바이트로 인코딩된 대상 이미지입니다. 이 필드와 mimeType를 반복하여 최대 3개의 피사체 이미지를 지정할 수 있습니다.
      • IMAGE_MIME_TYPE: 입력 이미지의 MIME 유형입니다. 다음 중 하나만 해당해야 합니다.

        • image/jpeg
        • image/png

        이 필드와 bytesBase64Encoded를 반복하여 최대 3개의 피사체 이미지를 지정할 수 있습니다.

      • OUTPUT_STORAGE_URI: 선택사항: 출력 동영상을 저장할 Cloud Storage 버킷입니다. 제공되지 않으면 Base64 바이트로 인코딩된 동영상이 응답으로 반환됩니다. 예를 들면 gs://video-bucket/output/입니다.
      • RESPONSE_COUNT: 생성할 동영상 파일의 수입니다. 허용되는 정수 값: 1~4.
      • 추가 선택적 파라미터

        사용 사례에 따라 다음 선택적 변수를 사용하세요. "parameters": {} 객체에 다음 파라미터 중 일부 또는 전부를 추가합니다.

        "parameters": {
          "aspectRatio": "ASPECT_RATIO",
          "negativePrompt": "NEGATIVE_PROMPT",
          "personGeneration": "PERSON_SAFETY_SETTING",
          // "resolution": RESOLUTION, // Veo 3 models only
          "sampleCount": RESPONSE_COUNT,
          "seed": SEED_NUMBER
        }
        • ASPECT_RATIO: 선택사항: 생성된 동영상의 가로세로 비율을 설명하는 문자열 값입니다. 다음 값을 사용할 수 있습니다.
          • 가로 모드용 "16:9"
          • 세로 모드용 "9:16"

          기본값은 "16:9"입니다.

        • NEGATIVE_PROMPT: 선택사항: 모델이 생성하지 않도록 하려는 콘텐츠를 설명하는 문자열 값입니다.
        • PERSON_SAFETY_SETTING: 선택사항: 사람 또는 얼굴 생성의 안전 설정을 제어하는 문자열 값입니다. 다음 값을 사용할 수 있습니다.
          • "allow_adult": 성인 인물 및 얼굴만 생성합니다.
          • "disallow": 사람이나 얼굴을 생성하지 않습니다.

          기본값은 "allow_adult"입니다.

        • RESOLUTION: 선택사항: 생성된 동영상의 해상도를 제어하는 문자열 값입니다. Veo 3 모델에서만 지원됩니다. 다음 값을 사용할 수 있습니다.
          • "720p"
          • "1080p"

          기본값은 "720p"입니다.

        • RESPONSE_COUNT: 선택사항입니다. 생성할 동영상 수를 설명하는 정수 값입니다. 허용되는 값의 범위는 1~4입니다.
        • SEED_NUMBER: 선택사항입니다. 모델이 확정적 동영상을 생성하는 데 사용하는 uint32 값입니다. 다른 파라미터를 변경하지 않고 요청에 시드 수를 지정하면 모델에서 동일한 동영상을 생성합니다. 허용되는 값의 범위는 0~4294967295입니다.

      HTTP 메서드 및 URL:

      POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning

      JSON 요청 본문:

      {
        "instances": [
          {
            "prompt": "TEXT_PROMPT",
            // The following fields can be repeated for up to three total
            // images.
            "referenceImages": [
              {
                "image": {
                  "bytesBase64Encoded": "BASE64_ENCODED_IMAGE",
                  "mimeType": "IMAGE_MIME_TYPE"
                },
                "referenceType": "asset"
              }
            ]
          }
        ],
        "parameters": {
          "durationSeconds": 8,
          "storageUri": "OUTPUT_STORAGE_URI",
          "sampleCount": RESPONSE_COUNT
        }
      }
      

      요청을 보내려면 다음 옵션 중 하나를 선택합니다.

      curl

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning"

      PowerShell

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning" | Select-Object -Expand Content
      이 요청은 고유한 작업 ID가 포함된 전체 작업 이름을 반환합니다. 이 전체 작업 이름을 사용하여 동영상 생성 요청 상태를 폴링합니다.
      {
        "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
      }
      

    2. (선택사항) 동영상 생성 장기 실행 작업의 상태를 확인합니다.

      요청 데이터를 사용하기 전에 다음을 바꿉니다.

      • PROJECT_ID: Google Cloud 프로젝트 ID
      • MODEL_ID: 사용할 모델 ID.
      • OPERATION_ID: 원래 동영상 생성 요청에 반환된 고유한 작업 ID

      HTTP 메서드 및 URL:

      POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation

      JSON 요청 본문:

      {
        "operationName": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID"
      }
      

      요청을 보내려면 다음 옵션 중 하나를 선택합니다.

      curl

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation"

      PowerShell

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation" | Select-Object -Expand Content
      이 요청은 작업이 아직 실행 중인지 또는 완료되었는지를 비롯하여 작업에 관한 정보를 반환합니다.

    스타일 이미지를 사용하여 동영상 생성

    다음 단계를 따르세요.

    콘솔

    1. Google Cloud 콘솔에서 Vertex AI Studio > Media Studio 페이지로 이동합니다.

      Media Studio

    2. Veo를 클릭합니다.

    3. 설정 창에서 다음 설정을 선택합니다.

      • 모델: veo-2.0-generate-exp를 선택합니다.

      • 결과 수: 슬라이더를 조정하거나 1~4 사이의 값을 입력합니다.

    4. 참조 섹션에서 스타일을 선택하고 > 추가를 클릭합니다.

    5. 컴퓨터에서 업로드할 이미지를 선택합니다.

    6. 선택사항: 안전 섹션에서 다음 인물 생성 설정 중 하나를 선택합니다.

      • 허용(성인만 해당): 기본값입니다. 성인이나 성인 얼굴만 생성합니다. 청소년 또는 아동이나 청소년 또는 아동의 인물을 생성하지 마세요.

      • 허용 안함: 사람이나 얼굴을 생성하지 않습니다.

    7. 선택사항: 동영상을 무작위로 생성하려면 고급 옵션 섹션에서 시드 값을 입력합니다.

    8. 프롬프트 작성 상자에 생성할 동영상을 설명하는 텍스트 프롬프트를 입력합니다.

    9. 생성을 클릭합니다.

    REST

    환경을 설정하면 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다. 다음 샘플은 요청을 게시자 모델 엔드포인트에 전송합니다.

    Veo API에 대한 자세한 내용은 Vertex AI 기반 Veo API를 참조하세요.

    1. 다음 명령어를 사용하여 동영상 생성 요청을 전송합니다. 이 요청은 장기 실행 작업을 시작하고 지정한 Cloud Storage 버킷에 출력을 저장합니다.

      요청 데이터를 사용하기 전에 다음을 바꿉니다.

      • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
      • TEXT_PROMPT: 동영상 생성을 안내하는 데 사용되는 텍스트 프롬프트입니다.
      • BASE64_ENCODED_IMAGE: base64 바이트로 인코딩된 스타일 이미지입니다.
      • IMAGE_MIME_TYPE: 입력 이미지의 MIME 유형입니다. 다음 중 하나만 선택하세요.
        • image/jpeg
        • image/png
      • OUTPUT_STORAGE_URI: 선택사항: 출력 동영상을 저장할 Cloud Storage 버킷입니다. 제공하지 않으면 응답으로 동영상 바이트가 반환됩니다. 예를 들면 gs://video-bucket/output/입니다.
      • RESPONSE_COUNT: 생성할 동영상 파일의 수입니다. 허용되는 정수 값: 1~4.
      • 추가 선택적 파라미터

        사용 사례에 따라 다음 선택적 변수를 사용하세요. "parameters": {} 객체에 다음 파라미터 중 일부 또는 전부를 추가합니다.

        "parameters": {
          "aspectRatio": "ASPECT_RATIO",
          "negativePrompt": "NEGATIVE_PROMPT",
          "personGeneration": "PERSON_SAFETY_SETTING",
          // "resolution": RESOLUTION, // Veo 3 models only
          "sampleCount": RESPONSE_COUNT,
          "seed": SEED_NUMBER
        }
        • ASPECT_RATIO: 선택사항: 생성된 동영상의 가로세로 비율을 설명하는 문자열 값입니다. 다음 값을 사용할 수 있습니다.
          • 가로 모드용 "16:9"
          • 세로 모드용 "9:16"

          기본값은 "16:9"입니다.

        • NEGATIVE_PROMPT: 선택사항: 모델이 생성하지 않도록 하려는 콘텐츠를 설명하는 문자열 값입니다.
        • PERSON_SAFETY_SETTING: 선택사항: 사람 또는 얼굴 생성의 안전 설정을 제어하는 문자열 값입니다. 다음 값을 사용할 수 있습니다.
          • "allow_adult": 성인 인물 및 얼굴만 생성합니다.
          • "disallow": 사람이나 얼굴을 생성하지 않습니다.

          기본값은 "allow_adult"입니다.

        • RESOLUTION: 선택사항: 생성된 동영상의 해상도를 제어하는 문자열 값입니다. Veo 3 모델에서만 지원됩니다. 다음 값을 사용할 수 있습니다.
          • "720p"
          • "1080p"

          기본값은 "720p"입니다.

        • RESPONSE_COUNT: 선택사항입니다. 생성할 동영상 수를 설명하는 정수 값입니다. 허용되는 값의 범위는 1~4입니다.
        • SEED_NUMBER: 선택사항입니다. 모델이 확정적 동영상을 생성하는 데 사용하는 uint32 값입니다. 다른 파라미터를 변경하지 않고 요청에 시드 수를 지정하면 모델에서 동일한 동영상을 생성합니다. 허용되는 값의 범위는 0~4294967295입니다.

      HTTP 메서드 및 URL:

      POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning

      JSON 요청 본문:

      {
        "instances": [
          {
            "prompt": "TEXT_PROMPT",
            "referenceImages": [
              {
                "image": {
                  "bytesBase64Encoded": "BASE64_ENCODED_IMAGE",
                  "mimeType": "IMAGE_MIME_TYPE"
                },
                "referenceType": "style"
              }
            ]
          }
        ],
        "parameters": {
          "durationSeconds": 8,
          "storageUri": "OUTPUT_STORAGE_URI",
          "sampleCount": RESPONSE_COUNT
        }
      }
      

      요청을 보내려면 다음 옵션 중 하나를 선택합니다.

      curl

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning"

      PowerShell

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001:predictLongRunning" | Select-Object -Expand Content
      이 요청은 고유한 작업 ID가 포함된 전체 작업 이름을 반환합니다. 이 전체 작업 이름을 사용하여 동영상 생성 요청 상태를 폴링합니다.
      {
        "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
      }
      

    2. (선택사항) 동영상 생성 장기 실행 작업의 상태를 확인합니다.

      요청 데이터를 사용하기 전에 다음을 바꿉니다.

      • PROJECT_ID: Google Cloud 프로젝트 ID
      • MODEL_ID: 사용할 모델 ID.
      • OPERATION_ID: 원래 동영상 생성 요청에 반환된 고유한 작업 ID

      HTTP 메서드 및 URL:

      POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation

      JSON 요청 본문:

      {
        "operationName": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID"
      }
      

      요청을 보내려면 다음 옵션 중 하나를 선택합니다.

      curl

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation"

      PowerShell

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation" | Select-Object -Expand Content
      이 요청은 작업이 아직 실행 중인지 또는 완료되었는지를 비롯하여 작업에 관한 정보를 반환합니다.

    다음 단계