Mappature dei flussi

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

L'API Transcoder ti consente di concatenare video, combinare tracce audio e altro ancora. La specifica JSON JobConfig è altamente flessibile e ciò può creare ambiguità tra gli input e gli output. Per chiarire questa ambiguità puoi definire determinate mappature dei flussi. In caso contrario, l'API fornisce una ragionevole mappatura predefinita degli stream.

In questa pagina vengono mostrate le mappature di stream predefinite fornite dall'API e alcuni esempi di configurazione avanzata per la codifica dei file multimediali di input.

Contesto

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

Il 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 ciascun atomo.

Per ulteriori informazioni, consulta la sezione Concetti e terminologia nella Panoramica.

Mappatura video predefinita

Ogni atomo in editList deve fare riferimento ad almeno un input che contenga una traccia video. Se per un atomo sono definiti più input 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 Concatenare più video di input.

Mappature audio predefinite

Le mappature audio si applicano a una serie di situazioni, in particolare quando esiste un numero non corrispondente di ingressi audio agli output.

Concatena più input

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

L'API Transcoder genera una mappatura predefinita per ogni elemento audioStream definito se la mappatura non viene specificata in modo esplicito dal client.

Considera la seguente configurazione che contiene un 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 viene visualizzato 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
        }
      ]
    }
  }
]

Da N a n copia

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

Valuta la seguente configurazione che contiene un input con audio stereo a due canali e un audioStream definito con due 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 è superiore al numero di canali nell'output audioStream, l'API Transcoder copia tutti i canali in un unico canale di output.

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

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

Da 1 a N copia

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

Valuta la seguente configurazione che contiene un ingresso con audio monocanale e un audioStream definito con due 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 di testo predefinita

In genere, le mappature dei testi sono utili per i sottotitoli.

Ogni atomo in editList deve fare riferimento ad almeno un input che contiene una traccia di testo se è definito un elemento textStream. Se sono definiti più input per un atomo e ciascuno contiene una traccia di testo, il primo input nell'elenco inputs viene utilizzato come origine di testo, ossia 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
        }
      ]
    }
  }
]