Transcoder API를 사용하면 동영상 연결, 오디오 트랙 믹싱 등을 할 수 있습니다. JobConfig
JSON 사양은 매우 유연하므로 입력과 출력 간에 모호성이 발생할 수 있습니다. 이러한 모호성을 없애기 위해 특정 스트림 매핑을 정의할 수 있습니다.
그렇지 않으면 API가 적합한 기본 스트림 매핑을 자동으로 제공합니다.
이 페이지에서는 API가 제공하는 기본 스트림 매핑과 입력 미디어 파일 인코딩에 대한 몇 가지 고급 구성 예시를 보여줍니다.
배경
JobConfig
의 inputs
목록은 파일 사용 방법이 아닌 다운로드할 파일을 지정합니다. 각 입력은 이를 식별하는 키와 페어링됩니다.
editList
는 트랜스코딩 작업에서 출력 파일(또는 매니페스트)의 타임라인으로 수정 시퀀스를 정의합니다. editList
의 inputs
는 각 Atom에서 사용할 입력을 결정합니다.
자세한 내용은 개요의 개념 섹션을 참조하세요.
기본 동영상 매핑
editList
의 각 Atom은 동영상 트랙 하나가 포함된 입력을 최소 한 개 이상 참조해야 합니다. Atom에 입력 여러 개가 정의되어 있고 각각 동영상 트랙 하나가 포함되어 있는 경우 inputs
목록의 첫 번째 입력이 동영상 소스로 사용되며 이것이 기본 매핑입니다. 동영상 트랙이 포함된 입력이 없으면 작업이 실패합니다.
다음 구성은 동영상 트랙 input0.mp4
의 처음 5초를 동영상 트랙 input1.mov
의 10초와 함께 출력 파일에 연결합니다.
"inputs": [
{
"key": "input0",
"uri": "gs://my-bucket/input0.mp4"
},
{
"key": "input1",
"uri": "gs://my-bucket/input1.mov"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["input0"],
"endTimeOffset": "5s",
"startTimeOffset": "0s"
},
{
"key": "atom1",
"inputs": ["input1"],
"endTimeOffset": "20s",
"startTimeOffset": "10s"
}
]
자세한 내용은 여러 입력 동영상 연결을 참조하세요.
기본 오디오 매핑
오디오 매핑은 다양한 상황에 특히 오디오 입력 수가 출력과 일치하지 않는 경우에 적용됩니다.
여러 입력 연결
editList
의 각 Atom은 audioStream
이 정의된 경우 오디오 트랙이 포함된 입력을 최소 한 개 이상 참조해야 합니다. Atom에 입력 여러 개가 정의되어 있고 각각 오디오 트랙 하나가 포함되어 있는 경우 inputs
목록의 첫 번째 입력이 오디오 소스로 사용되며 이것이 기본 매핑입니다. 오디오 트랙이 포함된 입력이 없으면 작업이 실패합니다.
Transcoder API는 클라이언트에서 명시적으로 매핑을 지정하지 않은 경우 정의된 각 audioStream
에 기본 매핑만 생성합니다.
정의된 audioStream
이 포함된 다음 구성을 고려합니다.
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
},
{
"key": "video_only",
"uri": "gs://my-bucket/video_only.mov"
},
{
"key": "stereo_audio_only",
"uri": "gs://my-bucket/stereo_audio_only.mp3"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
},
{
"key": "atom1",
"inputs": ["video_only", "stereo_audio_only"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
Transcoder API는 오디오 출력에 다음 기본 매핑을 생성합니다.
audioStream
필드는 video_only
입력에 적용되지 않습니다.
이 입력은 inputs
목록에서 처음 표시되지만 오디오 트랙이 포함되지 않습니다.
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
},
{
"atomKey": "atom1",
"inputKey": "stereo_audio_only",
"inputTrack": 0,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom1",
"inputKey": "stereo_audio_only",
"inputTrack": 0,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
N에서 n으로 복사
입력 오디오 트랙의 채널 수가 출력 audioStream
의 채널 수와 일치하면 Transcoder API는 입력 채널을 출력 채널에 복사합니다.
2채널 스테레오 오디오가 있는 입력과 2채널로 정의된 audioStream
이 포함된 다음 구성을 살펴보세요.
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
Transcoder API는 오디오 출력에 다음 기본 매핑을 생성합니다.
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
N에서 1로 다운믹스
입력 오디오 트랙의 채널 수가 출력 audioStream
의 채널 수보다 많은 경우 Transcoder API는 모든 입력 채널을 단일 출력 채널에 복사합니다.
audioStream
에서 출력 채널 여러 개를 정의하는 경우 단일 출력 채널이 복사되어 각 출력 채널에 사용됩니다. 예를 들어 입력 오디오 트랙이 5채널로 구성되어 있고 audioStream
이 출력 채널 2개를 정의하는 경우 이 출력 채널 2개에는 정확하게 동일한 입력 오디오 즉, 입력 채널 5개에 대한 다운믹스 1개가 포함됩니다.
2채널 스테레오 오디오가 있는 입력과 출력 채널 하나로 정의된 audioStream
이 포함된 다음 구성을 살펴보세요.
"inputs": [
{
"key": "video_and_stereo_audio",
"uri": "gs://my-bucket/video_and_stereo_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_stereo_audio"]
}
],
"elementaryStreams": [
{
"key": "output_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 1,
"channelLayout": ["fc"],
"sampleRateHertz": 48000
}
}
]
Transcoder API는 오디오 출력에 다음 기본 매핑을 생성합니다.
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 1,
"channelLayout": ["fc"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 0,
"gainDb": 0
}
]
}
}
]
1에서 N으로 복사
입력 오디오 트랙의 채널 수가 출력 audioStream
의 채널 수보다 적으면 Transcoder API는 첫 번째 입력 채널을 각 출력 채널에 복사합니다.
1채널 모노 오디오가 있는 입력과 출력 채널 2개로 정의된 audioStream
이 포함된 다음 구성을 살펴보세요.
"inputs": [
{
"key": "video_and_mono_audio",
"uri": "gs://my-bucket/video_and_mono_audio.mp4"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_mono_audio"]
}
],
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2, // API default
"channelLayout": ["fl", "fr"], // API default
"sampleRateHertz": 48000
}
}
]
Transcoder API는 오디오 출력에 다음 기본 매핑을 생성합니다.
"elementaryStreams": [
{
"key": "output_mono_audio",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": ["fl", "fr"],
"sampleRateHertz": 48000,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_mono_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_mono_audio",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 1,
"gainDb": 0
}
]
}
}
]
기본 텍스트 매핑
텍스트 매핑은 일반적으로 자막(CC)에 사용됩니다.
editList
의 각 Atom은 textStream
이 정의된 경우 텍스트 트랙이 포함된 입력을 한 개 이상 참조해야 합니다. Atom에 입력 여러 개가 정의되어 있고 각각 텍스트 트랙 하나가 포함되어 있는 경우 inputs
목록의 첫 번째 입력이 텍스트 소스로 사용되며 이것이 기본 매핑입니다. 텍스트 트랙이 포함된 입력이 없으면 작업이 실패합니다.
"inputs": [
{
"key": "video_and_audio",
"uri": "gs://my-bucket/video_and_audio.mp4"
},
{
"key": "sub",
"uri": "gs://my-bucket/sub.srt"
}
],
"editList": [
{
"key": "atom0",
"inputs": ["video_and_audio", "sub"]
}
],
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt"
}
}
]
Transcoder API는 텍스트 출력에 다음 기본 매핑을 생성합니다.
"elementaryStreams": [
{
"key": "output_sub",
"textStream": {
"codec": "webvtt",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]