이 페이지에서는 트랜스코딩된 동영상에 오버레이를 삽입하는 방법을 설명합니다. 오버레이는 출력 동영상 위에 삽입되는 이미지로 구성되며 선택적으로 특정 기간 동안 페이드 인 또는 페이드 아웃될 수 있습니다. 오버레이를 삽입하려면 JobConfig
템플릿에서 overlays
배열을 사용합니다.
지원되는 이미지 파일 형식 목록을 참조하세요.
Cloud Storage에 이미지 업로드
시작하려면 다음을 수행하여 오버레이 이미지를 Cloud Storage 버킷에 업로드합니다.
- Google Cloud Console에서 Cloud Storage 브라우저 페이지로 이동합니다.
Cloud Storage 브라우저 페이지로 이동 - 버킷 이름을 클릭하여 엽니다.
- 파일 업로드를 클릭합니다.
- 로컬 머신에서 업로드할 이미지 파일을 선택합니다.
오버레이 만들기
정적 또는 애니메이션의 두 가지 오버레이 유형을 만들 수 있습니다. 두 유형의 오버레이 모두 정적 이미지를 사용합니다. 정적 오버레이를 표시하거나 숨길 수 있습니다. 애니메이션 오버레이는 이미지의 페이드 인 및 페이드 아웃 애니메이션을 지원합니다.
하나의 출력 동영상에 여러 개의 오버레이를 삽입할 수 있습니다.
정적 오버레이 만들기
image
객체에서 uri
필드를 사용하여 Cloud Storage에서 오버레이 이미지를 지정합니다. resolution
객체에서 x 및 y 값을 0에서 1.0으로 설정합니다. 값이 0이면 해당 크기에 대한 소스 이미지 해상도를 유지하며 값이 1.0이면 출력 동영상의 크기에 맞게 이미지가 확장됩니다. 예를 들어 x: 1
및 y:
0.5
값을 사용하여 오버레이 이미지를 출력 동영상의 전체 너비와 높이의 절반으로 확장합니다.
animations
배열에서 x 및 y 좌표가 0에서 1.0인 animationStatic
객체를 만듭니다. 이러한 좌표는 출력 동영상의 해상도를 기준으로 합니다. x: 0
및 y: 0
값을 사용하여 오버레이의 왼쪽 상단 모서리를 출력 동영상의 왼쪽 상단 모서리에 배치합니다. startTimeOffset
필드를 사용하여 출력 동영상 타임라인에 오버레이가 표시되는 시간을 지정합니다.
정적 애니메이션을 삭제하려면 animationEnd
객체를 만듭니다. startTimeOffset
필드를 사용하여 출력 동영상 타임라인에서 애니메이션을 종료해야 하는 시점(즉, 오버레이가 사라지는 시점)을 지정합니다.
이 구성을 작업 템플릿에 추가하거나 임시 작업 구성에 포함할 수 있습니다.
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID
: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.LOCATION
: 작업이 실행될 위치입니다. 지원되는 리전 중 하나를 사용합니다.위치 표시us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.STORAGE_INPUT_VIDEO
: Cloud Storage 버킷에 있는 트랜스코딩하는 동영상의 이름입니다(예:my-vid.mp4
). 이 필드는 버킷에서 만든 폴더(예:input/my-vid.mp4
)를 고려해야 합니다.STORAGE_INPUT_OVERLAY
: 오버레이에 사용 중인 Cloud Storage 버킷의 이미지 이름(예:my-overlay.png
)입니다. 이 필드는 버킷에서 만든 폴더(예:input/my-overlay.png
)를 고려해야 합니다.STORAGE_OUTPUT_FOLDER
: 인코딩된 동영상 출력을 저장할 Cloud Storage 폴더 이름입니다.
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- 작업 필드를 정의하는
request.json
파일을 만듭니다.gcloud
명령어를 다음과 같이 바꿉니다.- STORAGE_BUCKET_NAME: 만든 Cloud Storage 버킷의 이름입니다.
- STORAGE_INPUT_VIDEO: Cloud Storage 버킷에 있는 트랜스코딩하는 동영상의 이름입니다(예:
my-vid.mp4
). 이 필드는 버킷에서 만든 폴더(예:input/my-vid.mp4
)를 고려해야 합니다. - STORAGE_INPUT_OVERLAY: Cloud Storage 버킷에서 오버레이에 사용 중인 이미지 파일의 이름(예:
my-overlay.png
)입니다. 이 필드는 버킷에서 만든 폴더(예:input/my-overlay.png
)를 고려해야 합니다. - LOCATION: 작업이 실행될 위치입니다. 다음 목록의 위치를 사용합니다.
위치 표시
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER: 인코딩된 동영상 출력을 저장할 Cloud Storage 폴더 이름입니다.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- 다음 명령어를 실행합니다.
다음과 비슷한 응답이 표시됩니다.gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 Transcoder API C# API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Transcoder API Go API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Transcoder API Java API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Transcoder API Node.js API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 PHP 설정 안내를 따르세요. 자세한 내용은 Transcoder API PHP API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Transcoder API Python API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 Transcoder API Ruby API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
출력 동영상에서 정적 오버레이는 다음과 같은 특성을 갖습니다.
- 타임라인의 시작 부분에 표시되며 10초 동안 표시됩니다.
- 출력 동영상의 전체 너비와 높이의 절반을 확장합니다.
- 출력 동영상의 왼쪽 상단에 있습니다.
이 구성에 대한 샘플 출력 동영상을 참조하세요. 이 동영상은 샘플 오버레이 이미지를 사용합니다.
애니메이션 오버레이 만들기
image
객체에서 uri
필드를 사용하여 Cloud Storage에서 오버레이 이미지를 지정합니다. resolution
객체에서 x 및 y 값을 0에서 1.0으로 설정합니다. 값이 0이면 해당 크기에 대한 소스 이미지 해상도를 유지하며 값이 1.0이면 출력 동영상의 크기에 맞게 이미지가 확장됩니다. 예를 들어 x: 0
및 y: 0
값을 사용하여 오버레이 이미지의 원래 해상도를 유지합니다.
animations
배열에서 fadeType
이 FADE_IN
인 animationFade
객체를 만듭니다. x 및 y 좌표를 0에서 1.0으로 설정합니다. 이러한 좌표는 출력 동영상의 해상도를 기준으로 합니다. x: 0.5
및 y: 0.5
값을 사용하여 오버레이의 왼쪽 상단 모서리를 출력 동영상 중앙에 배치합니다.
startTimeOffset
필드를 사용하여 출력 동영상 타임라인에 오버레이가 표시되기 시작하는 시점을 지정합니다. 오버레이는 endTimeOffset
필드에 설정된 시간까지 전부 표시되어야 합니다.
오버레이를 페이드 아웃하려면 또 다른 animationFade
객체를 만듭니다. 이번에는 fadeType
를 FADE_OUT
로 설정합니다. 이전과 같이 위치 좌표와 시작 및 종료 시간을 입력합니다.
이 구성을 작업 템플릿에 추가하거나 임시 작업 구성에 포함할 수 있습니다.
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID
: IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.LOCATION
: 작업이 실행될 위치입니다. 지원되는 리전 중 하나를 사용합니다.위치 표시us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.STORAGE_INPUT_VIDEO
: Cloud Storage 버킷에 있는 트랜스코딩하는 동영상의 이름입니다(예:my-vid.mp4
). 이 필드는 버킷에서 만든 폴더(예:input/my-vid.mp4
)를 고려해야 합니다.STORAGE_INPUT_OVERLAY
: 오버레이에 사용 중인 Cloud Storage 버킷의 이미지 이름(예:my-overlay.png
)입니다. 이 필드는 버킷에서 만든 폴더(예:input/my-overlay.png
)를 고려해야 합니다.STORAGE_OUTPUT_FOLDER
: 인코딩된 동영상 출력을 저장할 Cloud Storage 폴더 이름입니다.
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- 작업 필드를 정의하는
request.json
파일을 만듭니다.gcloud
명령어를 다음과 같이 바꿉니다.- STORAGE_BUCKET_NAME: 만든 Cloud Storage 버킷의 이름입니다.
- STORAGE_INPUT_VIDEO: Cloud Storage 버킷에 있는 트랜스코딩하는 동영상의 이름입니다(예:
my-vid.mp4
). 이 필드는 버킷에서 만든 폴더(예:input/my-vid.mp4
)를 고려해야 합니다. - STORAGE_INPUT_OVERLAY: Cloud Storage 버킷에서 오버레이에 사용 중인 이미지 파일의 이름(예:
my-overlay.png
)입니다. 이 필드는 버킷에서 만든 폴더(예:input/my-overlay.png
)를 고려해야 합니다. - LOCATION: 작업이 실행될 위치입니다. 다음 목록의 위치를 사용합니다.
위치 표시
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER: 인코딩된 동영상 출력을 저장할 Cloud Storage 폴더 이름입니다.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- 다음 명령어를 실행합니다.
다음과 비슷한 응답이 표시됩니다.gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 Transcoder API C# API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Transcoder API Go API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Transcoder API Java API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Transcoder API Node.js API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 PHP 설정 안내를 따르세요. 자세한 내용은 Transcoder API PHP API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Transcoder API Python API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
이 샘플을 사용해 보기 전에 Transcoder API 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 Transcoder API Ruby API 참고 문서를 확인하세요.
Transcoder API에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
결과 동영상에서 애니메이션 오버레이의 특징은 다음과 같습니다.
- 출력 동영상의 5초 지점에서 페이드 인이 되기 시작합니다. 오버레이의 알파 값은 0에서 시작하여 1.0에서 끝납니다. 오버레이의 왼쪽 상단 모서리가 출력 동영상의 중앙에 나타납니다. 오버레이는 오버레이 이미지의 원래 해상도로 나타납니다.
- 페이드 인 후 2초 동안 오버레이가 표시됩니다.
- 출력 동영상의 12초 지점에서 페이드 아웃되기 시작합니다. 오버레이의 알파 값은 1.0에서 시작하여 0에서 끝납니다.
- 애니메이션은 15초 지점에서 사라집니다.
이 구성에 대한 샘플 출력 동영상을 참조하세요. 이 동영상은 샘플 오버레이 이미지를 사용합니다.