Distribuire i live streaming a endpoint remoti

Questa pagina spiega come distribuire l'output dello stream live agli endpoint remoti utilizzando il protocollo Secure Reliable Transport (SRT) o il protocollo Real-Time Messaging Protocol (RTMP). Sia SRT che RTMP vengono utilizzati in modalità push per inviare lo stream agli endpoint. I formati contenitore supportati sono MPEG-TS per SRT e FLV per RTMP.

Prima di iniziare

Questa pagina presuppone che tu abbia completato i passaggi descritti nella sezione Prima di iniziare della Guida rapida per un live streaming HLS.

A seconda del protocollo di distribuzione scelto, crea un endpoint SRT o RTMP sul provider in cui vuoi ricevere l'output in modalità push. Il formato dell'URI dell'endpoint varia in base al protocollo:

  • Per SRT: srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID
  • Per RTMP: rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEY o solo rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME

SRT_SERVER_IP e RTMP_SERVER_IP possono essere un indirizzo IP o un nome di dominio.

Crea l'endpoint di input

Per creare l'endpoint di input, utilizza il metodo projects.locations.inputs.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui creare l'endpoint di input; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: un identificatore definito dall'utente per il nuovo endpoint di input da creare (a cui invii il flusso di input). Questo valore deve contenere da 1 a 63 caratteri, iniziare e terminare con [a-z0-9] e può contenere trattini (-) tra i caratteri. Ad esempio: my-input.

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Copia il valore OPERATION_ID restituito da utilizzare nella sezione successiva.

Controlla il risultato

Utilizza il metodo projects.locations.operations.get per verificare se l'endpoint di input è stato creato. Se la risposta contiene "done: false", ripeti il comando finché la risposta non contiene "done: true". La creazione del primo endpoint di input in una regione può richiedere fino a 10 minuti.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova l'endpoint di input; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • OPERATION_ID: l'identificatore dell'operazione

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "endTime": END_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "createTime": CREATE_TIME,
    "updateTime": UPDATE_TIME,
    "type": "RTMP_PUSH",
    "uri":  INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b",
    "tier": "HD"
  }
}

Trova il campo uri e copia il valore INPUT_STREAM_URI restituito da utilizzare in un secondo momento nella sezione Invia il flusso di input.

Crea il canale

Per creare il canale, utilizza il metodo projects.locations.channels.create.

Tieni presente quanto segue nella configurazione del canale:

  • L'array distributionStreams contiene le impostazioni di multiplexing dei flussi per le distribuzioni.
  • Ogni oggetto DistributionStream deve includere un campo key, container e elementaryStreams.

    {
      "distributionStreams": [
        {
          "key": "ds1",
          "container": "ts", // to be used with an SRT distribution
          "elementaryStreams": [
            "es_video_720",
            "es_audio"
          ]
        },
        {
          "key": "ds2",
          "container": "flv", // to be used with an RTMP distribution
          "elementaryStreams": [
            "es_video_640",
            "es_audio"
          ]
        }
      ]
    }
    
  • L'array distributions elenca le configurazioni di distribuzione, inclusi gli endpoint remoti.

  • Imposta il campo distributionStream nell'oggetto Distribution su key di un oggetto DistributionStream.

  • Per la distribuzione SRT, imposta uri nell'oggetto SrtPushOutputEndpoint su un endpoint SRT che hai creato. Per la distribuzione RTMP, imposta uri nell'oggetto RtmpPushOutputEndpoint su un endpoint RTMP che hai creato.

    {
      "distributions": [
        {
          "key": "pd1",
          "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
          "srtPush": {
            "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
          }
        },
        {
          "key": "pd2",
          "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container
          "rtmpPush": {
            "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/",
            "streamKey": "RTMP_STREAM_KEY"
          }
        }
      ]
    }
    
  • Per distribuire i sottotitoli codificati generati con l'AI e quelli tradotti, consulta la guida alla configurazione di sottotitoli codificati e traduzioni automatiche.

Gli esempi seguenti utilizzano un solo oggetto DistributionStream e un solo oggetto Distribution.

REST

SRT

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui creare il canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale da creare; questo valore deve contenere da 1 a 63 caratteri, iniziare e terminare con [a-z0-9] e può contenere trattini (-) tra i caratteri
  • INPUT_ID: l'identificatore definito dall'utente per l'endpoint di input
  • BUCKET_NAME: il nome del bucket Cloud Storage che hai creato per contenere i file manifest e segmento del live streaming
  • SRT_SERVER_IP: l'indirizzo IP o il nome di dominio dell'endpoint remoto
  • SRT_SERVER_PORT: il numero di porta dell'endpoint remoto
  • SRT_SERVER_STREAM_ID: l'ID stream dell'endpoint remoto

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

RTMP

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui creare il canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale da creare; questo valore deve contenere da 1 a 63 caratteri, iniziare e terminare con [a-z0-9] e può contenere trattini (-) tra i caratteri
  • INPUT_ID: l'identificatore definito dall'utente per l'endpoint di input
  • BUCKET_NAME: il nome del bucket Cloud Storage che hai creato per contenere i file manifest e segmento del live streaming
  • RTMP_SERVER_IP: l'indirizzo IP o il nome di dominio dell'endpoint remoto
  • RTMP_SERVER_PORT: il numero di porta dell'endpoint remoto
  • RTMP_APP_NAME: il prefisso del percorso per il nome del flusso
  • RTMP_STREAM_KEY: la chiave stream dell'endpoint remoto

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Recuperare il canale

Dopo aver creato il canale, utilizza il metodo projects.locations.channels.get per eseguire query sullo stato del canale.

REST

SRT

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "srtPush": {
        "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
      }
    }
  ]
}

RTMP

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "flv",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "rtmpPush": {
        "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME",
        "streamKey": "RTMP_STREAM_KEY"
      }
    }
  ]
}

La risposta completa contiene i seguenti campi:

{
  ...
  "streamingState": "STOPPED",
  "distributions": [
    {
      ...
      "state": "NOT_READY"
      ...
    }
  ]
  ...
}

Questa risposta indica lo stato di streaming del canale e le distribuzioni del canale.

Se la distribuzione è in stato NOT_READY , non può essere avviata. Devi attendere che lo stato cambi in READY per poter iniziare a distribuire lo stream.

La creazione del primo flusso di distribuzione può richiedere fino a 10 minuti. Lo stato della distribuzione è indipendente da quello del canale. Puoi avviare il canale e attendere che la distribuzione diventi READY, quindi avviare la distribuzione.

Ora puoi avviare il canale.

Avviare il canale

Utilizza il metodo projects.locations.channels.start per avviare il canale. Un canale deve essere avviato prima di poter accettare flussi di input o generare un flusso di output.

L'avvio del primo canale in una regione richiede circa 10 minuti.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "start",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Per determinare se il canale è stato avviato, recupera le informazioni come fatto in precedenza. La risposta deve contenere quanto segue:

{
  ...
  "streamingState": "AWAITING_INPUT"
  ...
}

Inviare il flusso di input

Apri una nuova finestra del terminale. Esegui questo comando utilizzando INPUT_STREAM_URI dalla sezione Controlla il risultato:

ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
  -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI

Lo streaming del canale è ora attivo, ma le distribuzioni sono ancora interrotte.

Avviare le distribuzioni

Le distribuzioni devono essere in stato READY per essere avviate. Per iniziare a distribuire l'output del live streaming a tutti gli endpoint remoti, utilizza il metodo projects.locations.channels.startdistribution.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione. Dopo l'avvio di una distribuzione, può essere nello stato AWAITING_INPUT se lo stream di input non è stato avviato o nello stato DISTRIBUTING se lo stream di input viene distribuito agli endpoint specificati.

(Facoltativo) Avvia un insieme di distribuzioni

Puoi avviare una serie di distribuzioni anziché tutte contemporaneamente. Elenca le distribuzioni da cui vuoi iniziare aggiungendo le relative chiavi all'elenco di array distributionKeys.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale
  • DISTRIBUTION_KEYS: un elenco separato da virgole di chiavi stringa (ad esempio, "pd1")

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Verifica che le distribuzioni siano in esecuzione

Per verificare che le distribuzioni siano iniziate, recupera le informazioni sul canale come fatto in precedenza. La risposta deve contenere quanto segue:

{
  "distributions": [
    {
      ...
      "state": "DISTRIBUTING"
      ...
    },
    ...
  ]
}

Sul server SRT o RTMP remoto, verifica che l'endpoint che hai creato stia ricevendo dati.

Interrompere le distribuzioni

Per interrompere la distribuzione dell'output del live streaming a tutti gli endpoint remoti, utilizza il metodo projects.locations.channels.stopdistribution.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

(Facoltativo) Interrompere un insieme di distribuzioni

Puoi interrompere un insieme di distribuzioni anziché tutte contemporaneamente. Elenca le distribuzioni che vuoi interrompere aggiungendo le relative chiavi all'elenco di array distributionKeys.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale
  • DISTRIBUTION_KEYS: un elenco separato da virgole di chiavi stringa (ad esempio, "pd1")

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Supporto della crittografia SRT

Se utilizzi il protocollo SRT per distribuire l'output del live streaming all'endpoint remoto, l'API Live Stream protegge i contenuti del live streaming con la crittografia AES.

Crea la passphrase e prepara il server SRT remoto

Prima di iniziare, crea una passphrase SRT conforme al server SRT remoto. La passphrase deve essere in genere una stringa di 10-79 caratteri.

Assicurati che la procedura di decrittografia funzioni impostando la stessa passphrase nel server SRT remoto. Per informazioni su come farlo, consulta la guida dell'utente del server SRT remoto.

Aggiungi la passphrase a Secret Manager

L'API Live Stream non accetta né gestisce direttamente la passphrase. Devi condividere la passphrase con l'API Live Stream tramite Google Secret Manager.

Devi completare tutti questi passaggi prima di configurare il canale:

  1. Crea un secret con Secret Manager.
  2. Configura le autorizzazioni Identity and Access Management per il secret in modo che l'API Live Stream possa accedere ai contenuti del secret. Per farlo, concedi il ruolo secretmanager.secretAccessor al account di servizio service-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com (in modo simile a come l'service account ha accesso ai tuoi bucket Cloud Storage).
  3. Trova il nome della risorsa della versione del secret che hai creato (ad esempio, projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID). Ti serve questo nome per configurare il canale.

Configurare il canale

La versione del secret della passphrase è specificata all'interno di SrtPushOutputEndpoint:

{
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
      "srtPush": {
        "uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
        "passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
      }
    }
  ]
}

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

Interrompere il canale

Utilizza il metodo projects.locations.channels.stop per interrompere il canale. Devi interrompere il canale prima di poterlo eliminare.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stop",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Interrompere lo stream di input

Se hai utilizzato ffmpeg per inviare il flusso di input, la connessione viene interrotta automaticamente dopo l'interruzione del canale.

Eliminare il canale

Utilizza il metodo projects.locations.channels.delete per eliminare il canale. Devi eliminare il canale prima di poter eliminare l'endpoint di input utilizzato dal canale.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova il tuo canale; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: un identificatore definito dall'utente per il canale

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Elimina l'endpoint di input

Utilizza il metodo projects.locations.inputs.delete per eliminare l'endpoint di input.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud ; si trova nel campo Numero progetto nella pagina Impostazioni IAM
  • LOCATION: la località in cui si trova l'endpoint di input; utilizza una delle regioni supportate
    Mostra località
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: l'identificatore definito dall'utente per l'endpoint di input

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Puoi controllare il risultato dell'operazione utilizzando il nuovo ID operazione.

Elimina il bucket Cloud Storage

  1. Nella console Google Cloud , vai alla pagina Browser Cloud Storage.

    Vai alla pagina Browser Cloud Storage

  2. Seleziona la casella di controllo accanto al bucket che hai creato.

  3. Fai clic su Elimina.

  4. Nella finestra di dialogo visualizzata, fai clic su Elimina per eliminare il bucket e i relativi contenuti.