Questa pagina mostra come generare immagini in overlay statiche sopra un live streaming. Un'immagine in overlay statica rimane visibile per l'intero live streaming. Puoi configurare la risoluzione e la posizione di un'immagine in overlay statica.
Configura il progetto Google Cloud e l'autenticazione
Se non hai creato un progetto Google Cloud e le credenziali, consulta Prima di iniziare.Carica un'immagine nel bucket Cloud Storage
- Nella console Google Cloud, vai alla pagina Browser Cloud Storage.
Vai alla pagina Browser Cloud Storage - Fai clic sul nome del bucket per aprirlo.
- Fai clic su Carica file.
- Seleziona un file immagine (JPEG o PNG) da caricare dalla tua macchina locale. Puoi utilizzare questa immagine di overlay di esempio.
L'immagine è ora salvata nel bucket Cloud Storage.
Creare una risorsa
Gli asset sono video o immagini che possono essere utilizzati con l'API Live Stream. Crea un asset immagine da utilizzare come overlay statico.
Per creare una risorsa, utilizza il metodo
projects.locations.assets.create
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la località in cui creare l'asset. Utilizza una delle regioni supportateMostra sedius-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
ASSET_ID
: un identificatore definito dall'utente per la nuova risorsa da creare. Questo valore deve contenere da 1 a 63 caratteri, deve iniziare e terminare con[a-z0-9]
e può contenere trattini (-) tra i caratteri. Ad esempio:my-asset
.ASSET_URI
: l'URI dell'immagine nel bucket Cloud Storage da utilizzare, ad esempiogs://my-bucket/my-image.png
Corpo JSON della richiesta:
{ "image": { "uri": "ASSET_URI" } }
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/assets/ASSET_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 la risorsa è stata creata. Se la risposta contiene "done: false"
, ripeti il comando finché la risposta non contiene "done: true"
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la località in cui si trova la risorsa. Utilizza una delle regioni supportateMostra sedius-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/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Asset", "name": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "image": { "uri": "ASSET_URI" }, "crc32c": "ae1EJg==", "state": "ACTIVE" } }
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 . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la posizione in cui creare l'endpoint di input. Utilizza una delle regioni supportateMostra sedius-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 lo stream di input). Questo valore deve contenere da 1 a 63 caratteri, deve iniziare e terminare con[a-z0-9]
e può contenere trattini (-) tra i caratteri. Ad esempio:my-input
.
Corpo JSON della richiesta:
{ "type": "RTMP_PUSH" }
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 }
Puoi controllare il risultato dell'operazione di creazione dell'input utilizzando il nuovo ID operazione.
Ottenere i dettagli dell'endpoint di input
Per ottenere i dettagli dell'endpoint di input, utilizza il metodo
projects.locations.inputs.get
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la località in cui si trova l'endpoint di input. Utilizza una delle regioni supportateMostra sedius-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/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" }
Individua il campo uri
e copia il valore INPUT_STREAM_URI
visualizzato per utilizzarlo in un secondo momento nella sezione Inviare lo stream di input.
Creare il canale
Per creare il canale, utilizza il metodo
projects.locations.channels.create
.
Prendi nota dell'array staticOverlays
nella configurazione del canale:
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
}
],
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la località in cui creare il canale. Utilizza una delle regioni supportateMostra sedius-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, deve 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 segment del live streamingASSET_ID
: l'identificatore definito dall'utente per la risorsa
Corpo JSON della richiesta:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "staticOverlays": [ { "asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "position": { "x": 0.5, "y": 0.5 }, "resolution": { "w": 0.1 }, "opacity": 0.8 }, ], "elementaryStreams": [ { "key": "es_video", "videoStream": { "h264": { "profile": "high", "widthPixels": 1280, "heightPixels": 720, "bitrateBps": 3000000, "frameRate": 30 } } }, { "key": "es_audio", "audioStream": { "codec": "aac", "channelCount": 2, "bitrateBps": 160000 } } ], "muxStreams": [ { "key": "mux_video_ts", "container": "ts", "elementaryStreams": ["es_video", "es_audio"], "segmentSettings": { "segmentDuration": "2s" } } ], "manifests": [ { "key": "manifest_hls", "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5 } ] }
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 di creazione del canale utilizzando il nuovo ID operazione.
Avvia il canale
Per avviare un canale, utilizza il metodo projects.locations.channels.start
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud . Puoi trovarlo nel campo Numero progetto della paginaImpostazioni IAM.LOCATION
: la località in cui si trova il tuo canale. Utilizza una delle regioni supportateMostra sedius-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 del canale definito dall'utente
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 }
Puoi controllare il risultato dell'operazione di inizio del canale utilizzando il nuovo ID operazione.
Invia il flusso di input
Apri una nuova finestra del terminale. Esegui il seguente comando utilizzandoINPUT_STREAM_URI
della sezione
Ottieni i dettagli dell'endpoint di input:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Riproduci il live streaming generato
Per riprodurre il file multimediale generato in Shaka Player, compila i seguenti passaggi:
- Rendi pubblicamente leggibile il bucket Cloud Storage che hai creato.
- Per abilitare la condivisione delle risorse tra origini (CORS) su un bucket Cloud Storage, segui questi passaggi:
- Crea un file JSON contenente quanto segue:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
Esegui il seguente comando dopo aver sostituito
JSON_FILE_NAME
con il nome del file JSON creato nel passaggio precedente:gcloud storage buckets update gs://BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Crea un file JSON contenente quanto segue:
- Nel bucket Cloud Storage, individua il file
main.m3u8
generato. Fai clic su Copia URL nella colonna Accesso pubblico del file. - Vai a Shaka Player, un lettore per live streaming online.
- Fai clic su Custom Content (Contenuti personalizzati) nella barra di navigazione in alto.
- Fai clic sul pulsante +.
Incolla l'URL pubblico del file nella casella Manifest URL (URL del manifest).
Digita un nome nella casella Name (Nome).
Fai clic su Save (Salva).
Fai clic su Play (Riproduci).
L'overlay dovrebbe apparire sopra il live streaming.