Configurar los ajustes de las emisiones en directo

En esta página se describe cómo configurar los ajustes durante la creación de un punto final de entrada o de un canal para las funciones de emisión en directo, como varias pistas de audio, subtítulos y hojas de sprites.

Configurar mediante la creación de un punto final de entrada

Puede especificar configuraciones para las siguientes funciones durante la creación del endpoint de entrada:

Incluir IPs en lista de IP permitidas

Puede restringir el acceso a los endpoints de entrada especificando los intervalos de IP desde los que debe proceder el flujo de entrada, como la dirección IP del codificador. La canalización de vídeo solo acepta tráfico de direcciones IP de estos intervalos. Los intervalos de IP deben estar en formato de bloque CIDR.

Configure el campo securityRules en el recurso Input:

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

Configurar durante la creación del canal

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

Streams con varias tasas de bits

Puedes crear configuraciones de canal avanzadas que admitan varias tasas de bits, resoluciones y frecuencias de fotogramas. La siguiente configuración incluye dos muxStreams 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 frecuencias de bits de audio. Consulta la sección Tasas de bits recomendadas para obtener más información.

{
  "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 el flujo de entrada contiene más de una pista de audio, usa el objeto AudioMapping para seleccionar la pista de 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 las secuencias HLS con varias pistas de audio:

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

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

Subtítulos CEA 608/708

Si los flujos de entrada contienen subtítulos CEA 608/708, puedes reenviarlos a los flujos de salida. Añade lo siguiente textStream a elementaryStreams al crear un Channel. De esta forma, textStream se insertan los subtítulos CEA 608/708 en todos los flujos y las versiones de vídeo de salida.

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

Hojas de sprites

Para generar una hoja de sprites, 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
    }
  ]
}