이 페이지에서는 여러 입력 동영상을 단일 출력 동영상으로 결합하는 방법을 설명합니다. 입력 동영상의 타임라인을 자를 수도 있습니다.
입력 동영상마다 Input
객체를 inputs
배열에 추가합니다.
각 Input
객체는 연결된 입력 동영상의 키와 URI를 정의합니다. 선택적 PreprocessingConfig
객체를 Input
에 추가하여 입력 동영상에서 자르기, 패딩 또는 다른 사전 처리를 수행할 수 있습니다. inputs
배열은 정렬되지 않습니다. 입력 동영상을 원하는 순서로 추가할 수 있습니다.
입력 동영상을 출력 동영상 타임라인에 추가하려면 EditAtom
객체를 editList
배열에 추가합니다. editList
배열이 정렬됩니다. 이 배열에 지정된 첫 번째 입력이 출력 동영상에서 먼저 사용되고 두 번째 입력이 다음으로 사용됩니다. 키를 기준으로 입력 동영상을 식별합니다.
startTimeOffset
및 endTimeOffset
을(를) 지정하여 입력 동영상을 자를 수도 있습니다. 이 필드는 선택사항입니다. 이 필드를 지정하지 않으면 입력 동영상 전체가 사용됩니다.
다음 구성에서는 입력 동영상 두 개를 단일 출력 동영상으로 연결합니다.
"inputs": [
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2"
}
],
"editList": [
{
"key": "atom1",
"inputs": [
"input1"
],
"startTimeOffset": "START_TIME_OFFSET1s",
"endTimeOffset": "END_TIME_OFFSET1s"
},
{
"key": "atom2",
"inputs": [
"input2"
],
"startTimeOffset": "START_TIME_OFFSET2s",
"endTimeOffset": "END_TIME_OFFSET2s"
}
],
이 구성을 작업 템플릿에 추가하거나 임시 작업 구성에 포함할 수 있습니다.
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_VIDEO1
: 트랜스코딩하는 Cloud Storage 버킷에 있는 동영상의 이름입니다(예:my-vid.mp4
). 이 필드는 버킷에서 만든 모든 폴더를 고려해야 합니다(예:input/my-vid.mp4
). 이 동영상은 출력 동영상 타임라인에서 먼저 사용됩니다.START_TIME_OFFSET1
: 첫 번째 입력 동영상 타임라인을 기준으로 시작 시간(소수부 초 단위)입니다(예:0.0
). 이 필드를 사용하여 동영상 시작 부분에서 콘텐츠를 자릅니다.END_TIME_OFFSET1
: 첫 번째 입력 동영상 타임라인을 기준으로 종료 시간(소수부 초 단위)입니다(예:8.1
). 이 필드를 사용하여 동영상 끝 부분에서 콘텐츠를 자릅니다.STORAGE_INPUT_VIDEO2
: 트랜스코딩하는 Cloud Storage 버킷에 있는 동영상의 이름입니다(예:my-vid.mp4
). 이 필드는 버킷에서 만든 모든 폴더를 고려해야 합니다(예:input/my-vid.mp4
). 이 동영상은 출력 동영상 타임라인에서 두 번째로 사용됩니다.START_TIME_OFFSET2
: 두 번째 입력 동영상 타임라인을 기준으로 시작 시간(소수부 초 단위)입니다(예:3.5
). 이 필드를 사용하여 두 번째 동영상 시작 부분에서 콘텐츠를 자릅니다.END_TIME_OFFSET2
: 두 번째 입력 동영상 타임라인을 기준으로 종료 시간(소수부 초 단위)입니다(예:15
). 이 필드를 사용하여 두 번째 동영상 끝 부분에서 콘텐츠를 자릅니다.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
명령어를 다음과 같이 바꿉니다.- 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_VIDEO1: 트랜스코딩하는 Cloud Storage 버킷에 있는 동영상의 이름입니다(예:
my-vid.mp4
). 이 필드는 버킷에서 만든 모든 폴더를 고려해야 합니다(예:input/my-vid.mp4
). 이 동영상은 출력 동영상 타임라인에서 먼저 사용됩니다. - START_TIME_OFFSET1: 첫 번째 입력 동영상 타임라인을 기준으로 시작 시간(소수부 초 단위)입니다(예:
0.0
). 이 필드를 사용하여 동영상 시작 부분에서 콘텐츠를 자릅니다. - END_TIME_OFFSET1: 첫 번째 입력 동영상 타임라인을 기준으로 종료 시간(소수부 초 단위)입니다(예:
8.1
). 이 필드를 사용하여 동영상 끝 부분에서 콘텐츠를 자릅니다. - STORAGE_INPUT_VIDEO2: 트랜스코딩하는 Cloud Storage 버킷에 있는 동영상의 이름입니다(예:
my-vid.mp4
). 이 필드는 버킷에서 만든 모든 폴더를 고려해야 합니다(예:input/my-vid.mp4
). 이 동영상은 출력 동영상 타임라인에서 두 번째로 사용됩니다. - START_TIME_OFFSET2: 두 번째 입력 동영상 타임라인을 기준으로 시작 시간(소수부 초 단위)입니다(예:
3.5
). 이 필드를 사용하여 두 번째 동영상 시작 부분에서 콘텐츠를 자릅니다. - END_TIME_OFFSET2: 두 번째 입력 동영상 타임라인을 기준으로 종료 시간(소수부 초 단위)입니다(예:
15
). 이 필드를 사용하여 두 번째 동영상 끝 부분에서 콘텐츠를 자릅니다. - STORAGE_OUTPUT_FOLDER: 인코딩된 동영상 출력을 저장할 Cloud Storage 폴더 이름입니다.
{ "config": { "inputs": [ { "key": "input1", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1" }, { "key": "input2", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2" } ], "editList": [ { "key": "atom1", "inputs": [ "input1" ], "startTimeOffset": "START_TIME_OFFSET1s", "endTimeOffset": "END_TIME_OFFSET1s" }, { "key": "atom2", "inputs": [ "input2" ], "startTimeOffset": "START_TIME_OFFSET2s", "endTimeOffset": "END_TIME_OFFSET2s" } ], "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/" } } }
- LOCATION: 작업이 실행될 위치입니다. 지원되는 리전 중 하나를 사용합니다.
- 다음 명령어를 실행합니다.
다음과 비슷한 응답이 표시됩니다.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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
예
다음 샘플 동영상을 살펴보세요.
이 두 동영상은 아래 세 파트를 포함한다는 점에서 유사합니다.
- 휴대기기에서 영화 또는 게임 보기
- 대형 화면에서 동일한 콘텐츠 보기
- 제품에 대한 간략한 광고 문구 표시
예를 들어 출력 동영상에서 첫 번째 동영상의 1부와 2부를 보여주고 이후에 두 번째 동영상의 2부와 3부를 보여주는 것과 같이 동영상 두 개를 연결할 수 있습니다. 다음과 같은 타임스탬프를 사용하여 이 연결을 수행할 수 있습니다.
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
액션이 가득한 결과 동영상을 보려면 이 두 동영상 및 시차와 함께 앞의 코드를 사용합니다.