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à.
PutMedia
Utilizzatelo API per inviare dati multimediali a un flusso video Kinesis.
Nota
Devi prima chiamare il GetDataEndpoint
API per ottenere un endpoint. Quindi invia le PutMedia
richieste a questo endpoint utilizzando il parametro --endpoint-url.
Nella richiesta, usi le HTTP intestazioni per fornire informazioni sui parametri, ad esempio il nome dello stream, il timestamp e se il valore del timestamp è assoluto o relativo a quando il produttore ha iniziato la registrazione. Utilizzate il corpo della richiesta per inviare i dati multimediali. Kinesis Video Streams supporta solo il formato contenitore MKV Matroska () per l'invio di dati multimediali utilizzando questo formato. API
Sono disponibili le seguenti opzioni per inviare dati utilizzando questo: API
-
Invia dati multimediali in tempo reale: ad esempio, una telecamera di sicurezza può inviare fotogrammi in tempo reale man mano che li genera. Questo approccio riduce al minimo la latenza tra la registrazione video e i dati inviati via cavo. Questo viene definito produttore continuo. In questo caso, un'applicazione consumer può leggere lo stream in tempo reale o quando necessario.
-
Invia dati multimediali offline (in batch): ad esempio, una body camera potrebbe registrare video per ore e archiviarli sul dispositivo. Successivamente, quando colleghi la videocamera alla porta docking, la videocamera può avviare una
PutMedia
sessione per inviare dati a un flusso video Kinesis. In questo scenario, la latenza non è un problema.
Quando si utilizza questa opzioneAPI, tenete presente le seguenti considerazioni:
-
È necessario specificare
streamName
ostreamARN
, ma non entrambi. -
Per poter riprodurre i file multimediali sulla console o tramiteHLS, la traccia 1 di ogni frammento deve contenere video con codifica h.264, il CodeCid nei metadati del frammento deve essere «V_ MPEGISO/AVC«e i metadati del frammento devono includere dati privati formattati con codec h.264. AVCC Facoltativamente, la traccia 2 di ogni frammento dovrebbe contenere audio AAC codificato, il CodeCid nei metadati del frammento dovrebbe essere «A_ AAC «e i metadati del frammento dovrebbero includere dati privati del AAC codec.
-
Potrebbe essere più semplice utilizzare una singola
PutMedia
sessione di lunga durata e inviare un gran numero di frammenti di dati multimediali nel payload. Per ogni frammento ricevuto, Kinesis Video Streams invia uno o più riconoscimenti. Potenziali considerazioni sulla rete potrebbero impedirti di ricevere tutti questi riconoscimenti man mano che vengono generati. -
Potresti scegliere più
PutMedia
sessioni consecutive, ognuna con meno frammenti, per assicurarti di ricevere tutti i riconoscimenti dal servizio in tempo reale.
Nota
Se invii dati allo stesso stream in più PutMedia
sessioni simultanee, i frammenti multimediali vengono interlacciati nello stream. È necessario assicurarsi che ciò sia corretto nel proprio scenario applicativo.
I seguenti limiti si applicano quando si utilizza PutMedia
API:
-
Un client può effettuare chiamate
PutMedia
fino a cinque volte al secondo per stream. -
Un client può inviare fino a cinque frammenti al secondo per stream.
-
Kinesis Video Streams legge i dati multimediali a una velocità massima di 12,5 MB/secondo o 100 Mbps durante una sessione.
PutMedia
Nota i seguenti vincoli. In questi casi, Kinesis Video Streams invia la conferma dell'errore nella risposta.
-
I frammenti con codici temporali superiori al limite massimo consentito e che contengono più di 50 MB di dati non sono consentiti.
-
I frammenti contenenti più di tre tracce non sono consentiti. Ogni fotogramma di ogni frammento deve avere lo stesso numero di traccia di una delle tracce definite nell'intestazione del frammento. Inoltre, ogni frammento deve contenere almeno un fotogramma per ogni traccia definita nell'intestazione del frammento.
-
Ogni frammento deve contenere almeno un fotogramma per ogni traccia definita nei metadati del frammento.
-
Il timestamp del primo fotogramma in un frammento deve essere successivo all'ultimo timestamp del frammento precedente.
-
Un MKV flusso contenente più di un MKV segmento o contenente MKV elementi non consentiti (come
track*
) genera anche la conferma dell'errore.
Kinesis Video Streams archivia ogni frammento in entrata e i relativi metadati in un cosiddetto «blocco». I metadati del frammento includono quanto segue:
-
Le MKV intestazioni fornite all'inizio della richiesta
PutMedia
-
I seguenti metadati specifici di Kinesis Video Streams per il frammento:
-
server_timestamp
- Data e ora in cui Kinesis Video Streams ha iniziato a ricevere il frammento. -
producer_timestamp
- Timestamp, quando il produttore ha iniziato a registrare il frammento. Kinesis Video Streams utilizza tre informazioni ricevute nella richiesta per calcolare questo valore.-
Il valore del codice di tempo del frammento ricevuto nel corpo della richiesta insieme al frammento.
-
Due intestazioni di richiesta:
producerStartTimestamp
(quando il produttore ha iniziato la registrazione) efragmentTimeCodeType
(se il codice di tempo del frammento nel payload è assoluto o relativo).
Kinesis Video Streams
producer_timestamp
calcola quindi il frammento nel modo seguente:Se è relativo
fragmentTimeCodeType
, alloraproducer_timestamp
=producerStartTimeStamp
+ codice temporale del frammentoSe
fragmentTimeCodeType
è assoluto, alloraproducer_timestamp
= codice di tempo del frammento (convertito in millisecondi) -
-
Numero di frammento univoco assegnato da Kinesis Video Streams.
-
Nota
Quando si effettua la GetMedia
richiesta, Kinesis Video Streams restituisce un flusso di questi blocchi. Il client può elaborare i metadati secondo necessità.
Nota
Questa operazione è disponibile solo AWS SDK per Java. Non è supportata AWS SDKs in altre lingue.
Nota
Kinesis Video Streams non analizza e convalida i dati privati del codec durante l'ingestione e l'archiviazione tramite. PutMedia API KVSestrae e convalida le informazioni necessarie dai dati privati del codec per MPEG -TS e framment packaging quando si consuma lo stream tramite. MP4 HLS APIs
Nota
Se viene generato un errore dopo aver richiamato un API supporto Kinesis Video Streams, oltre al codice di stato e HTTP al corpo della risposta, include le seguenti informazioni:
-
x-amz-ErrorType
HTTPheader: contiene un tipo di errore più specifico oltre a quello fornito dal codice di stato. HTTP -
x-amz-RequestId
HTTPheader: 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 HTTP stato che l' ErrorType intestazione possono essere utilizzati per prendere decisioni programmatiche sulla possibilità di riprovare gli errori e in quali condizioni, oltre a fornire informazioni sulle azioni che il programmatore del client potrebbe dover intraprendere per riprovare con successo.
Sintassi della richiesta
POST /putMedia HTTP/1.1
x-amzn-stream-name: StreamName
x-amzn-stream-arn: StreamARN
x-amzn-fragment-timecode-type: FragmentTimecodeType
x-amzn-producer-start-timestamp: ProducerStartTimestamp
Payload
URIParametri della richiesta
La richiesta utilizza i seguenti URI parametri.
- FragmentTimecodeType
-
Si passa questo valore come
x-amzn-fragment-timecode-type
HTTP intestazione.Indica se i codici temporali nei frammenti (payload, corpo della HTTP richiesta) sono assoluti o relativi a.
producerStartTimestamp
Kinesis Video Streams utilizza queste informazioni perproducer_timestamp
calcolare il frammento ricevuto nella richiesta, come descritto nella panoramica. APIValori validi:
ABSOLUTE | RELATIVE
Campo obbligatorio: sì
- ProducerStartTimestamp
-
Si passa questo valore come intestazione.
x-amzn-producer-start-timestamp
HTTPQuesto è il timestamp del produttore in cui il produttore ha iniziato a registrare il file multimediale (non il timestamp dei frammenti specifici nella richiesta).
- StreamARN
-
Si passa questo valore come intestazione.
x-amzn-stream-arn
HTTPAmazon Resource Name (ARN) dello stream video Kinesis in cui desideri scrivere i contenuti multimediali. Se non specifichi il
streamARN
, devi specificare ilstreamName
.Limitazioni di lunghezza: lunghezza minima pari a 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]+
- StreamName
-
Si passa questo valore come
x-amzn-stream-name
HTTP intestazione.Nome dello stream video Kinesis in cui desideri scrivere i contenuti multimediali. Se non si specifica il
streamName
, è necessario specificare ilstreamARN
.Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 256 caratteri.
Modello:
[a-zA-Z0-9_.-]+
Corpo della richiesta
La richiesta accetta i seguenti dati binari.
- Payload
-
I contenuti multimediali da scrivere nello stream video di Kinesis. Nell'implementazione attuale, Kinesis Video Streams supporta solo il formato contenitore MKV Matroska () con un singolo segmento. MKV Un segmento può contenere uno o più cluster.
Nota
Ogni MKV cluster viene mappato su un frammento di flusso video Kinesis. Qualunque sia la durata del cluster scelta, diventa la durata del frammento.
Sintassi della risposta
HTTP/1.1 200
Payload
Elementi di risposta
Se l'azione ha esito positivo, il servizio restituisce una risposta di HTTP 200.
La risposta restituisce quanto segue come HTTP corpo.
- Payload
-
Dopo che Kinesis Video Streams
PutMedia
riceve correttamente una richiesta, il servizio convalida le intestazioni della richiesta. Il servizio inizia quindi a leggere il payload e invia prima una risposta di 200. HTTPIl servizio restituisce quindi uno stream contenente una serie di JSON oggetti (
Acknowledgement
oggetti) separati da nuove righe. I riconoscimenti vengono ricevuti sulla stessa connessione su cui vengono inviati i dati multimediali. Possono esserci molti riconoscimenti per una richiesta.PutMedia
CiascunoAcknowledgement
è composto dalle seguenti coppie chiave-valore:-
AckEventType
- Tipo di evento rappresentato dal riconoscimento.-
Buffering: Kinesis Video Streams ha iniziato a ricevere il frammento. Kinesis Video Streams invia la prima conferma di buffering quando viene ricevuto il primo byte di dati frammentari.
-
Ricevuto: Kinesis Video Streams ha ricevuto l'intero frammento. Se non hai configurato lo stream per rendere persistenti i dati, il produttore può interrompere il buffering del frammento dopo aver ricevuto questa conferma.
-
Persistente: Kinesis Video Streams ha reso persistente il frammento (ad esempio, su Amazon S3). Ottieni questo riconoscimento se hai configurato lo stream per rendere persistenti i dati. Dopo aver ricevuto questo riconoscimento, il produttore può interrompere il buffering del frammento.
-
Errore: Kinesis Video Streams ha riscontrato un errore durante l'elaborazione del frammento. Puoi rivedere il codice di errore e determinare la prossima linea d'azione.
-
Inattiva: la
PutMedia
sessione è in corso. Tuttavia, Kinesis Video Streams al momento non riceve dati. Kinesis Video Streams invia questa conferma periodicamente per un massimo di 30 secondi dopo l'ultima ricezione dei dati. Se non viene ricevuto alcun dato entro 30 secondi, Kinesis Video Streams chiude la richiesta.Nota
Questo riconoscimento può aiutare un produttore a determinare se la
PutMedia
connessione è attiva, anche se non invia alcun dato.
-
-
FragmentTimecode
- Codice temporale del frammento per il quale viene inviata la conferma.L'elemento può mancare se è inattivo.
AckEventType
-
FragmentNumber
- Numero del frammento generato da Kinesis Video Streams per il quale viene inviata la conferma. -
ErrorId
eErrorCode
- SeAckEventType
èError
, questo campo fornisce il codice di errore corrispondente. Di seguito è riportato l'elenco degli errori IDs con i codici di errore e i messaggi di errore corrispondenti:-
4000 - STREAM _ READ _ ERROR - Errore durante la lettura del flusso di dati.
-
4001 - MAX _ _ FRAGMENT SIZE _ REACHED - La dimensione del frammento è superiore al limite massimo consentito, 50 MB.
-
4002 - MAX _ _ FRAGMENT DURATION _ REACHED - La durata del frammento è superiore al limite massimo consentito.
-
4003 - MAX _ _ CONNECTION DURATION _ REACHED - La durata della connessione è superiore alla soglia massima consentita.
-
4004 - FRAGMENT _ _ TIMECODE _ LESSER THAN _ PREVIOUS - Il codice di tempo del frammento è inferiore al codice temporale precedente (durante una
PutMedia
chiamata, non è possibile inviare frammenti non ordinati). -
4005 - MORE _ _ _ THAN ALLOWED TRACKS _ FOUND - È stato trovato più di un brano in. MKV (obsoleto)
-
4006 - INVALID _ MKV _ DATA - Impossibile analizzare il flusso di input come formato valido. MKV
-
4007 - INVALID _ PRODUCER _ TIMESTAMP - Timestamp del produttore non valido.
-
4008 - STREAM _ NOT _ ACTIVE - Lo stream non esiste più (eliminato).
-
4009 - FRAGMENT _ _ METADATA LIMIT _ REACHED - È stato raggiunto il limite dei metadati dei frammenti. Consulta la sezione Limiti della guida per sviluppatori.
-
4010 - TRACK _ NUMBER _ MISMATCH - Il numero del brano in un MKV frame non corrisponde ai brani nell'MKVintestazione.
-
4011 - FRAMES _ MISSING _ FOR _ TRACK - Il frammento non conteneva alcun frame per almeno una delle tracce nell'intestazione. MKV
-
4012 - INVALID _ FRAGMENT _ METADATA - Il nome dei metadati del frammento non può iniziare con la stringa.
AWS_
-
4500 - KMS _ _ KEY ACCESS _ DENIED - L'accesso alla chiave specificata KMS dello stream è negato.
-
4501 - KMS _ KEY _ DISABLED - La KMS chiave specificata dello stream è disabilitata.
-
4502 - KMS _ _ KEY VALIDATION _ ERROR - La convalida della KMS chiave specificata dello stream non è riuscita.
-
4503 - KMS _ KEY _ UNAVAILABLE - La KMS chiave specificata dallo stream non è disponibile.
-
4504 - KMS _ _ KEY INVALID _ USAGE - Utilizzo non valido della chiave specificata dallo stream. KMS
-
4505 - KMS _ _ KEY INVALID _ STATE - La KMS chiave specificata dallo stream è in uno stato non valido.
-
4506 - KMS _ _ KEY NOT _ FOUND - La KMS chiave specificata dello stream non è stata trovata.
-
5000 - INTERNAL _ ERROR - Errore interno del servizio.
-
5001 - ARCHIVAL _ ERROR - Kinesis Video Streams non è riuscito a mantenere i frammenti nell'archivio dati.
-
Nota
Il produttore, mentre invia il payload per una
PutMedia
richiesta di lunga durata, dovrebbe leggere la risposta per i riconoscimenti. Un produttore potrebbe ricevere blocchi di riconoscimenti contemporaneamente, a causa del buffering su un server proxy intermedio. Un produttore che desidera ricevere riconoscimenti tempestivi può inviare meno frammenti per ogni richiesta.PutMedia
-
Errori
Per informazioni sugli errori comuni a tutte le operazioni, consultare Errori comuni.
- ClientLimitExceededException
-
Kinesis Video Streams ha limitato la richiesta perché è stato superato il limite di chiamate client consentite. Prova a effettuare la chiamata più tardi.
HTTPCodice di stato: 400
- ConnectionLimitExceededException
-
Kinesis Video Streams ha limitato la richiesta perché è stato superato il limite di connessioni client consentite.
HTTPCodice di stato: 400
- InvalidArgumentException
-
Il valore di questo parametro di input non è valido.
HTTPCodice di stato: 400
- InvalidEndpointException
-
Il chiamante ha utilizzato un endpoint errato per scrivere dati in uno stream. Quando riceve tale eccezione, l'utente deve chiamare
GetDataEndpoint
conAPIName
set toPUT_MEDIA
e utilizzare l'endpoint from response per richiamare la chiamata successiva.PutMedia
HTTPCodice di stato: 400
- NotAuthorizedException
-
Il chiamante non è autorizzato a eseguire un'operazione sullo stream specificato o il token è scaduto.
HTTPCodice di stato: 401
- ResourceNotFoundException
-
Codice di stato: 404, Lo stream con il nome specificato non esiste.
HTTPCodice di stato: 404
Esempi
Formato di riconoscimento
Il formato del riconoscimento è il seguente:
{ Acknowledgement : { "EventType": enum "FragmentTimecode": Long, "FragmentNumber": Long, "ErrorId" : String } }
Vedi anche
Per ulteriori informazioni sull'utilizzo API in una delle lingue specifiche, consulta quanto segue AWS SDKs: