Questa pagina mostra come generare immagini 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 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 dal computer locale. Tu puoi utilizzare questa immagine overlay di esempio.
L'immagine è ora salvata nel bucket Cloud Storage.
Creare una risorsa
Le risorse 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 tuo progetto Google Cloud numero; che si trova nel campo Numero progetto nella Pagina Impostazioni IAMLOCATION
: la posizione in cui creare il asset; utilizza una delle regioni supportateSedi dei negozius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
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 delle seguenti 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 tuo progetto Google Cloud numero; che si trova nel campo Numero progetto nella Pagina Impostazioni IAMLOCATION
: la località in cui si trova la risorsa. 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-northeast1
asia-southeast1
australia-southeast1
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
projects.locations.inputs.create
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud, che si trova nel campo Numero progetto della pagina Impostazioni IAMLOCATION
: la posizione in cui creare l'endpoint di input. Utilizza una delle regioni supportateSedi dei negozius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
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 delle seguenti 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 della 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 tuo progetto Google Cloud numero; che si trova nel campo Numero progetto nella Pagina Impostazioni IAMLOCATION
: la posizione in cui si trova l'endpoint di input. Utilizza una delle regioni supportateSedi dei negozius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: l'identificatore definito dall'utente per la endpoint di input
Per inviare la richiesta, espandi una delle seguenti 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" }
Trova il campo uri
e copia il valore restituito
INPUT_STREAM_URI
da utilizzare in seguito nella sezione Invia il flusso 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, che si trova nel campo Numero progetto della pagina Impostazioni IAMLOCATION
: la posizione in cui creare il channel; utilizza una delle regioni supportateSedi dei negozius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: un identificatore definito dall'utente per il canale per create; 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 delle seguenti 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, effettua le seguenti sostituzioni:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud, che si trova nel campo Numero progetto della pagina Impostazioni IAMLOCATION
: la località in cui si trova il tuo canale located; utilizza una delle regioni supportateSedi dei negozius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: un identificatore del canale definito dall'utente
Per inviare la richiesta, espandi una delle seguenti 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 questo comando utilizzando
INPUT_STREAM_URI
dal
Sezione Ottenere 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 leggibile pubblicamente 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, uno player 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.