Define la configuración de las transmisiones en vivo

En esta página, se describe cómo establecer la configuración durante la creación del canal o el extremo de entrada para las funciones de transmisión en vivo, como varias pistas de audio, subtítulos y hojas de objeto.

Configura mediante la creación de extremos de entrada

Puedes especificar configuraciones para las siguientes funciones durante la creación de extremos de entrada:

Incluye IP en la lista de IP permitidas

Puedes restringir el acceso a los extremos de entrada si especificas los rangos de IP desde los que se debe originar la transmisión de entrada, como la dirección IP del codificador. La canalización de video solo acepta tráfico de direcciones IP en estos rangos. Los rangos de IP deben estar en formato de bloques CIDR.

Configura el campo securityRules en el recurso Input:

{
  "type": "RTMP_PUSH",
  "securityRules": {
    "ipRanges": ["1.2.3.4/32"]
  }
}

Cómo configurar mediante la creación de canales

Puedes especificar configuraciones para las siguientes funciones durante la creación del canal:

Varias transmisiones con tasa de bits

Puedes crear configuraciones de canal avanzadas que admitan varias tasas de bits, resoluciones y velocidades de fotogramas. La siguiente configuración incluye dos objetos muxStream en la salida, uno a 360p con una velocidad de fotogramas de 30 FPS (mux_video_360p30) y otro a 720p con una velocidad de fotogramas de 60 FPS (mux_video_720p60). Esta configuración también admite varias tasas de bits de audio. Para obtener más información, consulta Tasas de bits recomendadas.

{
  "inputAttachments":[
    {
      "key":"input-primary",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output":{
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video_720p60",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 5500000,
          "frameRate": 60
        }
      }
    },
    {
      "key": "es_video_360p30",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 360,
          "widthPixels": 640,
          "bitrateBps": 400000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio_160k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "es_audio_64k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 64000
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_720p60",
      "elementaryStreams": [
        "es_video_720p60"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_360p30",
      "elementaryStreams": [
        "es_video_360p30"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_160k",
      "elementaryStreams": [
        "es_audio_160k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_64k",
      "elementaryStreams": [
        "es_audio_64k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Varias pistas de audio

Si la transmisión de entrada contiene más de una pista de audio, usa el objeto AudioMapping para seleccionar la pista para cada AudioStream.

{
  "inputAttachments": [
    {
      "key": "MY-INPUT",
      "input": "/projects/PROJECT-ID/locations/LOCATION/inputs/MY-INPUT",
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME/outputs/"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_first_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 1
          }
        ]
      }
    },
    {
      "key": "es_second_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 2
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video",
      "elementaryStreams": ["es_video"],
    },
    {
      "key": "mux_first_audio",
      "elementaryStreams": ["es_first_audio"],
    },
    {
      "key": "mux_second_audio",
      "elementaryStreams": ["es_second_audio"],
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Ten en cuenta que Shaka Player no admite las siguientes funciones para transmisiones HLS con varias pistas de audio:

  • Reproducción alternativa de pistas de audio con segmentos de TS.

  • Selección de pistas de audio secundarias y alternativas con segmentos fMP4.

Subtítulos CEA 608/708 de transferencia

Si las transmisiones de entrada contienen subtítulos CEA 608/708, puedes reenviarlos a las transmisiones de salida. Agrega el siguiente textStream a elementaryStreams cuando crees un Channel. Este textStream incorpora los subtítulos CEA 608/708 en todas las transmisiones y formatos de video de salida.

{
  "key": "captions",
  "textStream": {
    "codec": "cea608"
  }
}

Hojas de objeto

Para generar una hoja de objeto, configura el campo spriteSheets en el recurso Channel.

{
  "spriteSheets": [
    {
      "format": "jpeg",
      "filePrefix": "sprite",
      "interval": "2s",
      "spriteWidthPixels": 320,
      "spriteHeightPixels": 240,
      "columnCount": 3,
      "rowCount": 3,
      "quality": 80
    }
  ]
}