Mappature dei flussi

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

L'API Transcoder consente di concatenare video, combinare tracce audio e altro ancora. La specifica JSON di JobConfig è estremamente flessibile e questo può creare ambiguità tra input e output. Per definire questa ambiguità puoi definire determinate mappature dei flussi. In caso contrario, l'API fornisce mappature degli stream predefinite ragionevoli per te.

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

Premesse

L'elenco inputs in JobConfig specifica quali file scaricare, non come utilizzarli. Ogni input è associato a una chiave di identificazione.

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

Per ulteriori informazioni, leggi la sezione Concetti nella panoramica.

Mappatura video predefinita

Ogni atom in editList deve fare riferimento ad almeno un input che contenga 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 origine 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 più video inseriti.

Mappature audio predefinite

Le mappature audio si applicano a una serie di situazioni, in particolare quando è presente un numero non corrispondente di ingressi audio per le uscite.

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ù ingressi per un atom 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 una mappatura predefinita solo per ogni mappatura audioStream definita, se non viene specificata in modo esplicito dal client.

Considera la seguente configurazione che contiene un elemento 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. Anche se questo input compare per primo nell'elenco inputs, 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
        }
      ]
    }
  }
]

Copia da N a N

Se il numero di canali nella traccia audio di input 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 input con audio stereo a due canali e un 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 di input è maggiore del numero di canali nell'output audioStream, l'API Transcoder copia tutti i canali di input in un unico canale di output.

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

Considera la seguente configurazione che contiene un input con audio stereo a due canali e un audioStream definito con un canale di output:

"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 input è inferiore al numero di canali nell'output audioStream, l'API Transcoder copia il primo canale di input in ogni canale di output.

Considera la seguente configurazione che contiene un input con audio mono monocanale e un audioStream definito con 2 canali di output:

"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

In genere, le mappature di testo vengono utilizzate per i sottotitoli.

Ogni atom in editList deve fare riferimento ad almeno un input che contiene una traccia di testo se un textStream è definito. 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 del 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
        }
      ]
    }
  }
]