GetDASHStreamingSessionURL - Amazon Kinesis Video Streams

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 ein MPEG dynamisches adaptives Streaming-Over HTTP (DASH) URL für den Stream ab. Sie können das dann URL 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

Das folgende Verfahren zeigt die Verwendung MPEG — DASH mit Kinesis Video Streams:

  1. Rufen Sie den an GetDataEndpointAPI, um einen Endpunkt zu erhalten. Senden Sie dann die GetDASHStreamingSessionURL Anfragen mit dem Parameter --endpoint-url an diesen Endpunkt.

  2. Rufen Sie das MPEG - ab, indem Sie. DASH URL GetDASHStreamingSessionURL Kinesis 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 ein authentifiziertes URL (das ein verschlüsseltes Sitzungstoken enthält) für das DASH -Manifest der Sitzung zurück (die Root-Ressource, die für das Streaming mit MPEG - DASH benötigt wird). MPEG

    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 zur Verfügung gestellt 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.

  3. Geben Sie das Manifest URL (das das verschlüsselte Sitzungstoken enthält) für das MPEG DASH -Manifest an einen Media Player weiter, der das DASH Protokoll MPEG - unterstützt. Kinesis Video Streams stellt das Initialisierungsfragment und die Medienfragmente über das Manifest zur Verfügung. URL 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.

  4. Der Media Player empfängt die authentifizierten Daten URL und fordert Stream-Metadaten und Mediendaten normal an. Wenn der Media Player Daten anfordert, ruft er die folgenden Aktionen auf:

    • GetDASHManifest: Ruft ein MPEG DASH Manifest ab, das die Metadaten für die Medien enthält, die Sie abspielen möchten.

    • AbrufenMP4InitFragment: 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.

    • AbrufenMP4MediaFragment: 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 privaten Codec-Daten (CPD), die in jedem Fragment enthalten sind, enthalten codecspezifische 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. Sie CPD müssen 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 und AWS Preise. Sowohl für HLS Sitzungen als auch für ausgehende AWS Daten fallen Gebühren an.

Weitere Informationen zu HLS finden Sie unter HTTPLive-Streaming auf der Apple Developer-Website.

Wichtig

Wenn nach dem Aufrufen eines archivierten Kinesis Video Streams Streams-Mediums ein Fehler ausgegeben wirdAPI, enthält dieser zusätzlich zum HTTP Statuscode und dem Antworttext die folgenden Informationen:

  • x-amz-ErrorTypeHTTPHeader — enthält zusätzlich zu den Angaben des HTTP Statuscodes einen spezifischeren Fehlertyp.

  • x-amz-RequestIdHTTPHeader — Wenn Sie dem Support-Team ein Problem melden möchten, können Sie AWS das Problem besser diagnostizieren, wenn Sie die Anforderungs-ID angeben.

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. Außerdem können sie Informationen darüber liefern, welche Maßnahmen der Client-Programmierer möglicherweise ergreifen muss, um es erneut zu versuchen.

Weitere Informationen finden Sie im Abschnitt Fehler am Ende dieses Themas sowie unter Häufige Fehler.

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" }

URIAnforderungsparameter

Die Anfrage verwendet keine URI Parameter.

Anforderungstext

Die Anfrage 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_DEMAND oder PlaybackMode LIVE_REPLAY ist. Dieser Parameter ist optional, falls PlaybackMode ja LIVE. Wenn PlaybackMode jaLIVE, FragmentSelectorType kann er gesetzt werden, TimestampRange sollte aber nicht gesetzt werden. Wenn PlaybackMode ist ON_DEMAND oderLIVE_REPLAY, TimestampRange müssen beide FragmentSelectorType gesetzt werden.

Typ: DASHFragmentSelector Objekt

Erforderlich: Nein

DisplayFragmentNumber

Fragmente werden in der Manifestdatei anhand ihrer Sequenznummer in der Sitzung identifiziert. Wenn auf gesetzt DisplayFragmentNumber istALWAYS, 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. GetMedia und) verwendet werden. GetMediaForFragmentList Um dieses MPEG benutzerdefinierte Attribut nutzen zu können, ist ein benutzerdefinierter DASH Media Player erforderlich.

Der Standardwert ist NEVER.

Typ: Zeichenfolge

Zulässige Werte: ALWAYS | NEVER

Erforderlich: Nein

DisplayFragmentTimestamp

Gemäß der DASH Spezifikation MPEG - 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 istALWAYS, wird jedem S-Element in der Manifestdatei mit dem Attributnamen „kvs:ts“ der genaue Fragment-Zeitstempel hinzugefügt. Um dieses benutzerdefinierte Attribut MPEG nutzen zu können, ist ein benutzerdefinierter DASH Media Player erforderlich.

Der Standardwert ist NEVER. Wenn dies der SERVER_TIMESTAMP Fall DASHFragmentSelector ist, sind die Zeitstempel die Startzeitstempel des Servers. In ähnlicher Weise werden bei den PRODUCER_TIMESTAMP Zeitstempeln die Startzeitstempel des Produzenten verwendet, wenn dies der Fall DASHFragmentSelector ist.

Typ: Zeichenfolge

Zulässige Werte: ALWAYS | NEVER

Erforderlich: 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, GetMP4MediaFragment können keine neuen Aufrufe für diese Sitzung getätigt werden. GetDashManifest GetMP4InitFragment

Der 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 der Wert PlaybackMode istON_DEMAND, werden die ältesten Fragmente zurückgegeben, und zwar bis zu dieser Höchstzahl.

Wenn in einem MPEG DASH Live-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 aber auch die Wahrscheinlichkeit, dass es während der Wiedergabe zu einer Neupufferung kommt. Wir empfehlen, dass ein MPEG DASH Live-Manifest aus mindestens 3 Fragmenten und maximal 10 Fragmenten besteht.

Die Standardeinstellung ist 5 Fragmente, falls PlaybackMode es LIVE oder istLIVE_REPLAY, und 1.000, wenn PlaybackMode es istON_DEMAND.

Der 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: Bei Sitzungen dieses Typs wird das MPEG DASH -Manifest ständig mit den neuesten Fragmenten aktualisiert, sobald sie 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 LIVE Modus 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 angehalten wird oder die Wiedergabe unterbrochen wird. In diesem Modus werden Fragmente nicht zum MPEG DASH -Manifest hinzugefügt, wenn sie älter sind als das neueste Fragment in der Playlist. 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 Sitzungen dieses Typs wird das MPEG DASH -Manifest ähnlich wie die Aktualisierung für den LIVE Modus aktualisiert, außer dass es zunächst Fragmente ab einer bestimmten Startzeit einbezieht. Fragmente werden nicht bei der Aufnahme hinzugefügt, sondern Fragmente werden 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 diesem ON_DEMAND Modus eingeschränkt zu sein.

  • ON_DEMAND: Bei Sitzungen dieses Typs enthält das MPEG DASH -Manifest alle Fragmente für die Sitzung, bis zu der Anzahl, die in angegeben istMaxManifestFragmentResults. Das Manifest darf für jede Sitzung nur einmal abgerufen werden. Wenn diese Art von Sitzung in einem Media Player wiedergegeben wird, zeigt die Benutzeroberfläche in der Regel ein Steuerelement an, mit dem Sie die anzuzeigende Position im Wiedergabefenster auswählen können.

In allen Wiedergabemodi FragmentSelectorType ist das PRODUCER_TIMESTAMP Fragment mit der größeren Fragmentnummer (d. h. das neuere Fragment) im MPEG DASH -Manifest enthalten, wenn dies der Fall ist und mehrere Fragmente mit demselben Startzeitstempel vorhanden sind. Die anderen Fragmente sind nicht enthalten. Fragmente mit unterschiedlichen Zeitstempeln, deren Dauer sich jedoch überschneidet, sind weiterhin im MPEG -Manifest enthalten. DASH Dies kann zu unerwartetem Verhalten im Media Player führen.

Der Standardwert ist LIVE.

Typ: Zeichenfolge

Zulässige Werte: LIVE | LIVE_REPLAY | ON_DEMAND

Erforderlich: Nein

StreamARN

Der Amazon-Ressourcenname (ARN) des Streams, für den das MPEG DASH -Manifest abgerufen werden sollURL.

Sie müssen entweder den StreamName oder den angebenStreamARN.

Typ: 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 das MPEG DASH -Manifest abgerufen werden sollURL.

Sie müssen entweder den StreamName oder den angebenStreamARN.

Typ: 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 Dienst eine HTTP 200-Antwort zurück.

Die folgenden Daten werden vom Dienst im JSON Format zurückgegeben.

DASHStreamingSessionURL

Das URL (das das Sitzungstoken enthält), das 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.

HTTPStatuscode: 400

InvalidArgumentException

Ein angegebener Parameter überschreitet seine Beschränkungen, wird nicht unterstützt oder kann nicht verwendet werden.

HTTPStatuscode: 400

InvalidCodecPrivateDataException

Die privaten Codec-Daten in mindestens einer der Spuren des Videostreams sind für diesen Vorgang nicht gültig.

HTTPStatuscode: 400

MissingCodecPrivateDataException

In mindestens einem der Spuren des Videostreams wurden keine privaten Codec-Daten gefunden.

HTTPStatuscode: 400

NoDataRetentionException

GetImageswurde für einen Stream angefordert, der keine Daten speichert (d. h. den Wert DataRetentionInHours 0 hat).

HTTPStatuscode: 400

NotAuthorizedException

Statuscode: 403, Der Aufrufer ist nicht berechtigt, einen Vorgang mit dem angegebenen Stream auszuführen, oder das Token ist abgelaufen.

HTTPStatuscode: 401

ResourceNotFoundException

GetImageslöst diesen Fehler aus, wenn Kinesis Video Streams den von Ihnen angegebenen Stream nicht finden kann.

GetHLSStreamingSessionURLund GetDASHStreamingSessionURL gibt diesen Fehler aus, wenn eine Sitzung mit einem PlaybackMode of ON_DEMAND oder für einen Stream angefordert LIVE_REPLAY wird, der innerhalb des angeforderten Zeitraums keine Fragmente enthält, oder wenn eine Sitzung mit einem PlaybackMode of für einen Stream angefordert LIVE wird, der innerhalb der letzten 30 Sekunden keine Fragmente enthält.

HTTPStatuscode: 404

UnsupportedStreamMediaTypeException

Der Medientyp (z. B. h.264- oder h.265-Video 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/AVC und optional die Codec-ID für Track 2 sein. A_AAC

HTTPStatuscode: 400

Weitere Informationen finden Sie unter:

Weitere Informationen zur Verwendung API in einer der sprachspezifischen Sprachen AWS SDKs finden Sie im Folgenden: