Mappature dei flussi

L'API Transcoder ti consente di concatenare video, mixare tracce audio e altro ancora. La specifica JSON di JobConfig è altamente flessibile e può creare ambiguità tra input e output. Puoi definire determinate mappature dei flussi per chiarire questa ambiguità. In caso contrario, l'API fornisce una ragionevole mappature dei flussi predefiniti.

Questa pagina mostra le mappature dei flussi predefinite fornite dall'API e alcuni esempi di configurazione avanzata per la codifica di file multimediali di input.

Premesse

L'elenco inputs in un JobConfig specifica quali file scaricare, non come utilizzarli. Ogni ingresso è associato a un tasto per identificarlo.

editList definisce una sequenza di modifiche come una sequenza temporale per il file di output (o manifest) di un job di transcodifica. inputs in editList determina gli input da utilizzare in ogni atomo.

Per ulteriori informazioni, consulta la sezione Concetti nella panoramica.

Mappatura video predefinita

Ogni atom in editList deve fare riferimento ad almeno un input contenente una traccia video. Se sono definiti più input per un atom e ciascuno contiene una traccia video, il primo input nell'elenco inputs viene utilizzato come sorgente video; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia video, il job non riesce.

La seguente configurazione concatena i primi 5 secondi della traccia video input0.mp4 con 10 secondi della traccia video input1.mov nel file di output:

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

Per ulteriori informazioni, consulta la sezione Concatenazione di video con più input.

Mappature audio predefinite

Le mappature audio si applicano a una varietà di situazioni, in particolare quando il numero di ingressi audio e uscite non corrisponde.

Concatena più input

Ogni atom in editList deve fare riferimento ad almeno un input che contiene una traccia audio se viene definito un audioStream. Se sono definiti più input per un atomo e ciascuno contiene una traccia audio, il primo input nell'elenco inputs viene utilizzato come sorgente audio; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia audio, il job non riesce.

L'API Transcoder genera un mapping predefinito per ogni elemento audioStream definito solo se il mapping non è specificato esplicitamente dal client.

Considera la seguente configurazione che contiene un valore audioStream definito:

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

L'API Transcoder genera le seguenti mappature predefinite per l'output audio. Tieni presente che i campi audioStream non vengono applicati all'input video_only. Questo input viene visualizzato per primo nell'elenco inputs, ma non contiene una traccia audio.

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

Testo da N a N

Se il numero di canali nella traccia audio in ingresso corrisponde al numero di canali nell'output audioStream, l'API Transcoder copia i canali di input nei canali di output.

Considera la seguente configurazione che contiene un ingresso con audio stereo a due canali e un valore audioStream definito con 2 canali:

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

L'API Transcoder genera le seguenti mappature predefinite per l'output audio:

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

Da N a 1 downmix

Se il numero di canali nella traccia audio in ingresso è maggiore del numero di canali nell'output audioStream, l'API Transcoder copia tutti i canali di input in un singolo canale di uscita.

Se audioStream definisce più canali di output, il singolo canale di output viene copiato e utilizzato per ogni canale di output. Ad esempio, se la traccia audio di ingresso è composta da 5 canali e audioStream definisce due canali di uscita, quei due canali di uscita conterranno esattamente lo stesso audio, ovvero un downmix dei cinque canali di ingresso.

Considera la seguente configurazione che contiene un ingresso con audio stereo a due canali e un valore audioStream definito con un canale di uscita:

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

L'API Transcoder genera le seguenti mappature predefinite per l'output audio:

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

Copia da 1 a N

Se il numero di canali nella traccia audio di ingresso è inferiore al numero di canali nell'output audioStream, l'API Transcoder copia il primo canale di ingresso in ciascun canale di uscita.

Considera la seguente configurazione che contiene un ingresso con audio mono a un canale e un valore audioStream definito con 2 canali di uscita:

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

L'API Transcoder genera le seguenti mappature predefinite per l'output audio:

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

Mappatura del testo predefinita

Le mappature del testo vengono generalmente utilizzate per i sottotitoli e i sottotitoli codificati.

Ogni atom in editList deve fare riferimento ad almeno un input contenente una traccia di testo se viene definito un textStream. Se sono definiti più input per un atom e ciascuno contiene una traccia di testo, il primo input nell'elenco inputs viene utilizzato come origine di testo; questa è la mappatura predefinita. Se nessuno degli input contiene una traccia di testo, il job non riesce.

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

L'API Transcoder genera le seguenti mappature predefinite per l'output di testo:

"elementaryStreams": [
  {
    "key": "output_sub",
    "textStream": {
      "codec": "webvtt",
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "caption_input0",
          "inputTrack": 0
        }
      ]
    }
  }
]