Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
GetDASHStreamingSessionURL
Ruft eine MPEG-URL für dynamisches adaptives Streaming über HTTP (DASH) für den Stream ab. Sie können die URL dann in einem Media Player öffnen, um den Inhalt des Streams anzusehen.
StreamNameSowohl der als auch der StreamARN Parameter sind optional, aber Sie müssen entweder den StreamName oder den angeben, StreamARN wenn Sie diesen API-Vorgang aufrufen.
Für einen Amazon Kinesis Kinesis-Videostream gelten die folgenden Anforderungen für die Bereitstellung von Daten über MPEG-DASH:
-
Anforderungen an den Titel für die Videowiedergabe.
-
Der Datenerhaltzeitraum muss größer als 0 sein.
-
Die Videospur jedes Fragments muss private Codec-Daten in Advanced Video Coding (AVC) für H.264 und HEVC für H.265 enthalten. Weitere Informationen finden Sie in der MPEG-4-Spezifikation ISO/IEC
14496-15. Informationen zur Adaptierung von Stream-Daten für ein bestimmtes Format finden Sie unter NAL Adaptation Flags. -
Die Audiospur (falls vorhanden) jedes Fragments muss private Codec-Daten im AAC-Format (AAC-Spezifikation ISO/IEC
13818-7) oder im MS Wave-Format enthalten.
Das folgende Verfahren zeigt, wie MPEG-DASH mit Kinesis Video Streams verwendet wird:
-
Rufen Sie die
GetDataEndpointAPI auf, um einen Endpunkt zu erhalten. Senden Sie dann dieGetDASHStreamingSessionURLAnfragen mit dem Parameter --endpoint-url an diesen Endpunkt. -
Rufen Sie die MPEG-DASH-URL ab mit.
GetDASHStreamingSessionURLKinesis Video Streams erstellt eine MPEG-DASH-Streaming-Sitzung, die für den Zugriff auf Inhalte in einem Stream mithilfe des MPEG-DASH-Protokolls verwendet wird.GetDASHStreamingSessionURLgibt eine authentifizierte URL (die ein verschlüsseltes Sitzungstoken enthält) für das MPEG-DASH-Manifest der Sitzung zurück (die Root-Ressource, die für das Streaming mit MPEG-DASH benötigt wird).Anmerkung
Teilen oder speichern Sie dieses Token nicht dort, wo eine nicht autorisierte Entität darauf zugreifen kann. Das Token ermöglicht den Zugriff auf den Inhalt des Streams. Schützen Sie das Token mit denselben Maßnahmen, die Sie für Ihre AWS Anmeldeinformationen verwenden.
Die Medien, die über das Manifest verfügbar gemacht werden, bestehen nur aus dem angeforderten Stream, Zeitbereich und Format. Es werden keine anderen Mediendaten (wie Frames außerhalb des angeforderten Fensters oder alternative Bitraten) zur Verfügung gestellt.
-
Geben Sie die URL (mit dem verschlüsselten Sitzungstoken) für das MPEG-DASH-Manifest an einen Media Player weiter, der das MPEG-DASH-Protokoll unterstützt. Kinesis Video Streams stellt das Initialisierungsfragment und die Medienfragmente über die Manifest-URL zur Verfügung. Das Initialisierungsfragment enthält die privaten Codec-Daten für den Stream und andere Daten, die zur Einrichtung des Video- oder Audiodecoders und Renderers benötigt werden. Die Medienfragmente enthalten kodierte Videoframes oder kodierte Audiobeispiele.
-
Der Media Player empfängt die authentifizierte URL und fordert Stream-Metadaten und Mediendaten normal an. Wenn der Media Player Daten anfordert, ruft er die folgenden Aktionen auf:
-
AbrufenDASHManifest: Ruft ein MPEG DASH-Manifest ab, das die Metadaten für die Medien enthält, die Sie wiedergeben möchten.
-
Abrufen MP4InitFragment: Ruft das MP4 Initialisierungsfragment ab. Der Media Player lädt normalerweise das Initialisierungsfragment, bevor er Medienfragmente lädt. Dieses Fragment enthält die Atome
fytp"" und "moov" sowie die untergeordneten MP4 Atome, die zur Initialisierung des Media Player-Decoders benötigt werden.Das Initialisierungsfragment entspricht keinem Fragment in einem Kinesis-Videostream. Es enthält nur die privaten Codec-Daten für den Stream und den jeweiligen Titel, die der Media Player benötigt, um die Medienframes zu dekodieren.
-
Abrufen MP4MediaFragment: Ruft MP4 Medienfragmente ab. Diese Fragmente enthalten die MP4 Atome
moof"" und "mdat" und ihre untergeordneten Atome, die die Medienframes und ihre Zeitstempel des codierten Fragments enthalten.Wichtig
Die in jedem Fragment enthaltenen privaten Codec Data (CPD) enthalten Codec-spezifische Initialisierungsinformationen wie Bildrate, Auflösung und Kodierungsprofil, die für die korrekte Dekodierung des Fragments erforderlich sind. CPD-Änderungen werden während einer Streaming-Sitzung nicht unterstützt. Die CPD muss in den abgefragten Medien konsistent bleiben.
Wichtig
Änderungen nachverfolgen wird nicht unterstützt. Die Titel müssen in den abgefragten Medien einheitlich sein. Das Streaming schlägt fehl, wenn die Fragmente im Stream nicht mehr nur Video enthalten, sondern sowohl Audio als auch Video enthalten, oder wenn eine AAC-Audiospur in eine A-Law-Audiospur umgewandelt wird.
Mit dieser Aktion abgerufene Daten sind abrechnungsfähig. Einzelheiten finden Sie unter Preise
.
-
Anmerkung
Einschränkungen, die für MPEG-DASH-Sitzungen gelten, finden Sie unter Kinesis Video Streams Streams-Kontingente.
Sie können die Datenmenge, die der Media Player verbraucht, überwachen, indem Sie die GetMP4MediaFragment.OutgoingBytes CloudWatch Amazon-Metrik überwachen. Informationen CloudWatch zur Überwachung von Kinesis Video Streams finden Sie unter Kinesis Video Streams überwachen. Preisinformationen finden Sie unter Amazon Kinesis Video Streams — Preise
Weitere Informationen zu HLS finden Sie unter HTTP Live Streaming
Wichtig
Wenn nach dem Aufrufen einer Kinesis Video Streams Streams-API für archivierte Medien ein Fehler ausgelöst wird, enthält dieser zusätzlich zum HTTP-Statuscode und dem Antworttext die folgenden Informationen:
-
x-amz-ErrorTypeHTTP-Header — enthält zusätzlich zu den Angaben des HTTP-Statuscodes einen spezifischeren Fehlertyp. -
x-amz-RequestIdHTTP-Header — Wenn Sie AWS dem Support-Team ein Problem melden möchten, können Sie das Problem anhand der Anforderungs-ID besser diagnostizieren.
Sowohl der HTTP-Statuscode als auch der ErrorType Header können verwendet werden, um programmatische Entscheidungen darüber zu treffen, ob und unter welchen Bedingungen Fehler wiederholt werden können, sowie Informationen darüber bereitzustellen, welche Maßnahmen der Client-Programmierer möglicherweise ergreifen muss, um es erneut erfolgreich zu versuchen.
Anforderungssyntax
POST /getDASHStreamingSessionURL HTTP/1.1
Content-type: application/json
{
"DASHFragmentSelector": {
"FragmentSelectorType": "string",
"TimestampRange": {
"EndTimestamp": number,
"StartTimestamp": number
}
},
"DisplayFragmentNumber": "string",
"DisplayFragmentTimestamp": "string",
"Expires": number,
"MaxManifestFragmentResults": number,
"PlaybackMode": "string",
"StreamARN": "string",
"StreamName": "string"
}
URI-Anfrageparameter
Die Anforderung verwendet keine URI-Parameter.
Anforderungstext
Die Anforderung akzeptiert die folgenden Daten im JSON-Format.
- DASHFragmentSelector
-
Der Zeitbereich des angeforderten Fragments und die Quelle der Zeitstempel.
Dieser Parameter ist erforderlich, wenn er
ON_DEMANDoderPlaybackModeLIVE_REPLAYist. Dieser Parameter ist optional, falls PlaybackMode jaLIVE. WennPlaybackModejaLIVE,FragmentSelectorTypekann er gesetzt werden,TimestampRangesollte aber nicht gesetzt werden. WennPlaybackModeistON_DEMANDoderLIVE_REPLAY,TimestampRangemüssen beideFragmentSelectorTypegesetzt werden.Typ: DASHFragmentSelector Objekt
Erforderlich: Nein
- DisplayFragmentNumber
-
Fragmente werden in der Manifestdatei anhand ihrer Sequenznummer in der Sitzung identifiziert. Wenn auf gesetzt DisplayFragmentNumber ist
ALWAYS, wird die Kinesis Video Streams Streams-Fragmentnummer zu jedem S-Element in der Manifestdatei mit dem Attributnamen „kvs:fn“ hinzugefügt. Diese Fragmentnummern können für die Protokollierung oder für die Verwendung mit anderen Fragmenten APIs (z. B.GetMediaund) verwendet werden.GetMediaForFragmentListUm dieses benutzerdefinierte Attribut nutzen zu können, ist ein benutzerdefinierter MPEG-DASH Media Player erforderlich.Der Standardwert ist
NEVER.Typ: Zeichenfolge
Zulässige Werte:
ALWAYS | NEVERErforderlich: Nein
- DisplayFragmentTimestamp
-
Gemäß der MPEG-DASH-Spezifikation kann die Uhrzeit der Wanduhr von Fragmenten in der Manifestdatei anhand von Attributen im Manifest selbst abgeleitet werden. In der Regel können MPEG-DASH-kompatible Mediaplayer Lücken in der Medien-Timeline jedoch nicht richtig behandeln. Kinesis Video Streams passt die Medien-Timeline in der Manifestdatei an, um die Wiedergabe von Medien mit Unterbrechungen zu ermöglichen. Daher kann die aus der Manifestdatei abgeleitete Uhrzeit der Wanduhr ungenau sein. Wenn auf gesetzt DisplayFragmentTimestamp ist
ALWAYS, wird jedem S-Element in der Manifestdatei mit dem Attributnamen „kvs:ts“ der genaue Fragment-Zeitstempel hinzugefügt. Um dieses benutzerdefinierte Attribut nutzen zu können, ist ein benutzerdefinierter MPEG-DASH Media Player erforderlich.Der Standardwert ist
NEVER. Wenn dies der DASHFragmentSelector Fall istSERVER_TIMESTAMP, sind die Zeitstempel die Startzeitstempel des Servers. In ähnlicher Weise werden bei denPRODUCER_TIMESTAMPZeitstempeln die Startzeitstempel des Produzenten verwendet, wenn dies der Fall DASHFragmentSelector ist.Typ: Zeichenfolge
Zulässige Werte:
ALWAYS | NEVERErforderlich: Nein
- Expires
-
Die Zeit in Sekunden, bis die angeforderte Sitzung abläuft. Dieser Wert kann zwischen 300 (5 Minuten) und 43200 (12 Stunden) liegen.
Wenn eine Sitzung abläuft,
GetMP4MediaFragmentkönnen keine neuen Aufrufe für diese Sitzung getätigt werden.GetDashManifestGetMP4InitFragmentDer Standardwert ist 300 (5 Minuten).
Typ: Ganzzahl
Gültiger Bereich: Mindestwert von 300. Maximalwert 43200.
Erforderlich: Nein
- MaxManifestFragmentResults
-
Die maximale Anzahl von Fragmenten, die im MPEG-DASH-Manifest zurückgegeben werden.
Wenn ja
PlaybackModeLIVE, werden die neuesten Fragmente bis zu diesem Wert zurückgegeben. Wenn derPlaybackModeWert istON_DEMAND, werden die ältesten Fragmente zurückgegeben, bis zu dieser Höchstzahl.Wenn in einem Live-MPEG-DASH-Manifest eine höhere Anzahl von Fragmenten verfügbar ist, puffern Videoplayer häufig Inhalte, bevor sie mit der Wiedergabe beginnen. Eine Erhöhung der Puffergröße erhöht die Wiedergabe-Latenz, verringert jedoch die Wahrscheinlichkeit, dass während der Wiedergabe eine Zwischenpufferung auftritt. Wir empfehlen, dass ein Live-MPEG-DASH-Manifest mindestens 3 Fragmente und maximal 10 Fragmente enthält.
Die Standardeinstellung ist 5 Fragmente, wenn
PlaybackModeesLIVEoder istLIVE_REPLAY, und 1.000, wenn es ist.PlaybackModeON_DEMANDDer Höchstwert von 1.000 Fragmenten entspricht mehr als 16 Minuten Video bei Streams mit 1-Sekunden-Fragmenten und mehr als 2 1/2 Stunden Video bei Streams mit 10-Sekunden-Fragmenten.
Type: Long
Gültiger Bereich: Mindestwert 1. Der Höchstwert ist 5000.
Erforderlich: Nein
- PlaybackMode
-
Ob Live-, Live-Wiedergabe- oder archivierte On-Demand-Daten abgerufen werden sollen.
Zu den Funktionen der drei Sitzungstypen gehören:
-
LIVE: Für Sitzungen dieses Typs wird das MPEG-DASH-Manifest kontinuierlich mit den neuesten Fragmenten aktualisiert, sobald diese verfügbar sind. Wir empfehlen, dass der Media Player alle eine Sekunde ein neues Manifest abruft. Wenn diese Art von Sitzung in einem Media Player wiedergegeben wird, zeigt die Benutzeroberfläche in der Regel eine Live-Benachrichtigung an, ohne dass die gewünschte Position im Wiedergabefenster ausgewählt werden kann.Anmerkung
Im
LIVEModus sind die neuesten verfügbaren Fragmente in einem MPEG-DASH-Manifest enthalten, auch wenn zwischen den Fragmenten eine Lücke besteht (d. h. wenn ein Fragment fehlt). Eine solche Lücke kann dazu führen, dass ein Media Player stoppt oder die Wiedergabe unterbrochen wird. In diesem Modus werden Fragmente nicht zum MPEG-DASH-Manifest hinzugefügt, wenn sie älter als das neueste Fragment in der Playlist sind. Wenn das fehlende Fragment verfügbar wird, nachdem ein weiteres Fragment zum Manifest hinzugefügt wurde, wird das ältere Fragment nicht hinzugefügt und die Lücke wird nicht gefüllt. -
LIVE_REPLAY: Bei Sessions dieses Typs wird das MPEG-DASH-Manifest ähnlich aktualisiert, wie es für denLIVEModus aktualisiert wird, außer dass es zunächst Fragmente aus einer bestimmten Startzeit einbezieht. Anstatt Fragmente hinzuzufügen, wenn sie aufgenommen werden, werden Fragmente hinzugefügt, wenn die Dauer des nächsten Fragments verstrichen ist. Wenn die Fragmente in der Sitzung beispielsweise zwei Sekunden lang sind, wird dem Manifest alle zwei Sekunden ein neues Fragment hinzugefügt. Dieser Modus ist nützlich, um die Wiedergabe ab dem Zeitpunkt starten zu können, an dem ein Ereignis erkannt wird, und das Live-Streaming von Medien fortsetzen zu können, die zum Zeitpunkt der Sitzungserstellung noch nicht aufgenommen wurden. Dieser Modus ist auch nützlich, um zuvor archivierte Medien zu streamen, ohne durch die Obergrenze von 1.000 Fragmenten in diesemON_DEMANDModus eingeschränkt zu sein. -
ON_DEMAND: Für Sitzungen dieses Typs enthält das MPEG-DASH-Manifest alle Fragmente für die Sitzung, bis zu der Anzahl, die in angegeben ist.MaxManifestFragmentResultsDas Manifest muss für jede Sitzung nur einmal abgerufen werden. Wenn diese Art von Sitzung in einem Media Player wiedergegeben wird, zeigt die Benutzeroberfläche normalerweise ein Steuerelement an, mit dem Sie die anzuzeigende Position im Wiedergabefenster auswählen können.
Wenn dies der Fall
FragmentSelectorTypeistPRODUCER_TIMESTAMPund mehrere Fragmente mit demselben Startzeitstempel vorhanden sind, ist in allen Wiedergabemodi das Fragment mit der größeren Fragmentnummer (d. h. das neuere Fragment) im MPEG-DASH-Manifest enthalten. Die anderen Fragmente sind nicht enthalten. Fragmente mit unterschiedlichen Zeitstempeln, aber überlappender Dauer sind weiterhin im MPEG-DASH-Manifest enthalten. Dies kann zu unerwartetem Verhalten im Media Player führen.Der Standardwert ist
LIVE.Typ: Zeichenfolge
Zulässige Werte:
LIVE | LIVE_REPLAY | ON_DEMANDErforderlich: Nein
-
- StreamARN
-
Der Amazon-Ressourcenname (ARN) des Streams, für den die MPEG-DASH-Manifest-URL abgerufen werden soll.
Sie müssen entweder den oder den
StreamNameangeben.StreamARNTyp: Zeichenfolge
Längenbeschränkungen: Minimale Länge von 1. Maximale Länge beträgt 1024 Zeichen.
Pattern:
arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+Erforderlich: Nein
- StreamName
-
Der Name des Streams, für den die MPEG-DASH-Manifest-URL abgerufen werden soll.
Sie müssen entweder den oder den
StreamNameangeben.StreamARNTyp: Zeichenfolge
Längenbeschränkungen: Minimale Länge beträgt 1 Zeichen. Maximale Länge beträgt 256 Zeichen.
Pattern:
[a-zA-Z0-9_.-]+Erforderlich: Nein
Antwortsyntax
HTTP/1.1 200
Content-type: application/json
{
"DASHStreamingSessionURL": "string"
}
Antwortelemente
Wenn die Aktion erfolgreich ist, sendet der Service eine HTTP 200-Antwort zurück.
Die folgenden Daten werden vom Service im JSON-Format zurückgegeben.
- DASHStreamingSessionURL
-
Die URL (die das Sitzungstoken enthält), die ein Media Player verwenden kann, um das MPEG-DASH-Manifest abzurufen.
Typ: Zeichenfolge
Fehler
Weitere Informationen zu den allgemeinen Fehlern, die bei allen Aktionen zurückgegeben werden, finden Sie unter Häufige Fehler.
- ClientLimitExceededException
-
Kinesis Video Streams hat die Anfrage gedrosselt, weil Sie ein Limit überschritten haben. Versuchen Sie später, den Anruf zu tätigen. Informationen zu Grenzwerten finden Sie unter Kinesis Video Streams Streams-Kontingente.
HTTP Status Code: 400
- InvalidArgumentException
-
Ein bestimmter Parameter überschreitet seine Beschränkungen, wird nicht unterstützt oder kann nicht verwendet werden.
HTTP Status Code: 400
- InvalidCodecPrivateDataException
-
Die privaten Codec-Daten in mindestens einem der Tracks des Videostreams sind für diesen Vorgang nicht gültig.
HTTP Status Code: 400
- MissingCodecPrivateDataException
-
In mindestens einem der Spuren des Videostreams wurden keine privaten Codec-Daten gefunden.
HTTP Status Code: 400
- NoDataRetentionException
-
GetImageswurde für einen Stream angefordert, der keine Daten speichert (d. h. einen WertDataRetentionInHoursvon 0 hat).HTTP Status Code: 400
- NotAuthorizedException
-
Statuscode: 403, Der Aufrufer ist nicht berechtigt, einen Vorgang mit dem angegebenen Stream auszuführen, oder das Token ist abgelaufen.
HTTP-Statuscode: 401
- ResourceNotFoundException
-
GetImageslöst diesen Fehler aus, wenn Kinesis Video Streams den von Ihnen angegebenen Stream nicht finden kann.GetHLSStreamingSessionURLundGetDASHStreamingSessionURLgibt diesen Fehler aus, wenn eine Sitzung mit einemPlaybackModeofON_DEMANDoder für einen Stream angefordertLIVE_REPLAYwird, der innerhalb des angeforderten Zeitraums keine Fragmente enthält, oder wenn eine Sitzung mit einemPlaybackModeof für einen Stream angefordertLIVEwird, der innerhalb der letzten 30 Sekunden keine Fragmente enthält.HTTP Status Code: 404
- UnsupportedStreamMediaTypeException
-
Der Medientyp (z. B. h.264- oder h.265-Video oder AAC- oder G.711-Audio) konnte anhand IDs des Codec der Titel im ersten Fragment für eine Wiedergabesitzung nicht bestimmt werden. Die Codec-ID für Track 1 sollte
V_MPEG/ISO/AVCund optional die Codec-ID für Track 2 sein.A_AACHTTP Status Code: 400
Weitere Informationen finden Sie unter:
Weitere Informationen zur Verwendung dieser API in einer der sprachspezifischen Sprachen finden Sie im Folgenden AWS SDKs: