本页面介绍了使用输入媒体文件(即 ElementaryStream
)编码的一些配置示例。
视频流
VideoStream
属性彼此之间没有依赖项。您可以单独设置分辨率(高度和宽度)、比特率和帧速率等属性。
{
"videoStream": {
"h264": {
"profile": "high",
"preset": "veryfast",
"heightPixels": 360,
"widthPixels": 640,
"pixelFormat": "yuv420p",
"bitrateBps": 550000,
"rateControlMode": "vbr",
"crfLevel": 21,
"vbvSizeBits": 550000,
"vbvFullnessBits": 495000,
"gopDuration": "3s",
"entropyCoder": "cabac",
"bFrameCount": 3,
"frameRate": 30,
"aqStrength": 1
}
},
"key": "video-stream0"
}
音频流
某些 AudioStream
属性相互依赖。channelCount
属性值必须等于 channelLayout
数组中的布局数。此值还必须等于映射的输入流中的频道数量。
基本音频流
以下是未映射的非混合音频流的示例。
{
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"sampleRateHertz": 48000,
"languageCode": "en-US",
"displayName": "English"
},
"key": "audio-stream0"
}
带映射的音频流
以下是已映射输入的音频流的示例。输出立体声 AudioStream
由以下输入组成:
- 轨道 1
- 频道 0
- 轨道 1
- 频道 1
请注意,channelCount
属性值必须等于 mapping
下定义的对象数,每个对象都有自己的 outputChannel
。
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"sampleRateHertz": 48000,
"languageCode": "en-US",
"displayName": "English",
"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
}
]
}
}
混合使用的音频流
以下是混合音频流的示例。输出立体声 AudioStream
由以下输入组成:
- 轨道 2
- 频道 0
- 频道 2
- 频道 4
- 轨道 2
- 频道 1
- 频道 3
- 频道 5
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 128000,
"channelCount": 2,
"mapping": [
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 0,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 2,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 4,
"outputChannel": 0,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 1,
"outputChannel": 1,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 3,
"outputChannel": 1,
"gainDb": 0
},
{
"atomKey": "atom0",
"inputKey": "video_and_stereo_audio",
"inputTrack": 2,
"inputChannel": 5,
"outputChannel": 1,
"gainDb": 0
}
],
"sampleRateHertz": 44100
}
}
单个文件中的多语言音频串流
以下是单个输入视频文件的示例配置,其中包含视频和多个不同语言的音轨。mapping[]
对象用于创建多个输出音频串流,每个语言一个。视频和每个音频流都包含在 HLS 和 DASH 清单中。
{
"outputUri": "gs://STORAGE_BUCKET_NAME/",
"config": {
"inputs": [
{
"key": "input0",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
}
],
"editList": [
{
"key": "atom0",
"inputs": [
"input0"
],
"startTimeOffset": "0s"
}
],
"elementaryStreams": [
{
"key": "video-stream0",
"videoStream": {
"h264": {
"widthPixels": 640,
"heightPixels": 360,
"frameRate": 30,
"bitrateBps": 500000
}
}
},
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "en-US",
"displayName": "English"
}
},
{
"key": "audio-stream1",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 2,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 2,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "es-ES",
"displayName": "Spanish"
}
},
{
"key": "audio-stream2",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 3,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 3,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "fr-Fr",
"displayName": "French"
}
}
],
"muxStreams": [
{
"key": "sd",
"container": "fmp4",
"elementaryStreams": [
"video-stream0"
]
},
{
"key": "audio-0",
"container": "fmp4",
"elementaryStreams": [
"audio-stream0"
]
},
{
"key": "audio-1",
"container": "fmp4",
"elementaryStreams": [
"audio-stream1"
]
},
{
"key": "audio-2",
"container": "fmp4",
"elementaryStreams": [
"audio-stream2"
]
}
],
"manifests": [
{
"fileName": "manifest.m3u8",
"type": "HLS",
"muxStreams": [
"sd",
"audio-0",
"audio-1",
"audio-2"
]
},
{
"fileName": "manifest.mpd",
"type": "DASH",
"muxStreams": [
"sd",
"audio-0",
"audio-1",
"audio-2"
]
}
]
}
}
使用多个音频文件提供多语言音频串流
以下是包含视频和只有一个默认语言音轨的输入视频文件的配置示例。还需要使用两个单独的输入音频文件,每种语言一个。mapping[]
对象用于创建多个输出音频串流,每个语言一个。视频和每个音频流都包含在 HLS 和 DASH 清单中。
{
"outputUri": "gs://STORAGE_BUCKET_NAME/",
"config": {
"inputs": [
{
"key": "input0",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
},
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_AUDIO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_AUDIO2"
}
],
"editList": [
{
"key": "atom0",
"inputs": [
"input0",
"input1",
"input2"
],
"startTimeOffset": "0s"
}
],
"elementaryStreams": [
{
"key": "video-stream0",
"videoStream": {
"h264": {
"widthPixels": 640,
"heightPixels": 360,
"frameRate": 30,
"bitrateBps": 500000
}
}
},
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 1,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input0",
"inputTrack": 1,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "en-US",
"displayName": "English"
}
},
{
"key": "audio-stream1",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input1",
"inputTrack": 0,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input1",
"inputTrack": 0,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "es-ES",
"displayName": "Spanish"
}
},
{
"key": "audio-stream2",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"mapping": [
{
"atomKey": "atom0",
"inputKey": "input2",
"inputTrack": 0,
"inputChannel": 0,
"outputChannel": 0
},
{
"atomKey": "atom0",
"inputKey": "input2",
"inputTrack": 0,
"inputChannel": 1,
"outputChannel": 1
}
],
"sampleRateHertz": 48000,
"languageCode": "fr-Fr",
"displayName": "French"
}
}
],
"muxStreams": [
{
"key": "sd",
"container": "fmp4",
"elementaryStreams": [
"video-stream0"
]
},
{
"key": "audio-0",
"container": "fmp4",
"elementaryStreams": [
"audio-stream0"
]
},
{
"key": "audio-1",
"container": "fmp4",
"elementaryStreams": [
"audio-stream1"
]
},
{
"key": "audio-2",
"container": "fmp4",
"elementaryStreams": [
"audio-stream2"
]
}
],
"manifests": [
{
"fileName": "manifest.m3u8",
"type": "HLS",
"muxStreams": [
"sd",
"audio-0",
"audio-1",
"audio-2"
]
},
{
"fileName": "manifest.mpd",
"type": "DASH",
"muxStreams": [
"sd",
"audio-0",
"audio-1",
"audio-2"
]
}
]
}
}
文本流
TextStream
属性彼此之间没有依赖项。您可以单独设置属性。
文本流可以使用修改列表来修改输出文件。以下部分重点介绍如何使用修改列表来提供字幕。
以下示例显示了在修改列表中包含一个 Atom 的文本流。
{
"editList":[
{
"key":"atom0",
"inputs":[
"video_input0",
"caption_input0"
],
"startTimeOffset":"0s",
"endTimeOffset":"300s"
}
],
"elementaryStreams":[
{
"key": "cea-stream0",
"textStream": {
"codec": "cea708",
"languageCode": "en-US",
"displayName": "English",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
}
]
}
}
]
}
以下示例显示了在修改列表中包含两个 Atom 的文本流。
{
"editList":[
{
"key":"atom0",
"inputs":[
"video_input0",
"caption_input0"
],
"startTimeOffset":"0s",
"endTimeOffset":"300s"
},
{
"key":"atom1",
"inputs":[
"video_input1",
"caption_input1"
],
"startTimeOffset":"0s",
"endTimeOffset":"300s"
}
],
"elementaryStreams":[
{
"key": "cea-stream0",
"textStream": {
"codec": "cea708",
"languageCode": "en-US",
"displayName": "English",
"mapping": [
{
"atomKey": "atom0",
"inputKey": "caption_input0",
"inputTrack": 0
},
{
"atomKey": "atom1",
"inputKey": "caption_input1",
"inputTrack": 0
}
]
}
}
]
}
高级
以下部分概述了各种高级配置。
仅音频输出
以下配置会输出纯音频 MP4 和 TS 文件。
{
"config": {
"inputs": [
{
"key": "input0",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
}
],
"elementaryStreams": [
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"languageCode": "en-US",
"displayName": "English"
}
}
],
"muxStreams": [
{
"key": "audio-only-ts",
"fileName": "audio-only.ts",
"container": "ts",
"elementaryStreams": [
"audio-stream0"
]
},
{
"key": "audio-only-mp4",
"fileName": "audio-only.mp4",
"container": "mp4",
"elementaryStreams": [
"audio-stream0"
]
}
],
"manifests": [
{
"fileName": "manifest.m3u8",
"type": "HLS",
"muxStreams": [
"audio-only-ts"
]
}
],
"output": {
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
}
}
}
MuxStream 和 fmp4
使用 fmp4 容器的 MuxStream
只能包含一个 ElementaryStream
。对于此容器,请使用两个 MuxStreams
:一个用于音频,一个用于视频:
"muxStreams":[
{
"key": "hd3-video",
"container": "fmp4",
"elementaryStreams":["video-stream1"]
},
{
"key": "hd3-audio",
"container": "fmp4",
"elementaryStreams":["audio-stream1"]
}
],
在多个清单中重复使用流
以下示例配置显示了 HLS 和 DASH 清单中使用的两个视频编码和一个音频编码:
{
"config": {
"inputs": [
{
"key": "input0",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
}
],
"elementaryStreams": [
{
"videoStream": {
"h264": {
"heightPixels": 360,
"widthPixels": 640,
"bitrateBps": 500000,
"frameRate": 30
}
},
"key": "video-stream0"
},
{
"videoStream": {
"h264": {
"heightPixels": 720,
"widthPixels": 1280,
"bitrateBps": 3200000,
"frameRate": 30
}
},
"key": "video-stream1"
},
{
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"sampleRateHertz": 48000
},
"key": "audio-stream0"
}
],
"muxStreams": [
{
"key": "video-only-sd",
"container": "fmp4",
"elementaryStreams": [
"video-stream0"
]
},
{
"key": "video-only-hd",
"container": "fmp4",
"elementaryStreams": [
"video-stream1"
]
},
{
"key": "audio-only",
"container": "fmp4",
"elementaryStreams": [
"audio-stream0"
]
}
],
"manifests": [
{
"fileName": "manifest.m3u8",
"type": "HLS",
"muxStreams": [
"video-only-sd",
"video-only-hd",
"audio-only"
]
},
{
"fileName": "manifest.mpd",
"type": "DASH",
"muxStreams": [
"video-only-sd",
"video-only-hd",
"audio-only"
]
}
],
"output": {
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
}
}
}
转码多个配置文件的推荐设置
对于输出分辨率和比特率,请根据输入分辨率/帧速率 (50/60 FPS),为 50/60 FPS 添加更高的帧速率步骤(如果适用)。请注意,添加更多步骤需要更多计算能力。以下是建议的梯度:
分辨率 (ScanMode)/帧速率 | H.264 高级配置文件码率 (Kbps) |
---|---|
170x96 p12/15 | 130 |
256x144 p25/30 | 240 |
416x234 p25/30 | 300 |
640x360 p25/30 | 400 |
768x432 p25/30 | 750 |
768x432 p25/30 | 1100 |
960x540 p25/30 | 2200 |
1280x720 p25/30 | 3300 |
1280x720 p50/60 | 5500 |
1920x1080 p25/30 | 6000 |
1920x1080 p50/60 | 9000 |
对于音频,建议取决于声道数量:
渠道 | AAC 比特率 (Kbps) |
---|---|
2.0 | 64 |
2.0 | 160 |
5.1 | 384 |
使用此输出梯架创建一个配置,以便以不同的组合输出 HLS 和 MPEG-DASH 清单:
{
"config": {
"inputs": [
{
"key": "input0",
"uri": "gs://my-bucket/input0.mp4"
}
],
"elementaryStreams": [
{
"key": "video-stream0",
"videoStream": {
"h264": {
"heightPixels": 96,
"widthPixels": 170,
"bitrateBps": 130000,
"frameRate": 15,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream1",
"videoStream": {
"h264": {
"heightPixels": 144,
"widthPixels": 256,
"bitrateBps": 240000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream2",
"videoStream": {
"h264": {
"heightPixels": 234,
"widthPixels": 416,
"bitrateBps": 300000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream3",
"videoStream": {
"h264": {
"heightPixels": 360,
"widthPixels": 640,
"bitrateBps": 400000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream4",
"videoStream": {
"h264": {
"heightPixels": 432,
"widthPixels": 768,
"bitrateBps": 1100000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream5",
"videoStream": {
"h264": {
"heightPixels": 540,
"widthPixels": 960,
"bitrateBps": 2200000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream6",
"videoStream": {
"h264": {
"heightPixels": 720,
"widthPixels": 1280,
"bitrateBps": 3300000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream7",
"videoStream": {
"h264": {
"heightPixels": 720,
"widthPixels": 1280,
"bitrateBps": 5500000,
"frameRate": 60,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 6,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream8",
"videoStream": {
"h264": {
"heightPixels": 1080,
"widthPixels": 1920,
"bitrateBps": 6000000,
"frameRate": 30,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 3,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "video-stream9",
"videoStream": {
"h264": {
"heightPixels": 1080,
"widthPixels": 1920,
"bitrateBps": 9000000,
"frameRate": 60,
"gopDuration": "4.0s",
"pixelFormat": "yuv420p",
"rateControlMode": "crf",
"crfLevel": 10,
"bFrameCount": 6,
"profile": "high",
"enableTwoPass": true,
"preset": "medium"
}
}
},
{
"key": "audio-stream0",
"audioStream": {
"codec": "aac",
"bitrateBps": 32000
}
},
{
"key": "audio-stream1",
"audioStream": {
"codec": "aac",
"bitrateBps": 64000
}
},
{
"key": "audio-stream2",
"audioStream": {
"codec": "aac",
"bitrateBps": 96000
}
},
{
"key": "audio-stream3",
"audioStream": {
"codec": "aac",
"bitrateBps": 128000
}
},
{
"key": "audio-stream4",
"audioStream": {
"codec": "aac-he",
"bitrateBps": 160000
}
},
{
"key": "audio-stream5",
"audioStream": {
"codec": "aac-he-v2",
"bitrateBps": 384000
}
}
],
"muxStreams": [
{
"key": "1",
"container": "ts",
"elementaryStreams": [
"video-stream0",
"audio-stream0"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "2",
"container": "ts",
"elementaryStreams": [
"video-stream1",
"audio-stream0"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "3",
"container": "ts",
"elementaryStreams": [
"video-stream2",
"audio-stream1"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "4",
"container": "ts",
"elementaryStreams": [
"video-stream3",
"audio-stream1"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "5",
"container": "ts",
"elementaryStreams": [
"video-stream4",
"audio-stream2"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "6",
"container": "ts",
"elementaryStreams": [
"video-stream5",
"audio-stream3"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "7",
"container": "ts",
"elementaryStreams": [
"video-stream6",
"audio-stream3"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "8",
"container": "ts",
"elementaryStreams": [
"video-stream7",
"audio-stream4"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "9",
"container": "ts",
"elementaryStreams": [
"video-stream8",
"audio-stream4"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "10",
"container": "ts",
"elementaryStreams": [
"video-stream9",
"audio-stream5"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-1",
"container": "fmp4",
"elementaryStreams": [
"video-stream0"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-2",
"container": "fmp4",
"elementaryStreams": [
"video-stream1"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-3",
"container": "fmp4",
"elementaryStreams": [
"video-stream2"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-4",
"container": "fmp4",
"elementaryStreams": [
"video-stream3"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-5",
"container": "fmp4",
"elementaryStreams": [
"video-stream4"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-6",
"container": "fmp4",
"elementaryStreams": [
"video-stream5"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-7",
"container": "fmp4",
"elementaryStreams": [
"video-stream6"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-8",
"container": "fmp4",
"elementaryStreams": [
"video-stream7"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-9",
"container": "fmp4",
"elementaryStreams": [
"video-stream8"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "video-10",
"container": "fmp4",
"elementaryStreams": [
"video-stream9"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-1",
"container": "fmp4",
"elementaryStreams": [
"audio-stream0"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-2",
"container": "fmp4",
"elementaryStreams": [
"audio-stream1"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-3",
"container": "fmp4",
"elementaryStreams": [
"audio-stream2"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-4",
"container": "fmp4",
"elementaryStreams": [
"audio-stream3"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-5",
"container": "fmp4",
"elementaryStreams": [
"audio-stream4"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
},
{
"key": "audio-6",
"container": "fmp4",
"elementaryStreams": [
"audio-stream5"
],
"segmentSettings": {
"segmentDuration": "4.0s",
"individualSegments": true
}
}
],
"manifests": [
{
"fileName": "manifest.m3u8",
"type": "HLS",
"muxStreams": [
"10",
"9",
"8",
"7",
"6",
"5",
"4",
"3",
"2",
"1"
]
},
{
"fileName": "manifest.mpd",
"type": "DASH",
"muxStreams": [
"video-10",
"video-9",
"video-8",
"video-7",
"video-6",
"video-5",
"video-4",
"video-3",
"video-2",
"video-1",
"audio-6",
"audio-5",
"audio-4",
"audio-3",
"audio-2",
"audio-1"
]
}
],
"output": {
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
}
}
}