Configurare le impostazioni del live streaming

In questa pagina viene descritto come configurare le impostazioni durante l'endpoint o il canale di input. per le funzionalità di live streaming, ad esempio più tracce audio, sottotitoli codificati fogli sprite.

Configurazione tramite la creazione dell'endpoint di input

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

Lista consentita IP

Puoi limitare l'accesso agli endpoint di input specificando gli intervalli IP da cui deve provenire lo stream 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 blocco CIDR.

Configura il campo securityRules nella risorsa Input:

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

Configurazione tramite la creazione del canale

Durante la creazione del canale, puoi specificare le configurazioni per le seguenti funzionalità:

Stream con più velocità in bit

Puoi creare configurazioni avanzate del canale che supportano più velocità in bit, risoluzioni e frequenze frame. La configurazione seguente include due muxStream nell'output, uno a 360p con una frequenza fotogrammi di 30 f/s (mux_video_360p30) e un'altra a 720p con una frequenza fotogrammi di 60 f/s (mux_video_720p60). Questa configurazione supporta anche più velocità in bit audio. Consulta Velocità in bit consigliate per ulteriori informazioni.

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

Più tracce audio

Se lo stream di input contiene più tracce 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": [
    {
      "key": "manifest_dash",
      "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:

  • Intercala la riproduzione delle tracce audio con i segmenti TS.

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

Sottotitoli codificati passthrough CEA 608/708

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

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

Spritesheet

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

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