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 solortmp://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 IAMLOCATION
: la località in cui creare l'endpoint di input; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova l'endpoint di input; utilizza una delle regioni supportateMostra 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 campokey
,container
eelementaryStreams
.{ "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'oggettoDistribution
sukey
di un oggettoDistributionStream
.Per la distribuzione SRT, imposta
uri
nell'oggettoSrtPushOutputEndpoint
su un endpoint SRT che hai creato. Per la distribuzione RTMP, impostauri
nell'oggettoRtmpPushOutputEndpoint
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 IAMLOCATION
: la località in cui creare il canale; utilizza una delle regioni supportateMostra 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 caratteriINPUT_ID
: l'identificatore definito dall'utente per l'endpoint di inputBUCKET_NAME
: il nome del bucket Cloud Storage che hai creato per contenere i file manifest e segmento del live streamingSRT_SERVER_IP
: l'indirizzo IP o il nome di dominio dell'endpoint remotoSRT_SERVER_PORT
: il numero di porta dell'endpoint remotoSRT_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 IAMLOCATION
: la località in cui creare il canale; utilizza una delle regioni supportateMostra 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 caratteriINPUT_ID
: l'identificatore definito dall'utente per l'endpoint di inputBUCKET_NAME
: il nome del bucket Cloud Storage che hai creato per contenere i file manifest e segmento del live streamingRTMP_SERVER_IP
: l'indirizzo IP o il nome di dominio dell'endpoint remotoRTMP_SERVER_PORT
: il numero di porta dell'endpoint remotoRTMP_APP_NAME
: il prefisso del percorso per il nome del flussoRTMP_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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 canaleDISTRIBUTION_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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 canaleDISTRIBUTION_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:
- Crea un secret con Secret Manager.
- 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 servizioservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com
(in modo simile a come l'service account ha accesso ai tuoi bucket Cloud Storage). - 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova il tuo canale; utilizza una delle regioni supportateMostra 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 IAMLOCATION
: la località in cui si trova l'endpoint di input; utilizza una delle regioni supportateMostra 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
Nella console Google Cloud , vai alla pagina Browser Cloud Storage.
Seleziona la casella di controllo accanto al bucket che hai creato.
Fai clic su Elimina.
Nella finestra di dialogo visualizzata, fai clic su Elimina per eliminare il bucket e i relativi contenuti.