Configurazione dello streaming di Amazon IVS - Amazon IVS

Configurazione dello streaming di Amazon IVS

Amazon Interactive Video Service (IVS) consente agli sviluppatori di distribuire facilmente video a bassa latenza agli spettatori di tutto il mondo. Con Amazon IVS, gli streamer devono gestire solo la produzione in streaming, per poi inviare il flusso ad Amazon IVS. Amazon IVS gestisce l'elaborazione video (acquisizione e transcodifica), la consegna e la riproduzione agli spettatori utilizzando il lettore Amazon IVS.

Esiste una vasta gamma di soluzioni per lo streaming live. Sia che si abbia uno studio dotato di più telecamere, switcher visivi, compositing grafico e una varietà di apparecchiature di missaggio audio o che si abbia intenzione di lanciare il proprio primo streaming da uno smartphone, sarà necessario affrontare alcuni degli stessi concetti e parametri di codifica.

In questo documento viene descritto come configurare i codificatori video per lo streaming su Amazon IVS. Il documento è diretto agli sviluppatori che desiderano creare funzionalità di streaming nelle proprie applicazioni.

L'input di solo audio non è supportato per lo streaming a bassa latenza IVS.

Prerequisiti

Seguire la procedura riportata in Guida introduttiva allo streaming a bassa latenza IVS per creare un canale e configurare lo streaming. In questo processo vengono assegnati un ARN (Amazon Resource Name) di canale e una chiave di flusso, insieme agli URL per l'inserimento e la riproduzione di uno stream. Sarà necessario puntare l'applicazione di streaming all'URL di acquisizione.

Prima di leggere questo documento, è bene avere familiarità con:

Riduzione della latenza

Lo streaming a bassa latenza di Amazon IVS è compatibile con la maggior parte delle applicazioni di streaming e richiede solo piccole modifiche alla configurazione dell'applicazione di streaming. Per ottenere la latenza più bassa possibile, è necessario utilizzare il lettore Amazon IVS; i lettori video HLS di terze parti non sono supportati. Consultare la documentazione dell'SDK del lettore Amazon IVS.

Per preparare l'applicazione di streaming per lo streaming a bassa latenza, completare la procedura riportata di seguito. Nota: non tutte queste opzioni sono disponibili su tutte le applicazioni di streaming.

  • Sul codificatore video, impostare IDR/Keyframe su un intervallo di 2 secondi (o 1 secondo, per una latenza end-to-end ancora più bassa).

    IDR/Keyframe influenza direttamente la tempistica di avvio del flusso e la latenza degli eventi EventBridge correlati (Stream Start e Recording Start). Se IDR/Keyframe è 2 secondi, la latenza di avvio del flusso sarà di circa 6-7 secondi. Se IDR/Keyframe è 1 secondo, la latenza di avvio del flusso sarà di circa 3-4 secondi. Il video sarà disponibile per gli spettatori e la registrazione automatica su Amazon S3 solo dopo il periodo iniziale di latenza di avvio dello streaming.

    L'intervallo di fotogrammi chiave più breve di 1 secondo presenta alcuni compromessi QoS. Può causare lo streaming adattivo in bitrate (ABR) del lettore Amazon IVS per cambiare la risoluzione più spesso; la dimensione del segmento è più piccola, quindi il controllo ABR avviene più spesso. Il buffering può aumentare a causa di un aumento della risoluzione-commutazione e/o se la rete dello spettatore non riesce a scaricare i segmenti abbastanza velocemente. Valutare questi compromessi quando si decide se utilizzare un intervallo di fotogrammi chiave di 1 o 2 secondi.

    Evita di impostare IDR/Keyframe su valori superiori a 5 secondi. Oltre ad aumentare la latenza di avvio dello streaming rispetto a quando si utilizzano 1 o 2 secondi, IVS non sarà in grado di garantire che ogni segmento generato per la riproduzione inizi con un IDR/fotogramma chiave. I segmenti che non iniziano con un IDR/fotogramma chiave possono causare errori di decodifica o distorsioni visive quando gli spettatori avviano la riproduzione o modificano il rendering.

  • Se disponibile, impostare il codificatore sulla sintonizzazione a latenza zero all'interno di una configurazione x264.

  • Assicurarsi che la dimensione del buffer (VBV) non superi il bitrate medio (kilobit al secondo) del flusso.

Evitare servizi di streaming/inoltro di terze parti

Si consiglia vivamente di non utilizzare un servizio di terze parti per il restreaming o per inoltrare contenuti ad Amazon IVS. Ciò comporterà una latenza aggiuntiva. Per una bassa latenza, eseguire lo streaming direttamente su Amazon IVS.

Impostazioni codificatore

Importazione del flusso: codec e protocolli di importazione

Codec: Amazon IVS supporta H.264 per video e AAC (LC) per audio.

Protocolli di importazione: Amazon IVS supporta i protocolli di importazione sicura più comuni nel software e nell'hardware di streaming, ossia RTMPS (Real-Time Messaging Protocol su una connessione TLS/SSL), RTMP e SRT (Secure Reliable Transport). Lo streaming Amazon IVS tramite RTMPS richiede TLS versione 1.2 o versioni successive.

RTMPS/RTMP

Il codificatore video deve connettersi all'acquisizione di Amazon IVS tramite il protocollo RTMPS associato alla porta in uscita 443/TCP. Per garantire ciò, specificare un server di acquisizione IVS, che includa la porta nel percorso:

rtmps://<IVS-ingest-server>/<IVS-stream-key>

Per esempio:

rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/<IVS-stream-key>

È inoltre possibile configurare i canali IVS per consentire l'acquisizione non sicura di RTMP; tuttavia consigliamo di utilizzare RTMPS a meno che non si disponga di casi d'uso specifici e verificati che richiedono RTMP. Durante lo streaming RTMP, assicurati che il protocollo sia impostato su rtmp:// e rimuovi la porta :443. Per esempio:

rtmp://a1b2c3d4e5f6.global-contribute.live-video.net/app/<IVS-stream-key>

SRT

Il codificatore video deve connettersi all'endpoint di importazione utilizzando il protocollo SRT sulla porta 9000. Per garantire ciò, specifica un endpoint di importazione che includa la porta e la passphrase nel percorso:

srt://<ingest-endpoint>:<port>?streamid=<stream-key>&passphrase=<passphrase>

Utilizza la passphrase solo se l'importazione non sicura non è abilitata per il canale.

Per esempio:

srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ

Per ottimizzare le prestazioni dei flussi SRT, consulta questo blog di Haivision: How to Configure SRT Settings on Your Video Encoder for Optimal Performance.

Risoluzione/bitrate/FPS

La risoluzione dello streaming determina in gran parte il bitrate e la frequenza dei fotogrammi (fotogrammi al secondo o FPS). Utilizzare le seguenti linee guida; queste sono le nostre raccomandazioni. Tenere presente che le risoluzioni mostrate di seguito sono orientamento orizzontale (orizzontale x verticale), quindi è necessario invertirle per l'orientamento verticale.

Qualità accettabile (SD) 480p (852x480) Buona qualità (HD) 720p (1280x720) Alta qualità (Full HD) 1080p (1920x1080)
Bitrate Fino a 1500 Kbps Fino a 4500 Kbps Fino a 8500 Kbps
FPS 30 30 o 60 30 o 60
Intervallo fotogrammi 2 secondi 2 secondi 2 secondi

Bitrate, FPS e risoluzione sono correlati. I valori ottimali dipendono dalle circostanze e possono essere complicati da determinare. Il nostro consiglio è iniziare con i valori riportati sopra e provare fino a ottenere i valori che meglio si adattano alle proprie necessità. L'obiettivo è il movimento chiaro e regolare dei componenti video durante lo streaming e una buona risoluzione all'interno della larghezza di banda disponibile. L'aumento della frequenza di fotogrammi e/o della risoluzione aumenta la qualità video complessiva, ma questa è necessariamente limitata dalla larghezza di banda.

Amazon IVS supporta una frequenza di fotogrammi fino a 60 FPS (incluse le frequenze standard PAL 25 e 50 europee). Più alto è il framerate, migliore è la qualità, purché vi sia un'adeguata larghezza di banda in bitrate. A seconda dell'applicazione, un framerate basso può comunque andare bene; ad esempio, per una telecamera di sicurezza.

Tipi di canale

Il tipo di canale determina la risoluzione consentita e il bitrate. Se superi la risoluzione o il bitrate consentito, il flusso probabilmente si disconnetterà immediatamente.

Esistono quattro tipi di canali: STANDARDADVANCED_SDADVANCED_HD e BASIC. Quando si crea un canale, il tipo predefinito è STANDARD.

Esistono due tipi di elaborazione video, transcodifica e transmuxing. Ciò è determinato dal tipo di canale, dal fatto che il canale sia configurato per l'input video multitraccia e che l'emittente utilizzi un client abilitato per il multitraccia. Il video multitraccia è configurato con la proprietà API multitrackInputConfiguration del tipo di dati Channel.

  • Il video sui canali STANDARD (senza input multitraccia) e ADVANCED è transcodificato, ossia dall'input originale vengono generate diverse qualità per offrire automaticamente agli spettatori l'esperienza migliore in base ai loro dispositivi e alle condizioni di rete. La transcodifica consente una maggiore qualità di riproduzione per una vasta gamma di velocità di download. La transcodifica è l'opzione migliore per le emittenti con una connettività Internet di primo miglio limitata e/o funzionalità limitate dei dispositivi (ad esempio, telefoni cellulari anziché PC desktop).

  • Il video sui canali STANDARD (con l'input multitraccia abilitato e l'utilizzo di un client abilitato al multitraccia da parte dell'emittente) e BASIC sono transmixati, ossia Amazon IVS fornisce agli spettatori l'input originale. Analogamente alla transcodifica, l'input multitraccia transmixato offre agli spettatori l'esperienza migliore in base ai loro dispositivi e alle condizioni di rete.

Tutti i canali transcodificati hanno preimpostazioni transcodificate che determinano quali rappresentazioni vengono prodotte. Pensa a queste come scale ABR. Consentono di bilanciare la larghezza di banda disponibile per il download e la qualità video per ottimizzare l'esperienza di visualizzazione.

  • I canali STANDARD hanno una preimpostazione di transcodifica predefinita.

  • I canali ADVANCED hanno due preimpostazioni di transcodifica selezionabili:

    • La distribuzione con larghezza di banda limitata utilizza un bitrate inferiore a STANDARD per ogni livello di qualità. Puoi utilizzarla se hai una larghezza di banda di download ridotta e/o di contenuti video semplici (ad esempio, mezzibusti dei partecipanti).

    • La distribuzione con larghezza di banda più elevata utilizza un bitrate più elevato per ogni livello di qualità. Puoi utilizzarla se disponi di un'elevata larghezza di banda per il download e/o di contenuti video complessi (ad esempio, flash e rapidi cambi di scena). Questa è l'impostazione predefinita.

Canali STANDARD

Input video a traccia singola

I canali STANDARD sono transcodificati. La risoluzione video più alta prodotta è Full HD, 1080p. Questo è il tipo di canale predefinito.

  • Preimpostazioni di transcodifica: esiste una scala predefinita di transcodifica preimpostata.

  • Audio: per le rappresentazioni a 360p e inferiori, l'audio viene transcodificato. Per altre rappresentazioni: viene trasmesso l'audio originale.

Risoluzione di ingresso e bitrate massimo Dettagli della scala

1080p60 a 8,5 Mbps

  1. Video: passthrough sorgente, audio: passthrough sorgente

  2. Audio: 720p60 a 3,4 Mb/s, audio: passthrough sorgente

  3. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  4. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  5. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

1080p30 a 8,5 Mbps

  1. Video: passthrough sorgente, audio: passthrough sorgente

  2. Audio: 720p30 a 2,4 Mb/s, audio: passthrough sorgente

  3. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  4. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  5. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

Meno di 1080p60 e superiore a 720p60, a 8,5 Mbps

  1. Video: passthrough sorgente, audio: passthrough sorgente

  2. Audio: 720p60 a 3,4 Mb/s, audio: passthrough sorgente

  3. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  4. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  5. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

Meno di 1080p30 e superiore a 720p30, a 8,5 Mbps

  1. Video: passthrough sorgente, audio: passthrough sorgente

  2. Audio: 720p30 a 2,4 Mb/s, audio: passthrough sorgente

  3. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  4. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  5. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

720p60 a 8,5 Mbps

  1. Audio: 720p60 a 3,4 Mb/s, audio: passthrough sorgente

  2. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  3. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

720p30 a 8,5 Mbps

  1. Audio: 720p30 a 2,4 Mb/s, audio: passthrough sorgente

  2. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  3. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

Meno di 720p30/60 e maggiore o uguale a 480p30/60, a 8,5 Mbps

  1. Audio: 480p30 a 1,4 Mb/s, audio: passthrough sorgente

  2. Video: 360p30 a 0,63 Mb/s, audio: 64 kb/s

  3. Video: 160p30 a 0,23 Mb/s, audio: 48 kb/s

Input video multitraccia

I canali STANDARD sono transmixati quando l'input è un video multitraccia. La risoluzione video più alta prodotta è limitata dalla proprietà multitrackInputConfiguration.maximumResolution. I rendering specifici variano a seconda del sistema e dei requisiti ambientali dell'emittente.

Per tutti i rendering video, l'audio è il passthrough sorgente.

Canali ADVANCED-HD

I canali ADVANCED-HD sono transcodificati. La risoluzione video più alta prodotta è HD, 720p.

  • Preimpostazioni di transcodifica: sono disponibili due scale preimpostate di transcodifica selezionabili.

  • Audio: l'audio viene transcodificato.

Risoluzione di ingresso e bitrate massimo Dettagli della scala

Da 720p60 a 1080p60, a 8,5 Mbps

Preimpostazione di transcodifica: distribuzione di una maggiore larghezza di banda (impostazione predefinita):

  1. Video: 720p60 a 3 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 1,3 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,7 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,27 Mb/s, audio: 48 kb/s

  5. Solo audio a 64 kb/s

Preimpostazione di transcodifica: distribuzione di larghezza di banda limitata:

  1. Video: 720p60 a 2,2 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 0,8 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,4 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,22 Mb/s, audio: 48 kb/s

  5. Solo audio a 64 kb/s

Da 720p30 a 1080p30, a 8,5 Mbps

Preimpostazione di transcodifica: distribuzione di una maggiore larghezza di banda (impostazione predefinita):

  1. Video: 720p30 a 2,3 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 1,3 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,7 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,27 Mb/s, audio: 48 kb/s

  5. Solo audio a 64 kb/s

Preimpostazione di transcodifica: distribuzione di larghezza di banda limitata:

  1. Video: 720p30 a 1,9 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 0,8 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,4 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,22 Mb/s, audio: 48 kb/s

  5. Solo audio a 0,08 Mbps

Meno di 720p30/60 e superiore a 480p30/60, a 8,5 Mbps

Preimpostazione di transcodifica: distribuzione di una maggiore larghezza di banda (impostazione predefinita):

  1. Video: sorgente transcodificata a 2,3 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 1,3 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,7 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,27 Mb/s, audio: 48 kb/s

  5. Solo audio a 64 kb/s

Preimpostazione di transcodifica: distribuzione di larghezza di banda limitata:

  1. Video: sorgente transcodificata a 1,9 Mb/s, audio: 128 kb/s

  2. Video: 480p30 a 0,8 Mb/s, audio: 128 kb/s

  3. Video: 360p30 a 0,4 Mb/s, audio: 64 kb/s

  4. Video: 160p30 a 0,22 Mb/s, audio: 48 kb/s

  5. Solo audio a 64 kb/s

480p30/60 a 8,5 Mbps

Preimpostazione di transcodifica: distribuzione di una maggiore larghezza di banda (impostazione predefinita):

  1. Video: 480p30 a 1,3 Mb/s, audio: 128 kb/s

  2. Video: 360p30 a 0,7 Mb/s, audio: 64 kb/s

  3. Video: 160p30 a 0,27 Mb/s, audio: 48 kb/s

  4. Solo audio a 64 kb/s

Preimpostazione di transcodifica: distribuzione di larghezza di banda limitata:

  1. Video: 480p30 a 0,8 Mb/s, audio: 128 kb/s

  2. Video: 360p30 a 0,4 Mb/s, audio: 64 kb/s

  3. Video: 160p30 a 0,22 Mb/s, audio: 48 kb/s

  4. Solo audio a 64 kb/s

Canali ADVANCED-SD

I canali ADVANCED-SD sono transcodificati. Le rappresentazioni disponibili sono limitate alla qualità di input, senza alcuna conversione verso l'alto.

  • Preimpostazioni di transcodifica: sono disponibili due scale preimpostate di transcodifica selezionabili.

  • Audio: l'audio viene transcodificato.

Risoluzione di ingresso e bitrate massimo Dettagli della scala

Da 480p30/60 a 1080p30/60, a 8,5 Mbps

Preimpostazione di transcodifica: distribuzione di una maggiore larghezza di banda (impostazione predefinita):

  1. Video: 480p30 a 1,3 Mb/s, audio: 128 kb/s

  2. Video: 360p30 a 0,7 Mb/s, audio: 64 kb/s

  3. Video: 160p30 a 0,27 Mb/s, audio: 48 kb/s

  4. Solo audio a 64 kb/s

Preimpostazione di transcodifica: distribuzione di larghezza di banda limitata:

  1. Video: 480p30 a 0,8 Mb/s, audio: 128 kb/s

  2. Video: 360p30 a 0,4 Mb/s, audio: 64 kb/s

  3. Video: 160p30 a 0,22 Mb/s, audio: 48 kb/s

  4. Solo audio a 64 kb/s

Canali BASIC

I canali BASIC sono transmixati. Viene prodotta un'unica rappresentazione.

  • Preimpostazioni di transcodifica: N/D

  • Audio: l'audio sorgente viene trasmesso in passthrough.

Risoluzione di ingresso e bitrate massimo Dettagli della scala

Maggiore di 480p30/60 e minore o uguale a 1080p30/60, a 3,5 Mbps

Parametri di codifica della sorgente (senza scala)

480p30/60 a 1,5 Mbps

Parametri di codifica della sorgente (senza scala)

Impostazioni video

Consigliamo di utilizzare la seguente impostazione: Sono disponibili per la maggior parte delle API hardware o software di codifica video H.264.

  • Sul codificatore video, imposta IDR/Keyframe su un intervallo di 2 secondi (o 1 secondo, per una latenza end-to-end ancora più bassa).

  • Livello H.264: principale

  • Modifica della scena: off (preferito)

  • Sottocampione di crominanza: YUV420P

  • CABAC: preferito

  • ColorSpace: BT.709 (consigliato per la massima compatibilità tra televisori ad alta definizione e display per computer). La transcodifica video di Amazon IVS supporta il pass-through ColorSpace; gli utenti esperti possono utilizzare altri video ColorSpace e video full-range.

Impostazioni audio

Supportiamo le seguenti impostazioni:

  • Codec: AAC (LC)

  • Bitrate: da 96 Kbps a 320 Kbps

  • Frequenza di campionamento: 44,1 Khz o 48 Khz (è meglio associare il flusso audio di produzione)

  • Canali: massimo 2 - Stereo (supporto canali audio 1: mono o 2: stereo)

Uso di CBR, non VBR

Utilizzare sempre CBR (Constant Bitrate), non VBR (Variable Bitrate), come metodo di controllo della velocità per i codificatori. CBR è più adatto per la natura a larghezza di banda fissa delle reti e produce una riproduzione video più prevedibile e stabile per i dispositivi client. Con un bitrate costante, è facile per gli spettatori selezionare un livello di qualità che la loro connessione può gestire nel tempo.

A seconda della complessità della scena, VBR può causare picchi di bitrate, che possono causare cadute di fotogrammi prima che il video raggiunga Amazon IVS e/o buffering nei lettori client.

Consigliamo vivamente di utilizzare solo CBR. Se si utilizza VBR, i flussi saranno maggiormente soggetti a buffering e a riproduzione non fluida.

Uso di segnali progressivi

Utilizzare flussi di segnale progressivi; evitare qualsiasi video interlacciato nel flusso di produzione e/o codifica. I segnali di flusso progressivo forniscono una qualità di riproduzione molto migliore grazie alla visualizzazione di un intero fotogramma alla volta, evitando qualsiasi artefatto di movimento che viene prodotto quando si visualizza un segnale interlacciato.

Requisiti di rete

È necessario disporre di una connessione Internet stabile in grado di mantenere un flusso di caricamento adeguato e costante. Una connessione Internet instabile potrebbe causare fluttuazioni e ritardo del flusso per gli spettatori.

Utilizzare connessioni cablate. Le connessioni Wi-Fi e LTE possono essere instabili o soffrire di interferenze o latenza a causa di QOS o priorità errata della coda dei pacchetti. Laddove possibile, per lo streaming utilizzare sempre una connessione cablata.

Pianificare sempre l'assegnazione del 50% in più di larghezza di banda rispetto al minimo richiesto. Il sovraccarico viene aggiunto per compensare le fluttuazioni di bitrate nella codifica di un flusso di bit video.

Utilizzare una VLAN Internet dedicata per codificare le macchine. Il posizionamento del codificatore su una rete separata previene effetti potenzialmente dannosi, tra cui: inquinamento causato dal traffico, colli di bottiglia della larghezza di banda e fattori di sicurezza avversi.

Sottotitoli

IVS supporta i sottotitoli. In qualità di streamer, se si vuole offrire sottotitoli al proprio pubblico, è necessario trasmettere i dati dei sottotitoli in un formato accettato, sia incorporati nello stream che insieme allo stream tramite il codificatore video.

Amazon IVS accetta sottotitoli in formato linea 21 CEA-708/EIA-608 (indicato anche come 608 su 708). È possibile trasmettere i sottotitoli utilizzando uno dei seguenti metodi:

  • CEA-708/EIA-608 incorporato nel flusso video elementare, come descritto in ATSC A/72 (SEI user_data). Questo formato è comune tra i codificatori di trasmissione televisiva.

  • CEA-708/EIA-608 trasmesso tramite RTMPS onCaptionInfo script/tag AMF0. Questo formato è comune tra codificatori di trasmissione Internet e media server come Elemental Technologies e Wowza. Gli SDK del lettore Amazon IVS supportano una lingua; non supportano la riproduzione di sottotitoli multi-traccia.

Nota: gli SDK del lettore Amazon IVS supportano i dati dei sottotitoli solo nel campo CC1 NTSC 1. Non supportano la riproduzione di sottotitoli multi-traccia.

Durante la trasmissione tramite RTMPS, il payload deve contenere un array ECMA con due coppie di elementi:

  • Una stringa denominata type che contiene i caratteri 708.

  • Una stringa denominata data che contiene un payload CEA-708/EIA-608 codificato in base64.

Ad esempio:

00000000 12 00 00 69 00 00 00 00 00 00 00 02 00 0d 6f 6e |...i..........on| 00000010 43 61 70 74 69 6f 6e 49 6e 66 6f 08 00 00 00 02 |CaptionInfo.....| 00000020 00 04 74 79 70 65 02 00 03 37 30 38 00 04 64 61 |..type...708..da| 00000030 74 61 02 00 3c 74 51 41 78 52 30 45 35 4e 41 4e |ta..<tQAxR0E5NAN| 00000040 4c 41 50 79 55 72 76 79 55 49 50 79 52 51 50 7a |LAPyUrvyUIPyRQPz| 00000050 49 35 66 7a 73 37 50 7a 76 4c 50 77 67 56 50 7a |I5fzs7PzvLPwgVPz| 00000060 33 36 66 7a 30 34 2f 78 6f 67 50 79 55 4c 2f 38 |36fz04/xogPyUL/8| 00000070 3d 00 00 09 00 00 00 74 |=......t|

Se si utilizza il codificatore video Elemental, configuralo come segue:

  • Impostare l'incorporamento dei sottotitoli su "capture 608 Campo 1".

  • Incorporare i sottotitoli con onCaptionInfo come tag RTMPS nel gruppo di output.

Per ulteriori informazioni, consulta il post del blog Adding Closed Captions to an Amazon IVS Live Stream.

Streaming con FFmpeg

FFmpeg è un progetto open source gratuito che comprende una vasta suite di librerie software per la gestione di video, audio e altri file multimediali e streaming. Può essere utilizzato con molti sistemi operativi e dispositivi.

Consultare il sito Web di FFmpeg per informazioni sull'installazione di FFmpeg e molto altro. Usare l'ultima build statica (non compilare).

Dopo l'installazione, scegliere una sorgente di ingresso audio/video per FFmpeg. Si può cercare ciò che è disponibile, come segue:

ffmpeg -list_devices true -f dshow -i dummy.

Per ulteriori informazioni, fare clic qui. A seconda di ciò che è disponibile e del metodo di acquisizione mirato, sarà possibile acquisire il video e l'audio (incorporato) direttamente dal dispositivo selezionato e codificare i segnali con FFmpeg. Ad esempio:

  • Webcam: per acquisire l'output dalla webcam Logitech C920:

    ffmpeg -f dshow -video_size 1920x1080 -framerate 30 -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -r 30 -s 1920x1080 -profile:v main -preset veryfast -g 120 -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/<IVS-stream-key>
  • File video: FFmpeg funziona con numerosi formati di file video e schede di acquisizione. Di seguito viene riportato un esempio di streaming basato su un input MP4:

    ffmpeg -re -i input.mp4 -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -s 1920x1080 -profile:v main -preset veryfast -force_key_frames expr:gte(t,n_forced*2) -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/app/<IVS-stream-key>

Per ulteriori informazioni su cosa immettere per <IVS-ingest-server> e <IVS-stream-key>, consultare le informazioni sulla configurazione del software di live streaming in Guida introduttiva allo streaming a bassa latenza IVS. Ad esempio:

  • Server di acquisizione: rtmps://jds34ksdg3las.global-contribute.live-video.net/app/

  • Chiave di streaming: sk_us-west-2_abcd1234efgh5678ijkl

Acquisizione del flusso

L'acquisizione del flusso consente a un utente di sostituire un flusso in corso su un canale di sua proprietà con un altro flusso. Durante questo processo, il flusso precedente non si disconnette mai, ma viene semplicemente sostituito dal nuovo flusso. Ciò consente agli utenti di connettersi senza problemi a un nuovo flusso senza dover attendere che il flusso in corso si disconnetta completamente.

Il processo di acquisizione del flusso estende una sessione di streaming in corso ma non ne avvia una nuova. Ciò mantiene la continuità dello streaming senza richiedere agli spettatori di aggiornare il lettore, anche se potrebbe verificarsi un breve stato di buffering. Le registrazioni delle sessioni di streaming durante le quali si verifica un'acquisizione del flusso non presentano interruzioni.

Per avviare l'acquisizione di un flusso, aggiungi il parametro URL priority alla chiave di flusso dell'utente. La chiave di flusso diventa <IVS-stream-key>?priority=<priority>, dove <priority> è un numero intero positivo compreso tra 1 e 2.147.483.647.

La sintassi URI per utilizzare l'acquisizione del flusso con il protocollo RTMPS è:

rtmps://<uri>/<streamkey>?priority=N

Per l'importazione SRT, la sintassi URI per l'acquisizione del flusso è:

srt://<uri>?streamid=#!::u=<streamkey>,priority=N&passphrase=foobar

Un'acquisizione ha esito positivo se il numero intero di priorità assegnato al nuovo flusso è maggiore del numero intero di priorità del flusso in corso o se in precedenza non è stato impostato alcun numero intero di priorità. Inoltre, il vecchio e il nuovo flusso devono condividere la stessa risoluzione, lo stesso codec video, lo stesso codec audio e lo stesso numero di tracce.

Per impostazione predefinita, è possibile eseguire fino a 100 acquisizioni in un singolo flusso, purché venga utilizzato un numero intero con priorità maggiore per ogni acquisizione successiva. Il numero massimo di acquisizioni del flusso può essere configurato per ciascun account AWS (vedi Service Quotas). Una volta terminato lo streaming, il canale non conserva alcuna memoria dei numeri interi di priorità precedenti o del numero di acquisizioni effettuate, quindi qualsiasi numero intero di priorità può essere riutilizzato nei flussi futuri. Inoltre, se le impostazioni del codificatore sono state modificate per l'acquisizione del flusso, la sessione di streaming non conserva alcuna memoria delle precedenti impostazioni del codificatore e visualizza solo quelle più recenti.

Se la funzione di riconnessione automatica è abilitata, gli SDK di trasmissione IVS per dispositivi mobili utilizzano l'acquisizione del flusso per riconnettersi automaticamente quando un emittente cambia rete (ad esempio da WiFi a cellulare). Per abilitare la riconnessione automatica:

  • Su iOS, imposta config.autoReconnect.enabled = true sul tuo oggetto IVSBroadcastConfiguration.

  • Su Android, imposta config.autoReconnect.setEnabled(true) sul tuo oggetto BroadcastConfiguration.

Considerazioni sull'utilizzo congiunto di riconnessione automatica e acquisizione del flusso

Quando i clienti dell'SDK di trasmissione per dispositivi mobili abilitano la riconnessione automatica come descritto sopra, lo streamer in corso (emittente A) proverà a riconnettersi fino a 5 volte in seguito a un'interruzione della rete, iniziando con priority=1 e incrementando la priorità a ogni tentativo di riconnessione. Questo processo consente il ripristino automatico della trasmissione su reti instabili, aumentando gradualmente la priorità a ogni riconnessione riuscita.

Tuttavia, a causa della natura incrementale del comportamento di riconnessione automatica, diventa difficile per un altro emittente (emittente B) utilizzare con esito positivo l'acquisizione del flusso quando l'emittente originale utilizza la riconnessione automatica. Il valore di priorità richiesto per garantire il successo dell'acquisizione sarà imprevedibile, in quanto i tentativi di riconnessione da parte dell'emittente A incrementano il valore di priorità a ogni nuovo tentativo nell'arco della durata del flusso.

Nota: quando la riconnessione automatica è abilitata, non consigliamo di utilizzare l'acquisizione del flusso per sostituire un flusso dall'SDK di trasmissione per dispositivi mobili perché occorrerà gestire o tenere traccia della priorità richiesta per l'acquisizione. Sebbene l'impostazione di un valore di priorità elevato possa funzionare nelle fasi iniziali, potrebbe creare problemi se fosse necessaria un'altra acquisizione in un secondo momento. Consigliamo di mantenere la riconnessione automatica per l'emittente A durante l'instabilità della rete e l'acquisizione del flusso da parte dell'emittente B come casi d'uso distinti.

Effettuare lo streaming con l'SDK di trasmissione Amazon IVS

L'SDK di trasmissione Amazon IVS è rivolto agli sviluppatori che creano applicazioni Android, iOS o Web con Amazon IVS. Consultare la documentazione dell'SDK di trasmissione nell'Amazon IVS User Guide (Guida per l'utente di Amazon IVS), iniziandoqui. Esistono sottopagine con guide per lo streaming su Android, iOS e Web. Gli SDK di trasmissione consentono di personalizzare il bitrate, la frequenza dei fotogrammi e la risoluzione.

Verifica dello streaming

Verificare sempre che lo streaming funzioni.

Passare al flusso video nella finestra di dialogo Console Amazon IVS per guardare ciò che viene trasmesso in streaming e gestire il live streaming.