Questa pagina descrive come visualizzare l'anteprima dei flussi di input, con una latenza molto bassa, per rilevare potenziali problemi o eventi in tempo quasi reale. In questo modo puoi intraprendere azioni correttive, come mettere in pausa gli stream, inserire annunci o visualizzare slate, per mantenere un'esperienza di visualizzazione di alta qualità per i tuoi spettatori.
I contenuti di anteprima sono disponibili nel seguente formato:
- Formato: MPEG-TS
- Video:
- Risoluzione: 640 x 480
- Codec: H.264
- Frequenza fotogrammi: 25 frame al secondo (FPS)
- Audio
- Codec: AAC
- Frequenza di campionamento: 48 kHz
- Protocollo: HTTPS
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.
Crea un endpoint di input
Per creare un 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
.
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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
Ottieni 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 ; 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/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 un canale
Per creare un canale, utilizza il
metodo projects.locations.channels.create
. Gli esempi
seguenti creano un canale che genera un live streaming HLS. Il live streaming
consiste in un'unica riproduzione ad alta definizione (1280 x 720).
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 streaming
Corpo JSON della richiesta:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
Avviare 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 ; 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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
Installare un codificatore
Per utilizzare l'API, è necessario un codificatore per generare i flussi di input elaborati dall'API.
Installa ffmpeg
, poiché questa pagina
spiega come utilizzare ffmpeg
per generare flussi di input. Puoi installarlo in
Cloud Shell utilizzando questo comando.
sudo apt install ffmpeg
Inviare il flusso di input
Apri una nuova finestra del terminale. Esegui il seguente comando utilizzando INPUT_STREAM_URI dalla sezione Recupera i dettagli dell'endpoint di input. Questo comando genera un flusso di test.
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Recuperare l'URL dell'endpoint e il token bearer
Per ottenere l'URL dell'endpoint per i contenuti di anteprima e il token di autenticazione richiesto
per l'autenticazione, utilizza il metodo
projects.locations.inputs.preview
.
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:
{ "uri": ENDPOINT_URL, # For example, "preview.k3fhpvei3vvf.us-central1.livestream.goog/inputs/my-preview-input", "bearerToken": "BEARER_TOKEN" }
Utilizzerai i valori dei campi uri
e bearerToken
nella sezione
successiva.
Visualizzare l'anteprima dei contenuti
Per visualizzare i contenuti dell'anteprima, hai a disposizione le seguenti opzioni principali:
mpegts.js
mpegts.js è una libreria disponibile su GitHub per la riproduzione di stream MPEG-TS in un browser web.
Copia i valori dai campi bearerToken
e uri
che hai ricevuto in un
passaggio precedente nel seguente codice HTML. Crea un file HTML
dal seguente codice HTML e aprilo in un browser.
<html>
<head>
<script src="https://xqq.im/mpegts.js/dist/mpegts.js"></script>
<video id="video" autoplay controls muted></video>
<script>
function main() {
if (!mpegts.getFeatureList().mseLivePlayback) {
console.log("MSE live playback is not supported by the browswer!")
return;
}
var videoElement = document.getElementById("video");
player = mpegts.createPlayer(
{
type: "mse",
isLive: true,
<!-- Placeholder: Replace ENDPOINT_URL with the actual endpoint URL -->
url: "ENDPOINT_URL",
},
{
headers: {
<!-- Placeholder: Replace BEARER_TOKEN with the actual bearer token -->
Authorization: "BEARER_TOKEN",
},
}
);
player.attachMediaElement(videoElement);
player.load();
player.play();
}
main();
</script>
</body>
</html>
Dovresti vedere una sequenza di prova riprodotta con una latenza inferiore rispetto al live streaming associato. Questo lettore di stream può riprodurre solo la prima traccia audio di uno stream.
FFplay
FFplay è un lettore multimediale versatile da riga di comando che utilizza le librerie FFmpeg. Puoi trovare i download di FFplay nella pagina Scarica FFmpeg.
Apri una nuova finestra del terminale. Copia i valori dei campi bearerToken
e uri
che hai ricevuto in un passaggio precedente nel
comando seguente, quindi eseguilo.
ffplay -headers "Authorization: Bearer BEARER_TOKEN" \ -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 \ ENDPOINT_URL
Dovresti vedere una sequenza di prova riprodotta con una latenza inferiore rispetto al live
streaming associato. ffplay
supporta il passaggio da una traccia audio all'altra premendo il tasto "A".
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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
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 }
Questo comando crea un'operazione a lunga esecuzione (LRO) che puoi utilizzare per monitorare l'avanzamento della richiesta. Per ulteriori informazioni, consulta Gestire le operazioni di lunga durata .
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.