GetHLSStreamingSessionURL - Flusso di video Amazon Kinesis

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à.

GetHLSStreamingSessionURL

Recupera un URL HTTP Live Streaming (HLS) per lo stream. È quindi possibile aprire l'URL in un browser o lettore multimediale per visualizzare i contenuti dello streaming.

StreamNameSia i parametri che i StreamARN parametri sono facoltativi, ma è necessario specificare StreamName o il StreamARN quando si richiama questa operazione API.

Uno stream video di Amazon Kinesis presenta i seguenti requisiti per la fornitura di dati tramite HLS:

Le sessioni HLS di Kinesis Video Streams contengono frammenti nel formato frammentato MPEG-4 (chiamato anche fMP4 o CMAF) o nel formato MPEG-2 (chiamato anche blocchi TS, supportato anche dalla specifica HLS). Per ulteriori informazioni sui tipi di frammenti HLS, consulta la specifica HLS.

La procedura seguente mostra come utilizzare HLS con Kinesis Video Streams:

  1. Chiama l'GetDataEndpointAPI per ottenere un endpoint. Quindi invia le GetHLSStreamingSessionURL richieste a questo endpoint utilizzando il parametro --endpoint-url.

  2. Recupera l'URL HLS utilizzando. GetHLSStreamingSessionURL Kinesis Video Streams crea una sessione di streaming HLS da utilizzare per accedere ai contenuti di uno stream utilizzando il protocollo HLS. GetHLSStreamingSessionURLrestituisce un URL autenticato (che include un token di sessione crittografato) per la playlist principale HLS della sessione (la risorsa principale necessaria per lo streaming con HLS).

    Nota

    Non condividere o archiviare questo token dove un'entità non autorizzata potrebbe accedervi. Il token fornisce l'accesso al contenuto dello stream. Proteggi il token con le stesse misure che utilizzeresti con AWS le tue credenziali.

    I file multimediali resi disponibili tramite la playlist sono costituiti solo dallo stream, dall'intervallo di tempo e dal formato richiesti. Non sono disponibili altri dati multimediali (come frame esterni alla finestra richiesta o bitrate alternativi).

  3. Fornisci l'URL (contenente il token di sessione crittografato) per la playlist principale HLS a un lettore multimediale che supporti il protocollo HLS. Kinesis Video Streams rende disponibili la playlist multimediale HLS, il frammento di inizializzazione e i frammenti multimediali tramite l'URL della playlist principale. Il frammento di inizializzazione contiene i dati privati del codec per lo streaming e altri dati necessari per configurare il decodificatore e il renderer video o audio. I frammenti multimediali contengono fotogrammi video con codifica H.264 o campioni audio con codifica AAC.

  4. Il lettore multimediale riceve l'URL autenticato e richiede lo streaming di metadati e dati multimediali normalmente. Quando il lettore multimediale richiede dati, richiama le seguenti azioni:

    • geTLSMasterPlaylist: recupera una playlist principale HLS, che contiene un URL per l'GetHLSMediaPlaylistazione per ogni traccia e metadati aggiuntivi per il lettore multimediale, tra cui bitrate e risoluzione stimati.

    • geTLSMediaPlaylist: recupera una playlist multimediale HLS, che contiene un URL per accedere al frammento di inizializzazione MP4 con l'GetMP4InitFragmentazione e gli URL per accedere ai frammenti multimediali MP4 con le azioni. GetMP4MediaFragment La playlist multimediale HLS contiene anche metadati sullo stream di cui il lettore ha bisogno per riprodurla, ad esempio se è o. PlaybackMode LIVE ON_DEMAND La playlist multimediale HLS è in genere statica per sessioni con un di. PlaybackType ON_DEMAND La playlist multimediale HLS viene continuamente aggiornata con nuovi frammenti per le sessioni con un di. PlaybackType LIVE Esiste una playlist multimediale HLS distinta per la traccia video e la traccia audio (se applicabile) che contiene gli URL multimediali MP4 per la traccia specifica.

    • GetMP4InitFragment: recupera il frammento di inizializzazione MP4. Il lettore multimediale in genere carica il frammento di inizializzazione prima di caricare qualsiasi frammento multimediale. Questo frammento contiene gli atomi "fytp" e "moov" MP4 e gli atomi secondari necessari per inizializzare il decoder del lettore multimediale.

      Il frammento di inizializzazione non corrisponde a un frammento in uno stream video Kinesis. Contiene solo i dati privati del codec per lo stream e la rispettiva traccia, necessari al lettore multimediale per decodificare i frame multimediali.

    • GetMP4MediaFragment: recupera i frammenti multimediali MP4. Questi frammenti contengono gli atomi "" e "moofmdat" MP4 e i relativi atomi secondari, contenenti i frame multimediali del frammento codificato e i relativi timestamp.

      Nota

      Per la sessione di streaming HLS, sono supportate le modifiche ai dati privati del codec (CPD) in-track. Dopo che il primo frammento multimediale è stato reso disponibile in una sessione di streaming, i frammenti possono contenere modifiche CPD per ogni traccia. Pertanto, i frammenti di una sessione possono avere una risoluzione, una velocità di trasmissione o altre informazioni diverse nel CPD senza interrompere la riproduzione. Tuttavia, qualsiasi modifica apportata al numero della traccia o al formato del codec della traccia può restituire un errore quando vengono caricati questi diversi frammenti multimediali. Ad esempio, lo streaming avrà esito negativo se i frammenti dello stream passano da un formato contenente solo video ad avere sia audio che video, o se una traccia audio AAC viene modificata in una traccia audio ALAW. Per ogni sessione di streaming, sono consentite solo 500 modifiche CPD.

      I dati recuperati con questa azione sono fatturabili. Per informazioni, consulta Prezzi di .

    • getsFragment: recupera i frammenti MPEG TS contenenti sia i dati di inizializzazione che i dati multimediali per tutte le tracce dello stream.

      Nota

      In caso affermativoMPEG_TS, questa API ContainerFormat viene utilizzata al posto di e per recuperare i contenuti multimediali in streaming. GetMP4InitFragment GetMP4MediaFragment

      I dati recuperati con questa azione sono fatturabili. Per ulteriori informazioni, consulta i prezzi di Kinesis Video Streams.

L'URL di una sessione di streaming non deve essere condiviso tra i giocatori. Il servizio potrebbe limitare una sessione se è condivisa da più lettori multimediali. Per i limiti di connessione, consulta Kinesis Video Streams Limits.

Puoi monitorare la quantità di dati consumata dal lettore multimediale monitorando la CloudWatch metrica di GetMP4MediaFragment.OutgoingBytes Amazon. Per informazioni sull'utilizzo per CloudWatch monitorare Kinesis Video Streams, consulta Monitoring Kinesis Video Streams. Per informazioni sui prezzi, consulta Prezzi e prezzi di Amazon Kinesis Video StreamsAWS . Si applicano i costi sia per le sessioni HLS che per i dati in uscita AWS .

Per ulteriori informazioni su HLS, consulta HTTP Live Streaming sul sito Apple Developer.

Importante

Se viene generato un errore dopo aver richiamato un'API multimediale archiviata di Kinesis Video Streams, oltre al codice di stato HTTP e al corpo della risposta, include le seguenti informazioni:

  • x-amz-ErrorTypeIntestazione HTTP: contiene un tipo di errore più specifico oltre a quello fornito dal codice di stato HTTP.

  • x-amz-RequestIdIntestazione HTTP: se desideri segnalare un problema AWS, il team di supporto può diagnosticare meglio il problema se gli viene fornito il Request Id.

Sia il codice di stato HTTP che l' ErrorType intestazione possono essere utilizzati per prendere decisioni programmatiche sulla possibilità di correggere gli errori e in quali condizioni, oltre a fornire informazioni sulle azioni che il programmatore client potrebbe dover intraprendere per riprovare con successo.

Per ulteriori informazioni, consulta la sezione Errori nella parte inferiore di questo argomento, oltre a Errori comuni.

Sintassi della richiesta

POST /getHLSStreamingSessionURL HTTP/1.1 Content-type: application/json { "ContainerFormat": "string", "DiscontinuityMode": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "HLSFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "MaxMediaPlaylistFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string" }

Parametri della richiesta URI:

La richiesta non utilizza parametri URI.

Corpo della richiesta

La richiesta accetta i seguenti dati in formato JSON.

ContainerFormat

Speciifica il formato da utilizzare per impacchettare il supporto. Specificando il formato del FRAGMENTED_MP4 contenitore, il file multimediale viene confezionato in frammenti MP4 (fMP4 o CMAF). Questa è la confezione consigliata perché le spese di imballaggio sono minime. L'altra opzione di formato del contenitore èMPEG_TS. HLS supporta i blocchi MPEG TS sin dal suo rilascio e a volte è l'unico pacchetto supportato sui lettori HLS meno recenti. MPEG TS ha in genere un sovraccarico di imballaggio del 5-25%. Ciò significa che MPEG TS richiede in genere il 5-25 percento in più di larghezza di banda e costi rispetto a fMP4.

Il valore predefinito è FRAGMENTED_MP4.

Tipo: stringa

Valori validi: FRAGMENTED_MP4 | MPEG_TS

Campo obbligatorio: no

DiscontinuityMode

Speciifica quando i flag che indicano le discontinuità tra i frammenti vengono aggiunti alle playlist multimediali.

I lettori multimediali in genere creano una sequenza temporale dei contenuti multimediali da riprodurre, in base ai timestamp di ciascun frammento. Ciò significa che se c'è una sovrapposizione o uno spazio tra i frammenti (come in genere se HLSFragmentSelector è impostata suSERVER_TIMESTAMP), la timeline del lettore multimediale presenterà anche piccoli spazi tra i frammenti in alcuni punti e sovrascriverà i fotogrammi in altri punti. Le lacune nella timeline del lettore multimediale possono causare il blocco della riproduzione e le sovrapposizioni possono causare nervosismo nella riproduzione. Quando sono presenti segnali di discontinuità tra i frammenti, si prevede che il lettore multimediale reimposti la timeline, in modo che il frammento successivo venga riprodotto immediatamente dopo il frammento precedente.

Sono supportate le seguenti modalità:

  • ALWAYS: un indicatore di discontinuità viene inserito tra ogni frammento della playlist multimediale HLS. Si consiglia di utilizzare un valore pari a ALWAYS se i timestamp del frammento non sono accurati.

  • NEVER: nessun indicatore di discontinuità viene posizionato da nessuna parte. Si consiglia di utilizzare un valore pari a per garantire che la timeline del lettore multimediale NEVER corrisponda con la massima precisione ai timestamp del produttore.

  • ON_DISCONTINUITY: un marker di discontinuità viene posizionato tra i frammenti che presentano uno spazio o una sovrapposizione di oltre 50 millisecondi. Per la maggior parte degli scenari di riproduzione, si consiglia di utilizzare un valore pari a in ON_DISCONTINUITY modo che la timeline del lettore multimediale venga reimpostata solo in caso di problemi significativi con la timeline multimediale (ad esempio un frammento mancante).

L'impostazione predefinita è ALWAYS quando HLSFragmentSelector è impostata suSERVER_TIMESTAMP, e NEVER quando è impostata su. PRODUCER_TIMESTAMP

Tipo: stringa

Valori validi: ALWAYS | NEVER | ON_DISCONTINUITY

Campo obbligatorio: no

DisplayFragmentTimestamp

Speciifica quando i timestamp di inizio del frammento devono essere inclusi nella playlist multimediale HLS. In genere, i lettori multimediali segnalano la posizione della testina di riproduzione come un orario relativo all'inizio del primo frammento della sessione di riproduzione. Tuttavia, quando i timestamp di inizio sono inclusi nella playlist multimediale HLS, alcuni lettori multimediali potrebbero riportare la testina di riproduzione corrente come orario assoluto in base ai timestamp del frammento. Questo può essere utile per creare un'esperienza di riproduzione che mostri agli spettatori l'ora dell'orologio da parete del file multimediale.

Il valore predefinito è NEVER. In caso HLSFragmentSelector affermativoSERVER_TIMESTAMP, i timestamp saranno i timestamp di inizio del server. Allo stesso modo, quando HLSFragmentSelector è cosìPRODUCER_TIMESTAMP, i timestamp saranno i timestamp di inizio del produttore.

Tipo: stringa

Valori validi: ALWAYS | NEVER

Campo obbligatorio: no

Expires

Il tempo in secondi che manca alla scadenza della sessione richiesta. Questo valore può essere compreso tra 300 (5 minuti) e 43200 (12 ore).

Quando una sessione scade, non è GetTSFragment possibile effettuare nuove chiamate a GetHLSMasterPlaylist GetHLSMediaPlaylistGetMP4InitFragment,GetMP4MediaFragment,, o per quella sessione.

Il valore predefinito è 300 (5 minuti).

Tipo: integer

Intervallo valido: valore minimo di 300. valore massimo pari a 43200.

Campo obbligatorio: no

HLSFragmentSelector

L'intervallo di tempo del frammento richiesto e l'origine dei timestamp.

Questo parametro è obbligatorio se PlaybackMode è o. ON_DEMAND LIVE_REPLAY Questo parametro è facoltativo se lo PlaybackMode è LIVE. Se PlaybackModeLIVE, FragmentSelectorType può essere impostato, ma non TimestampRange deve essere impostato. Se PlaybackMode è ON_DEMAND oLIVE_REPLAY, entrambi FragmentSelectorType TimestampRange devono essere impostati.

Tipo: oggetto HLSFragmentSelector

Campo obbligatorio: no

MaxMediaPlaylistFragmentResults

Il numero massimo di frammenti restituiti nelle playlist multimediali HLS.

Quando PlaybackMode èLIVE, vengono restituiti i frammenti più recenti fino a questo valore. Quando PlaybackMode èON_DEMAND, vengono restituiti i frammenti più vecchi, fino a questo numero massimo.

Quando c'è un numero maggiore di frammenti disponibili in una playlist multimediale HLS live, i lettori video spesso memorizzano il contenuto nel buffer prima di iniziare la riproduzione. L'aumento della dimensione del buffer aumenta la latenza di riproduzione, ma diminuisce la probabilità che si verifichi il rebuffering durante la riproduzione. Consigliamo che una playlist multimediale HLS live contenga un minimo di 3 frammenti e un massimo di 10 frammenti.

L'impostazione predefinita è 5 frammenti se PlaybackMode è LIVE o e 1.000 se LIVE_REPLAY lo è. PlaybackMode ON_DEMAND

Il valore massimo di 5.000 frammenti corrisponde a più di 80 minuti di video in stream con frammenti di 1 secondo e a più di 13 ore di video in stream con frammenti di 10 secondi.

Tipo: long

Intervallo valido: valore minimo di 1. Valore massimo di 5000.

Campo obbligatorio: no

PlaybackMode

Sia che si tratti di recuperare dati live, replay dal vivo o archiviati su richiesta.

Le caratteristiche dei tre tipi di sessioni includono quanto segue:

  • LIVE: Per sessioni di questo tipo, la playlist multimediale HLS viene continuamente aggiornata con i frammenti più recenti non appena diventano disponibili. Si consiglia al lettore multimediale di recuperare una nuova playlist a intervalli di un secondo. Quando questo tipo di sessione viene riprodotta in un lettore multimediale, l'interfaccia utente in genere visualizza una notifica «dal vivo», senza alcun controllo di scorrimento per la scelta della posizione nella finestra di riproduzione da visualizzare.

    Nota

    In LIVE modalità, i frammenti più recenti disponibili vengono inclusi in una playlist multimediale HLS, anche se c'è uno spazio tra i frammenti (ovvero se manca un frammento). Un intervallo come questo potrebbe causare l'arresto di un lettore multimediale o causare un salto nella riproduzione. In questa modalità, i frammenti non vengono aggiunti alla playlist multimediale HLS se sono più vecchi del frammento più recente della playlist. Se il frammento mancante diventa disponibile dopo l'aggiunta di un frammento successivo alla playlist, il frammento più vecchio non viene aggiunto e lo spazio vuoto non viene colmato.

  • LIVE_REPLAY: Per le sessioni di questo tipo, la playlist multimediale HLS viene aggiornata in modo simile a come viene aggiornata per la LIVE modalità, tranne per il fatto che inizia includendo i frammenti di una determinata ora di inizio. Invece di aggiungere i frammenti man mano che vengono ingeriti, i frammenti vengono aggiunti man mano che trascorre la durata del frammento successivo. Ad esempio, se i frammenti della sessione durano due secondi, viene aggiunto un nuovo frammento alla playlist multimediale ogni due secondi. Questa modalità è utile per poter avviare la riproduzione dal momento in cui viene rilevato un evento e continuare lo streaming live di contenuti multimediali che non sono ancora stati acquisiti al momento della creazione della sessione. Questa modalità è utile anche per lo streaming di contenuti multimediali precedentemente archiviati senza essere limitata dal limite di 1.000 frammenti previsto dalla modalità. ON_DEMAND

  • ON_DEMAND: Per sessioni di questo tipo, la playlist multimediale HLS contiene tutti i frammenti della sessione, fino al numero specificato in. MaxMediaPlaylistFragmentResults La playlist deve essere recuperata solo una volta per ogni sessione. Quando questo tipo di sessione viene riprodotta in un lettore multimediale, l'interfaccia utente in genere visualizza un comando a scorrimento per scegliere la posizione da visualizzare nella finestra di riproduzione.

In tutte le modalità di riproduzione, se sì FragmentSelectorTypePRODUCER_TIMESTAMP, e se sono presenti più frammenti con lo stesso timestamp di inizio, il frammento con il numero di frammenti più elevato (ovvero il frammento più recente) viene incluso nella playlist multimediale HLS. Gli altri frammenti non sono inclusi. I frammenti con timestamp diversi ma con durate sovrapposte sono ancora inclusi nella playlist multimediale HLS. Ciò può portare a un comportamento imprevisto nel lettore multimediale.

Il valore predefinito è LIVE.

Tipo: stringa

Valori validi: LIVE | LIVE_REPLAY | ON_DEMAND

Campo obbligatorio: no

StreamARN

L'Amazon Resource Name (ARN) dello stream per il quale recuperare l'URL della playlist principale HLS.

Devi specificare il o il. StreamName StreamARN

Tipo: stringa

Limitazioni di lunghezza: lunghezza minima di 1. La lunghezza massima è 1024 caratteri.

Modello: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

Campo obbligatorio: no

StreamName

Il nome dello stream per il quale recuperare l'URL della playlist principale HLS.

È necessario specificare il StreamName o il. StreamARN

Tipo: stringa

Limitazioni di lunghezza: lunghezza minima di 1. La lunghezza massima è 256 caratteri.

Modello: [a-zA-Z0-9_.-]+

Campo obbligatorio: no

Sintassi della risposta

HTTP/1.1 200 Content-type: application/json { "HLSStreamingSessionURL": "string" }

Elementi di risposta

Se l'operazione riesce, il servizio restituisce una risposta HTTP 200.

I dati seguenti vengono restituiti in formato JSON mediante il servizio.

HLSStreamingSessionURL

L'URL (contenente il token di sessione) che un lettore multimediale può utilizzare per recuperare la playlist principale HLS.

Tipo: stringa

Errori

Per informazioni sugli errori comuni a tutte le operazioni, consultare Errori comuni.

ClientLimitExceededException

Kinesis Video Streams ha limitato la richiesta perché hai superato un limite. Prova a effettuare la chiamata più tardi. Per informazioni sui limiti, consulta Kinesis Video Streams Limits.

Codice di stato HTTP: 400

InvalidArgumentException

Un parametro specificato supera le restrizioni, non è supportato o non può essere utilizzato.

Codice di stato HTTP: 400

InvalidCodecPrivateDataException

I dati privati del codec in almeno una delle tracce del flusso video non sono validi per questa operazione.

Codice di stato HTTP: 400

MissingCodecPrivateDataException

Non è stato trovato alcun dato privato del codec in almeno una delle tracce del flusso video.

Codice di stato HTTP: 400

NoDataRetentionException

GetImagesè stato richiesto per uno stream che non conserva dati (ovvero ha un valore DataRetentionInHours pari a 0).

Codice di stato HTTP: 400

NotAuthorizedException

Codice di stato: 403, il chiamante non è autorizzato a eseguire un'operazione sullo stream specificato o il token è scaduto.

Codice di stato HTTP: 401

ResourceNotFoundException

GetImagesgenererà questo errore quando Kinesis Video Streams non riesce a trovare lo stream specificato.

GetHLSStreamingSessionURLe GetDASHStreamingSessionURL genera questo errore se LIVE_REPLAY viene richiesta una sessione con un PlaybackMode of ON_DEMAND o per uno stream che non contiene frammenti nell'intervallo di tempo richiesto, o se LIVE viene richiesta una sessione con un PlaybackMode of per uno stream che non contiene frammenti negli ultimi 30 secondi.

Codice di stato HTTP: 404

UnsupportedStreamMediaTypeException

Il tipo di supporto (ad esempio, video h.264 o h.265 o audio AAC o G.711) non può essere determinato dagli ID dei codec delle tracce nel primo frammento di una sessione di riproduzione. L'ID del codec per la traccia 1 dovrebbe essere V_MPEG/ISO/AVC e, facoltativamente, l'ID del codec per la traccia 2 dovrebbe essere. A_AAC

Codice di stato HTTP: 400

Vedi anche

Per ulteriori informazioni sull'utilizzo di questa API in uno degli SDK specifici della lingua, consulta quanto segue AWS :