Asignaciones de transmisión

La API de Transcoder te permite concatenar videos, mezclar pistas de audio y mucho más. La especificación JSON JobConfig es muy flexible, y esto puede crear ambig ambigedad entre las entradas y las salidas. Puedes definir algunas asignaciones de transmisión para aclarar esta ambiguedad. Si no lo haces, la API te proporciona asignaciones de transmisión predeterminadas razonables.

En esta página, se muestran las asignaciones de transmisión predeterminadas que proporciona la API y algunos ejemplos de configuración avanzada para la codificación de archivos multimedia de entrada.

Fondo

La lista inputs de un JobConfig especifica qué archivos se deben descargar, no cómo usarlos. Cada entrada se sincroniza con una clave para identificarla.

La editList define una secuencia de ediciones como un cronograma para el archivo de salida (o manifiesto) a partir de un trabajo de transcodificación. Las inputs en editList determina qué entradas usar en cada átomo.

Para obtener más información, consulta la sección Conceptos y terminología en la Descripción general.

Mapeo de videos predeterminado

Cada átomo de la editList debe hacer referencia al menos a una entrada que contenga una pista de video. Si se definen varias entradas para un átomo y cada una contiene una pista de video, se usa la primera entrada de la lista inputs como fuente del video. Esta es la asignación predeterminada. Si ninguna de las entradas contiene una pista de video, el trabajo fallará.

Con la siguiente configuración, se concatenan los primeros 5 segundos de la pista de video input0.mp4 con 10 segundos de la pista de video input1.mov en el archivo de salida:

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

Asignaciones de audio predeterminadas

Las asignaciones de audio se aplican a una variedad de situaciones, en particular cuando hay una cantidad de entradas de audio que no coincide con las salidas.

Concatena varias entradas

Cada átomo de la editList debe hacer referencia al menos a una entrada que contenga una pista de audio si se define una audioStream. Si se definen varias entradas para un átomo y cada una contiene una pista de audio, se usa la primera entrada de la lista inputs como fuente de audio. Esta es la asignación predeterminada. Si ninguna de las entradas contiene una pista de audio, el trabajo falla.

La API de Transcoder solo genera una asignación predeterminada para cada audioStream definida si el cliente no especifica la asignación de forma explícita.

Considera la siguiente configuración que contiene un audioStream definido:

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

La API de Transcoder genera las siguientes asignaciones predeterminadas para la salida de audio. Ten en cuenta que los campos audioStream no se aplican a la entrada video_only. Aunque esta entrada aparece primero en la lista inputs, no contiene una pista de 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
        }
      ]
    }
  }
]

N a una copia n

Si la cantidad de canales en la pista de audio de entrada coincide con la cantidad de canales en el audioStream de salida, la API de Transcoder copia los canales de entrada en los canales de salida.

Considera la siguiente configuración que contiene una entrada con audio estéreo de dos canales y una audioStream definida con 2 canales:

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

La API de Transcoder genera las siguientes asignaciones predeterminadas para la salida de 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
        }
      ]
    }
  }
]

N hasta 1 mezcla mono

Si la cantidad de canales en la pista de audio de entrada es mayor que la cantidad de canales en la audioStream de salida, la API de Transcoder copia todos los canales de entrada en un solo canal de salida.

Si el audioStream define varios canales de salida, el único canal de salida se copia y se usa para cada canal de salida. Por ejemplo, si la pista de audio de entrada consta de 5 canales y la audioStream define 2 canales de salida, esos dos canales de salida contendrán exactamente el mismo audio, una mezcla de los 5 canales de entrada. ,

Considera la siguiente configuración que contiene una entrada con audio estéreo en dos canales y una audioStream definida con un canal de salida:

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

La API de Transcoder genera las siguientes asignaciones predeterminadas para la salida de 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
        }
      ]
    }
  }
]

1 a una copia N

Si la cantidad de canales en la pista de audio de entrada es menor que la cantidad de canales en la audioStream de salida, la API de Transcoder copia el primer canal de entrada en cada canal de salida.

Considera la siguiente configuración que contiene una entrada con audio mono uno y un audioStream definido con 2 canales de salida:

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

La API de Transcoder genera las siguientes asignaciones predeterminadas para la salida de 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
        }
      ]
    }
  }
]

Asignación de texto predeterminada

Por lo general, las asignaciones de texto se usan en los subtítulos.

Cada átomo en el editList debe hacer referencia al menos a una entrada que contenga una pista de texto si se define un textStream. Si se definen varias entradas para un átomo y cada una contiene una pista de texto, se usa la primera entrada de la lista inputs como fuente de texto. este es el mapeo predeterminado. Si ninguna de las entradas contiene una pista de texto, el trabajo falla.

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

La API de Transcoder genera las siguientes asignaciones predeterminadas para la salida de texto:

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