Composizione lato server (streaming in tempo reale) - Amazon IVS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Composizione lato server (streaming in tempo reale)

La composizione lato server utilizza un server IVS per mixare audio e video di tutti i partecipanti alla fase e quindi invia questo video misto a un canale IVS (ad esempio, per raggiungere un pubblico più ampio) o a un bucket S3. La composizione lato server viene richiamata tramite gli endpoint del piano di controllo (control-plane) IVS nella regione di origine della fase.

La trasmissione o la registrazione di una fase tramite la composizione lato server offrono numerosi vantaggi, rendendole scelte interessanti per gli utenti che cercano uno streaming live efficiente e affidabile.

Questo diagramma illustra come funziona la composizione lato server:

Trasmissione di una fase utilizzando la composizione lato server.

Vantaggi

Rispetto alla composizione lato client, la composizione lato server presenta i seguenti vantaggi:

  • Carico client ridotto: con la composizione lato server, l'onere dell'elaborazione e della combinazione di sorgenti audio e video viene spostato dai singoli dispositivi client al server stesso. La composizione lato server elimina la necessità per i dispositivi client di utilizzare la CPU e le risorse di rete per comporre la vista e trasmetterla a IVS. Ciò significa che gli spettatori possono guardare la trasmissione senza che i loro dispositivi debbano gestire attività che richiedono molte risorse, il che può portare a una maggiore durata della batteria e a esperienze di visualizzazione più fluide.

  • Qualità costante: la composizione lato server consente un controllo preciso sulla qualità, la risoluzione e il bitrate dello streaming finale. Ciò garantisce un'esperienza di visualizzazione coerente per tutti gli spettatori, indipendentemente dalle funzionalità dei singoli dispositivi.

  • Resilienza: centralizzando il processo di composizione sul server, la trasmissione diventa più solida. Anche se per un editore si presentano limitazioni o fluttuazioni tecniche, il server può adattarsi e fornire uno streaming più fluido a tutto il pubblico.

  • Efficienza della larghezza di banda: poiché il server gestisce la composizione, gli editori della fase non devono spendere una larghezza di banda aggiuntiva per trasmettere il video a IVS.

In alternativa, per trasmettere una fase su un canale IVS, puoi eseguire la composizione lato client; consulta Abilitazione di più host su un flusso IVS nella Guida per l'utente dello streaming a bassa latenza di IVS.

API IVS

La composizione lato server utilizza questi elementi chiave dell'API:

  • Un oggetto EncoderConfiguration consente di personalizzare il formato del video da generare (altezza, larghezza, bitrate e altri parametri di streaming). È possibile riutilizzare un EncoderConfiguration ogni volta che si chiama l'endpoint StartComposition.

  • Gli endpoint di composizione tengono traccia della composizione video e la trasmettono su un canale IVS.

  • StorageConfiguration tiene traccia del bucket S3 in cui vengono registrate le composizioni.

Per utilizzare la composizione lato server, è necessario creare un EncoderConfiguration e collegarlo quando si chiama l'endpoint StartComposition. In questo esempio, SquareVideo EncoderConfiguration viene utilizzato in due composizioni:

La composizione lato server utilizza due elementi chiave dell'API.

Per informazioni complete, consulta la Documentazione di riferimento delle API di streaming in tempo reale IVS.

Layouts (Layout)

Per impostazione predefinita, la funzionalità di composizione lato server utilizza un layout a griglia per disporre i partecipanti alla fase in slot di dimensioni uguali:

Layout a griglia della composizione lato server.

Questo layout offre ai clienti la possibilità di configurare e richiamare uno slot in evidenza. Lo slot in evidenza si trova nella schermata principale, mentre gli altri partecipanti sono mostrati sotto di esso in slot di dimensioni uguali:

Slot in evidenza del layout a griglia della composizione lato server.

Nota: la risoluzione massima supportata da un editore della fase per la composizione lato server è 1080p. Se un editore invia un video con risoluzione superiore a 1080p, verrà visualizzato come partecipante solo audio.

Nozioni di base

Prerequisiti

Per utilizzare la composizione lato server, è necessario disporre di una fase con editori attivi e utilizzare un canale IVS e/o un bucket S3 come destinazione della composizione. Di seguito, descriviamo un possibile flusso di lavoro che utilizza gli eventi EventBridge per avviare una composizione che trasmetta la fase su un canale IVS quando un partecipante pubblica. In alternativa, puoi avviare e interrompere le composizioni in base alla logica della tua applicazione. Consulta Registrazione composita per un altro esempio che mostra l'uso della composizione lato server per registrare una fase direttamente in un bucket S3.

  1. Crea un canale IVS. Consulta Guida introduttiva allo streaming a bassa latenza di Amazon IVS.

  2. Crea una fase IVS e dei token per i partecipanti per ogni editore.

  3. Crea un EncoderConfiguration.

  4. Unisciti alla fase e pubblica su di essa. (Consulta le sezioni "Pubblicazione e sottoscrizione" delle guide per l'SDK di trasmissione in streaming in tempo reale: Web, Android e iOS).

  5. Quando ricevi un evento EventBridge Partecipante pubblicato, chiama StartComposition.

  6. Attendi qualche secondo e guarda la vista composita nella riproduzione del canale.

Flusso di lavoro di composizione lato server che utilizza gli eventi EventBridge per avviare una composizione quando un partecipante pubblica.

Nota: una composizione si spegne automaticamente dopo 60 secondi di inattività degli editori che partecipano alla fase. A quel punto, la composizione è terminata e passa a uno stato STOPPED. Una composizione viene eliminata automaticamente dopo alcuni minuti nello stato STOPPED.

Istruzioni per la CLI

L'uso di AWS CLI è un'opzione avanzata e richiede prima il download e la configurazione della CLI sul computer. Per maggiori dettagli, consultare la Guida per l'utente dell'interfaccia a riga di comando di AWS.

Ora puoi usare la CLI per creare e gestire le risorse. Gli endpoint della composizione si trovano nello spazio dei nomi ivs-realtime.

Creazione della risorsa EncoderConfiguration

Un oggetto EncoderConfiguration consente di personalizzare il formato del video da generare (altezza, larghezza, bitrate e altri parametri di streaming). È possibile riutilizzare un EncoderConfiguration ogni volta che si chiama l'endpoint di composizione, come spiegato nel passaggio successivo.

Il comando seguente crea una risorsa EncoderConfiguration che configura i parametri di composizione video lato server (bitrate video, framerate e risoluzione):

aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"

La risposta è:

{ "encoderConfiguration": { "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4", "name": "MyEncoderConfig", "tags": {}, "video": { "bitrate": 2500000, "framerate": 30, "height": 720, "width": 1280 } } }

Inizio di una composizione

Utilizzando l'ARN di EncoderConfiguration fornito nella risposta precedente, crea la tua risorsa di composizione:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]'

La risposta mostrerà che la composizione è stata creata con uno stato STARTING. Una volta che Composition inizia a pubblicare la composizione, lo stato passa a ACTIVE. (Puoi vedere lo stato chiamando l'endpoint ListCompositions o GetComposition.)

Una volta che la composizione è ACTIVE, la vista composita della fase IVS sarà visibile sul canale IVS, tramite ListCompositions:

aws ivs-realtime list-compositions

La risposta è:

{ "compositions": [ { "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP", "destinations": [ { "id": "bD9rRoN91fHU", "startTime": "2023-09-21T15:38:39+00:00", "state": "ACTIVE" } ], "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime": "2023-09-21T15:38:37+00:00", "state": "ACTIVE", "tags": {} } ] }

Nota: per mantenere viva la composizione, è necessario che i partecipanti editori pubblichino attivamente nella fase. Per ulteriori informazioni, consulta le sezioni "Pubblicazione e sottoscrizione" delle guide per l'SDK di trasmissione in streaming in tempo reale: Web, Android e iOS. È necessario creare un token di fase distinto per ogni partecipante.

Abilitazione della condivisione dello schermo

Per utilizzare un layout di condivisione dello schermo fisso, completa la procedura riportata di seguito.

Creazione della risorsa EncoderConfiguration

Il comando seguente crea una risorsa EncoderConfiguration che configura i parametri di composizione lato server (bitrate video, framerate e risoluzione).

aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}

Crea un token per i partecipanti alla fase con un attributo screen-share. Poiché specificheremo screen-share come nome dello slot featured, dobbiamo creare un token di fase con l'attributo screen-share impostato su true:

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true

La risposta è:

{ "participantToken": { "attributes": { "screen-share": "true" }, "expirationTime": "2023-08-04T05:26:11+00:00", "participantId": "E813MFklPWLF", "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA" } }

Inizio della composizione

Per iniziare la composizione utilizzando la funzione di condivisione dello schermo, utilizziamo questo comando:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout "grid={featuredParticipantAttribute=screen-share}"

La risposta è:

{ "composition" : { "arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz", "destinations" : [ { "configuration" : { "channel" : { "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO" }, "name" : "" }, "id" : "SGmgBXTULuXv", "state" : "STARTING" } ], "layout" : { "grid" : { "featuredParticipantAttribute" : "screen-share" } }, "stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime" : "2023-09-27T21:32:38Z", "state" : "STARTING", "tags" : { } } }

Quando il partecipante alla fase E813MFklPWLF si unisce alla fase, il video di quel partecipante verrà visualizzato nello slot in evidenza e tutti gli altri editori della fase saranno visualizzati sotto lo slot:

Inizio della composizione utilizzando la funzione di condivisione dello schermo.

Arresto della composizione

Per arrestare una composizione in qualsiasi momento, chiama l'endpoint StopComposition:

aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz

Ciclo di vita della composizione

Usa il diagramma seguente per comprendere le transizioni di stato di una composizione. In generale, il ciclo di vita di una composizione è il seguente:

  1. Quando l'utente chiama l'endpoint StartComposition, viene creata una risorsa della composizione

  2. Una volta che IVS avvia correttamente la composizione, viene inviato un evento EventBridge "Modifica allo stato della composizione IVS (Inizio sessione)". Consulta Utilizzo di EventBridge con lo streaming in tempo reale IVS per i dettagli sugli eventi.

  3. Una volta che una composizione è in uno stato attivo, può verificarsi quanto segue:

    • L'utente interrompe la composizione: se viene chiamato l'endpoint StopComposition, IVS avvia un arresto graduale della composizione, inviando gli eventi "Fine destinazione" seguiti da un evento "Fine sessione".

    • La composizione si spegne automaticamente: se nessun partecipante pubblica attivamente nella fase IVS, la composizione viene finalizzata automaticamente dopo 60 secondi e vengono inviati gli eventi EventBridge.

    • Errore di destinazione: se una destinazione riporta inaspettatamente un errore (ad esempio, il canale IVS viene eliminato), la destinazione passa allo stato RECONNECTING e viene inviato un evento "Riconnessione della destinazione". Se il ripristino è impossibile, IVS trasferisce la destinazione allo stato FAILED e viene inviato un evento "Errore destinazione". IVS mantiene viva la composizione se almeno una delle sue destinazioni è attiva.

  4. Una volta che la composizione è nello stato STOPPED o FAILED, viene ripulita automaticamente dopo cinque minuti. (Quindi non viene più recuperata da ListCompositions o GetComposition.)

Ciclo di vita di una risorsa di composizione lato server.