Konfigurationsbeispiele

Auf dieser Seite finden Sie einige Konfigurationsbeispiele fรผr die Codierung einer Eingabemediendatei (d. h. ein ElementaryStream).

Videostream

VideoStream-Properties haben keine Abhรคngigkeiten. Sie kรถnnen Attribute wie Auflรถsung (Hรถhe und Breite), Bitrate und Framerate unabhรคngig festlegen.

{
  "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

Bestimmte AudioStream-Attribute sind unterschiedlich. Der Attributwert channelCount muss der Anzahl der Layouts im Array channelLayout entsprechen. Dieser Wert muss auch der Anzahl der Kanรคle in einem zugewiesenen Eingabestream entsprechen.

Einfacher Audiostream

Das folgende Beispiel zeigt einen nicht zugeordneten Audiostream ohne Ton.

{
  "audioStream": {
    "codec": "aac",
    "bitrateBps": 64000,
    "channelCount": 2,
    "channelLayout": [
      "fl",
      "fr"
    ],
    "sampleRateHertz": 48000,
    "languageCode": "en-US",
    "displayName": "English"
  },
  "key": "audio-stream0"
}

Audiostream mit Zuordnung

Im Folgenden finden Sie ein Beispiel fรผr einen mit Audio verknรผpften Audiostream. Die Ausgabe-Stereo-AudioStream besteht aus den folgenden Eingaben:

  • Track 1
    • Kanal 0
  • Track 1
    • Kanal 1

Der Attributwert channelCount muss der Anzahl der unter mapping definierten Objekte entsprechen, die jeweils einen eigenen outputChannel haben.

{
  "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 mit Mischpult

Im Folgenden finden Sie ein Beispiel fรผr einen gemischten Audiostream. Die Ausgabe-Stereo-AudioStream besteht aus den folgenden Eingaben:

  • Track 2
    • Kanal 0
    • Kanal 2
    • Kanal 4
  • Track 2
    • Kanal 1
    • Kanal 3
    • Kanal 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
  }
}

Mehrsprachige Audiostreams aus einer einzigen Datei

Im Folgenden findest du ein Beispiel fรผr die Konfiguration einer einzelnen Eingabevideodatei mit Video und mehreren Audiotracks in verschiedenen Sprachen. Mit dem mapping[]-Objekt werden mehrere Audiostreams erstellt, einer pro Sprache. Das Video und jeder Audiostream sind sowohl im HLS- als auch im DASH-Manifest enthalten.

{
  "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"
        ]
      }
    ]
  }
}

Mehrsprachige Audiostreams aus mehreren Audiodateien

Im Folgenden findest du ein Beispiel fรผr die Konfiguration einer Eingabevideodatei, die Video und nur einen Audiotrack in der Standardsprache enthรคlt. AuรŸerdem werden zwei separate Eingabe-Audiodateien verwendet, eine pro Sprache. Mit dem mapping[]-Objekt werden mehrere Audiostreams erstellt, einer pro Sprache. Das Video und jeder Audiostream sind sowohl im HLS- als auch im DASH-Manifest enthalten.

{
  "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

TextStream-Properties haben keine Abhรคngigkeiten. Sie kรถnnen Attribute unabhรคngig festlegen.

In Textstreams kann eine Bearbeitungsliste verwendet werden, um die Ausgabedatei zu รคndern. In den folgenden Abschnitten wird die Verwendung der Bearbeitungsliste zum Bereitstellen von Untertiteln erlรคutert.

Das folgende Beispiel zeigt einen Textstream mit einem Atom in der Bearbeitungsliste.

{
  "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
          }
        ]
      }
    }
  ]
}

Das folgende Beispiel zeigt einen Textstream mit zwei Atomen in der Bearbeitungsliste.

{
  "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
          }
        ]
      }
    }
  ]
}

Erweitert

In den folgenden Abschnitten werden verschiedene erweiterte Konfigurationen beschrieben.

Nur Audioausgabe

Bei der folgenden Konfiguration werden MP4- und TS-Dateien nur mit Audio ausgegeben.

{
  "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 und fmp4

Ein MuxStream, der den fmp4-Container verwendet, kann nur einen einzigen ElementaryStream enthalten. Verwenden Sie fรผr diesen Container zwei MuxStreams: eine fรผr Audio und eine fรผr Videos:

"muxStreams":[
  {
    "key": "hd3-video",
    "container": "fmp4",
    "elementaryStreams":["video-stream1"]
  },
  {
    "key": "hd3-audio",
    "container": "fmp4",
    "elementaryStreams":["audio-stream1"]
  }
],

Streams in mehreren Manifesten wiederverwenden

Die folgende Beispielkonfiguration zeigt zwei Video- und eine Audiocodierung, die sowohl in HLS- als auch in DASH-Manifesten verwendet werden:

{
  "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/"
    }
  }
}

Empfohlene Einstellungen fรผr die Transcodierung mehrerer Profile

Fรผge fรผr die Ausgabeauflรถsung und -bitrate je nach Eingabeauflรถsung/-Framerate (50/60 fps) den Schritt mit der hรถheren Framerate fรผr 50/60 fps hinzu, falls zutreffend. Hinweis: Das Hinzufรผgen zusรคtzlicher Schritte erfordert mehr Rechenleistung. Die folgende Leiter wird empfohlen:

Auflรถsung (ScanMode)/Framerate H.264-Hochprofil-Bitrate (Kbit/s)
170x96 p12/15 130
256 ร— 144 p25/30 240
416 ร— 234 p25/30 300
640 ร— 360 p25/30 400
768 ร— 432 p25/30 750
768 ร— 432 p25/30 1.100
960 ร— 540 p25/30 2200
1280 ร— 720 p25/30 3300
1280 ร— 720 p50/60 5500
1920 ร— 1080 p25/30 6000
1920 ร— 1080 p50/60 9000

Bei Audio basieren die Empfehlungen auf der Anzahl der Kanรคle:

Kanรคle AAC-Bitrate (kbit/s)
2,0 64
2,0 160
5.1 384

Mit dieser Ausgabeleiter kannst du eine Konfiguration erstellen, die HLS- und MPEG-DASH-Manifeste mit verschiedenen Kombinationen ausgibt:

{
  "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/"
      }
  }
}