Configurare le impostazioni di live streaming

In questa pagina viene descritto come configurare le impostazioni durante la creazione dell'endpoint di input o del canale per le funzionalità di live streaming, come le tracce audio, i sottotitoli codificati e i fogli sprite.

Configura tramite la creazione dell'endpoint di input

Puoi specificare le configurazioni per le seguenti funzionalità durante la creazione di endpoint di input:

Lista consentita IP

Puoi limitare l'accesso agli endpoint di input specificando gli intervalli IP da cui deve provenire il flusso di input, ad esempio l'indirizzo IP del codificatore. La pipeline video accetta solo il traffico proveniente da indirizzi IP compresi in questi intervalli. Gli intervalli IP devono essere in formato a blocchi CIDR.

Configura il campo securityRules nella risorsa Input:

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

Configura tramite la creazione del canale

Puoi specificare le configurazioni per le seguenti funzionalità durante la creazione del canale:

Flussi di velocità in bit multipli

Puoi creare configurazioni avanzate del canale che supportano più velocità in bit, risoluzioni e frequenze fotogrammi. La configurazione seguente include due muxStream nell'output, uno a 360p con una frequenza fotogrammi di 30 FPS (mux_video_360p30) e un altro a 720p con una frequenza fotogrammi di 60 FPS (mux_video_720p60). Questa configurazione supporta anche diverse velocità in bit audio. Per ulteriori informazioni, consulta la sezione Bitrate consigliate.

{
  "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": [
    {
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Tracce audio multiple

Se il flusso di input contiene più di una traccia audio, utilizza l'oggetto AudioMapping per selezionare la traccia per ogni 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": [
    {
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Tieni presente che Shaka Player non supporta le seguenti funzionalità per gli stream HLS con più tracce audio:

  • Riproduzione di tracce audio alternative con segmenti TS.

  • Selezione delle tracce audio secondarie e alternative con segmenti fMP4.

Sottotitoli CEA 608/708 passthrough

Se i flussi di input contengono sottotitoli CEA 608/708, puoi inoltrare i sottotitoli ai flussi di output. Aggiungi il seguente textStream a elementaryStreams quando crei un Channel. In questo modo, textStream incorpora i sottotitoli CEA 608/708 in tutti i video stream e le versioni di output.

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

Fogli sprite

Per generare un foglio sprite, configura il campo spriteSheets nella risorsa Channel.

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