Esta página mostra alguns exemplos de configuração para a codificação de um ficheiro multimédia de entrada (ou seja, um ElementaryStream
).
Stream de vídeo
As propriedades VideoStream
não têm dependências entre si. Pode definir propriedades como a resolução (altura e largura), a taxa de bits e a velocidade de frames de forma independente.
{
"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"
}
Stream de áudio
Determinadas propriedades
AudioStream
dependem umas das outras. O valor da propriedade channelCount
tem de ser igual ao número de esquemas na matriz channelLayout
. Este valor também tem de ser igual ao número de canais num fluxo de entrada mapeado.
Stream de áudio básica
Segue-se um exemplo de uma stream de áudio não mapeada e não mista.
{
"audioStream": {
"codec": "aac",
"bitrateBps": 64000,
"channelCount": 2,
"channelLayout": [
"fl",
"fr"
],
"sampleRateHertz": 48000,
"languageCode": "en-US",
"displayName": "English"
},
"key": "audio-stream0"
}
Stream de áudio com mapeamento
Segue-se um exemplo de uma stream de áudio mapeada por entrada. O estéreo de saída
AudioStream
é composto pelas seguintes entradas:
- Faixa 1
- Channel 0
- Faixa 1
- Channel 1
Tenha em atenção que o valor da propriedade channelCount
tem de ser igual ao número de objetos definidos em mapping
, cada um com o seu próprio 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
}
]
}
}
Stream de áudio com mistura
Segue-se um exemplo de uma stream de áudio mista. O estéreo de saída
AudioStream
é composto pelas seguintes entradas:
- Faixa 2
- Channel 0
- Channel 2
- Channel 4
- Faixa 2
- Channel 1
- Channel 3
- Channel 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
}
}
Streams de áudio em vários idiomas a partir de um único ficheiro
Segue-se um exemplo de configuração para um único ficheiro de vídeo de entrada que contém vídeo e várias faixas de áudio em idiomas diferentes. O objeto
mapping[]
é usado para criar várias transmissões em fluxo contínuo de áudio de saída, uma por idioma. O vídeo e cada stream de áudio estão incluídos nos manifestos HLS e 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"
]
}
]
}
}
Streams de áudio em vários idiomas a partir de vários ficheiros de áudio
Segue-se um exemplo de configuração para um ficheiro de vídeo de entrada que contém vídeo e
apenas uma faixa de áudio no idioma predefinido. Também são usados dois ficheiros de áudio de entrada separados, um por idioma. O objeto
mapping[]
é usado para criar várias transmissões em fluxo contínuo de áudio de saída, uma por idioma. O vídeo e cada stream de áudio estão incluídos nos manifestos HLS e 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"
]
}
]
}
}
Stream de texto
As propriedades TextStream
não têm dependências entre si. Pode definir propriedades
de forma independente.
Os streams de texto podem usar uma lista de edição para modificar o ficheiro de saída. As secções seguintes realçam a utilização da lista de edições para fornecer legendas.
O exemplo seguinte mostra um fluxo de texto com um átomo na lista de edições.
{
"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
}
]
}
}
]
}
O exemplo seguinte mostra um fluxo de texto com dois átomos na lista de edições.
{
"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
}
]
}
}
]
}
Avançada
As secções seguintes descrevem várias configurações avançadas.
Saída apenas de áudio
A configuração seguinte gera ficheiros MP4 e TS apenas de áudio.
{
"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 e fmp4
Um MuxStream
que usa o contentor fmp4 só pode conter um único ElementaryStream
.
Para este contentor, use dois MuxStreams
: um para áudio e outro para vídeo:
"muxStreams":[
{
"key": "hd3-video",
"container": "fmp4",
"elementaryStreams":["video-stream1"]
},
{
"key": "hd3-audio",
"container": "fmp4",
"elementaryStreams":["audio-stream1"]
}
],
Reutilização de streams em vários manifestos
A configuração de exemplo seguinte mostra duas codificações de vídeo e uma de áudio a serem usadas nos manifestos HLS e 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/"
}
}
}
Definições recomendadas para transcodificar vários perfis
Para a resolução e a taxa de bits de saída, consoante a resolução/velocidade de frames de entrada (50/60 FPS), adicione o passo de velocidade de frames mais elevado para 50/60 FPS, se aplicável. Tenha em atenção que a adição de passos adicionais requer mais capacidade de computação. A seguinte é a hierarquia recomendada:
Resolução (ScanMode)/velocidade de frames | Taxa de bits do perfil alto 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 |
Para áudio, as recomendações baseiam-se no número de canais:
Canais | Taxa de bits AAC (Kbps) |
---|---|
2,0 | 64 |
2,0 | 160 |
5.1 | 384 |
Use esta hierarquia de saída para criar uma configuração que produza manifestos HLS e MPEG-DASH com diferentes combinações:
{
"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/"
}
}
}