Automatische Aufnahme in Amazon S3 (Streaming mit niedriger Latenz) - Amazon Interactive Video Service

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.

Automatische Aufnahme in Amazon S3 (Streaming mit niedriger Latenz)

Dieser Abschnitt enthält Informationen zur auto-record-to-S3-Funktion von Amazon IVS-Streaming mit niedriger Latenz. Wir besprechen die Datenspeicherung für aufgenommene Amazon-IVS-Streams. Wir erklären den Speicherinhalt und das Metadatendateischema. Wir besprechen auch die Wiedergabe Ihrer aufgenommenen Inhalte.

Details dazu … Siehe ...

Einrichten und Stoppen der Videoaufnahme

Erstellen eines Kanals in Erste Schritte mit Amazon IVS

Die -API

IVS-API-Referenz

Kosten Amazon-IVS-Kosten

S3-Präfix

Das S3-Präfix ist eine eindeutige Verzeichnisstruktur für jeden aufgezeichneten Livestream. Alle Medien- und Metadatendateien für den Livestream werden in diesem Verzeichnis geschrieben. Bei Kanälen mit aktivierter Aufzeichnung wird das S3-Präfix generiert, wenn eine Live-Sitzung gestartet wird, und im CloudWatch Ereignis zu Beginn und Ende einer Aufzeichnung bereitgestellt.

Das S3-Präfix hat das folgende Format:

/ivs/v1/<aws_account_id>/<channel_id>/<year>/<month>/<day>/<hours>/<minutes>/<recording_id>

Wobei gilt:

  • aws_account_id ist die ID Ihres AWS Kontos (generiert, wenn Sie ein AWS-Konto erstellt haben), aus dem der Kanal erstellt wird.

  • channel_id ist der Ressourcen-ID-Teil des Kanal-ARN (der letzte Teil des Amazon-Ressourcennamens). Siehe ARN in der Glossar.

  • <year>/<month>/<day>/<hours>/<minutes> ist ein UTC-Zeitstempel, wann die Aufnahme gestartet wird.

  • recording_id ist eine eindeutige ID, die für jede Aufzeichnungssitzung generiert wird.

Beispiel:

ivs/v1/123456789012/AsXego4U6tnj/2020/6/23/20/12/j8Z9O91ndcVs

Inhalte der Aufnahme

Beim Start der Aufzeichnung werden Videosegmente und Metadatendateien in den S3-Bucket geschrieben, der für den Kanal konfiguriert ist. Diese Inhalte sind für die Nachbearbeitung oder Wiedergabe als On-Demand-Video verfügbar.

Beachten Sie, dass es nach dem Start eines Livestreams und der Ausgabe des Aufnahmestart- EventBridge Ereignisses etwas Zeit dauert, bis die Manifestdateien und Videosegmente geschrieben werden. Es wird empfohlen, aufgezeichnete Streams erst wiederzugeben oder zu verarbeiten, nachdem das Ereignis Aufzeichnungsende gesendet wurde. (Siehe Verwenden von Amazon EventBridge mit IVS.)

Im Folgenden finden Sie eine Beispielverzeichnisstruktur und den Inhalt einer Aufzeichnung einer Live-Amazon IVS-Sitzung:

ivs/v1/123456789012/AsXego4U6tnj/2020/6/23/20/12/j8Z9O91ndcVs/ events recording-started.json recording-ended.json media hls thumbnails

Der Ordner events enthält die Metadatendateien, die dem Aufzeichnungsereignis entsprechen. JSON-Metadatendateien werden generiert, wenn die Aufzeichnung gestartet, erfolgreich beendet oder mit Fehlern beendet wird:

  • events/recording-started.json

  • events/recording-ended.json

  • events/recording-failed.json

Ein gegebener events-Ordner enthält recording-started.json und entweder recording-ended.json oder recording-failed.json.

Diese enthalten Metadaten, die sich auf die aufgezeichnete Sitzung und ihre Ausgabeformate beziehen. JSON-Details sind unten angegeben.

Der media-Ordner enthält alle unterstützten Medieninhalte in zwei Unterordnern:

  • hls enthält alle Medien und Manifestdateien, die während der Live-Sitzung generiert wurden und mit dem Amazon IVS-Player wiedergegeben werden können. In diesem Ordner gibt es zwei Arten von HLS-Manifesten, das Standard-Mastermanifest master.m3u8 und das Manifest byte-range-multivariant.m3u8 mit aktiviertem Bytebereich. Daher enthält jeder Wiedergabeordner sowohl eine playlist.m3u8- als auch eine byte-range-variant.m3u8-Datei. (Siehe Playlisten im Bytebereich unten.)

  • thumbnails enthält Miniaturbilder, die während der Live-Sitzung generiert wurden. Miniaturansichten werden erstellt und jede Minute in den Bucket geschrieben. (Um dieses Verhalten zu ändern, müssen Sie die Eigenschaft thumbnailConfiguration für eine Aufzeichnungskonfiguration außer Kraft setzen.)

Wichtig: Die Inhalte im Ordner media werden dynamisch generiert und durch die Eigenschaften der ersten empfangenen Videosegmente bestimmt; der Ordnerinhalt stellt möglicherweise nicht die endgültigen Merkmale dar (z. B. die Formatvariantenqualität). Treffen Sie keine Annahmen zum statischen Pfad. Um die verfügbaren HLS-Formatvarianten und deren Pfad zu ermitteln, verwenden Sie die im Folgenden beschriebenen JSON-Metadatendateien.

Playlisten im Bytebereich

Die Funktion auto-record-to-S3 unterstützt zusätzlich zu Standard-HLS-Wiedergabelisten die Generierung von Playlisten im Bytebereich. Playlisten im Bytebereich entsprechen Version 4 der HLS-Spezifikation. Dies ermöglicht ein präziseres Clipping von Inhalten: In einer Playlist im Bytebereich verweist jedes Segment in einer Wiedergabeindexdatei auf einen Teilbereich von Bytes eines Videoteils und bietet damit eine größere Granularität als die standardmäßige 10-Sekunden-Mediendateigröße. Bei einer Playlist mit Bytebereich entspricht die Segmentdauer dem für den Stream konfigurierten Keyframe-Intervall.

Miniaturansichten

Mit der Eigenschaft thumbnailConfiguration einer Aufzeichnungskonfiguration können Sie die Aufzeichnung von Miniaturansichten für eine Live-Sitzung aktivieren oder deaktivieren und das Intervall ändern, in dem Miniaturansichten für die Live-Sitzung erzeugt werden. Die Intervalle für Miniaturansichten können zwischen 1 Sekunde und 60 Sekunden liegen. Standardmäßig ist die Miniaturbildaufnahme in einem Intervall von 60 Sekunden aktiviert. Details dazu finden Sie im Abschnitt Amazon-IVS-API-Referenz.

Die Thumbnail-Konfiguration kann auch dasstorage-Feld (SEQUENTIAL und/oder LATEST) und eine Auflösung (LOWEST_RESOLUTIONSDHD oder FULL_HD) beinhalten. Im Folgenden finden Sie die Auflösungen für jede Option:

160 <= LOWEST_RESOLUTION <= 360

360 <= SD <= 480

480 <= HD <= 720

720 <= FULL_HD <= 1080

Fragmentierte Streams zusammenführen

Mit der recordingReconnectWindowSeconds-Eigenschaft einer Aufzeichnungskonfiguration können Sie ein Zeitfenster (in Sekunden) angeben, in dem Amazon IVS versucht, mit demselben S3-Präfix wie der vorherige Stream aufzuzeichnen, wenn Ihr Stream unterbrochen wird und ein neuer Stream gestartet wird. Mit anderen Worten, wenn eine Sendung die Verbindung trennt und dann innerhalb des angegebenen Intervalls erneut verbindet, werden die mehreren Streams als eine einzige Sendung betrachtet und zusammengeführt.

IVS-Aufzeichnungsstatusänderungsereignisse in Amazon EventBridge: Aufzeichnung von Endereignissen und JSON-Metadatendateien mit Aufzeichnungsende werden um mindestens verzögertrecordingReconnectWindowSeconds, da Amazon IVS darauf wartet, dass kein neuer Stream gestartet wird.

Weitere Informationen zur Einrichtung der Funktionalität zur Zusammenführung von Streams finden Sie unter Schritt 4: Erstellen eines Kanals mit einer optionalen Aufzeichnung in Erste Schritte mit Amazon IVS.

Berechtigung

Damit mehrere Streams mit demselben S3-Präfix aufgezeichnet werden können, müssen bestimmte Bedingungen für alle Streams erfüllt sein:

  • Videobreite und -höhe müssen gleich sein.

  • Die Bildrate muss gleich sein.

  • Die Bitratendifferenz der nachfolgenden Streams muss kleiner oder gleich 50 % der Bitrate des ursprünglichen Streams sein.

  • Video- und Audiocodecs müssen identisch sein.

Hinweise:

  • Maximal 20 Streams werden zusammengeführt, danach wird ein neues S3-Präfix erstellt.

  • Nach 48 Stunden wird ein neues S3-Präfix erstellt. Wenn die erste Sendung beispielsweise 48 Stunden dauert und eine weitere Sendung innerhalb des recordingReconnectWindowSeconds-Intervalls gestartet wird, wird die nächste Sendung nicht mit dem ersten S3-Präfix zusammengeführt.

  • Jeder Stream muss mindestens 10 Sekunden nach dem vorherigen Stream beginnen.

Bekanntes Problem

Wenn recordingReconnectWindowSeconds aktiviert ist und das Web Broadcast SDK verwendet wird, funktioniert die Aufzeichnung mit demselben S3-Präfix möglicherweise nicht, da das Web Broadcast SDK Bitraten und Qualitäten dynamisch ändert.

JSON-Metadatendateien

Wenn ein Ereignis zur Änderung des Aufzeichnungsstatus eintritt, wird eine entsprechende Amazon- CloudWatch Metrik generiert und eine Metadatendatei innerhalb des S3-Präfixes geschrieben. (Siehe Überwachen von Amazon-IVS-Streaming mit niedriger Latenz.)

Diese Metadaten weisen das JSON-Format auf. Sie umfasst die folgenden Informationen:

Feld Typ Erforderlich Beschreibung

channel_arn

Zeichenfolge Ja ARN des Channels, der den Livestream sendet.

media

Objekt Ja

Objekt, das die Aufzählungsobjekte von Medieninhalten enthält, die für diese Aufzeichnung verfügbar sind. Zulässige Werte: "hls", "thumbnails".

  • hls

object Ja

Aufzählungsfeld, das die Ausgabe des Apple HLS-Formats beschreibt.

    • duration_ms

Ganzzahl Bedingt

Dauer des aufgezeichneten HLS-Inhalts in Millisekunden. Dies ist nur verfügbar, wenn recording_status "RECORDING_ENDED" oder "RECORDING_ENDED_WITH_FAILURE" ist. Wenn ein Fehler aufgetreten ist, bevor eine Aufzeichnung durchgeführt wurde, ist dies 0.

    • path

Zeichenfolge Ja

Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt gespeichert wird.

    • playlist

Zeichenfolge Ja

Name der HLS-Master-Wiedergabeliste.

    • byte_range_playlist

Zeichenfolge Ja

Name der multivariablen HLS-Playlist im Bytebereich.

    • renditions

object Ja

Array von Formatvarianten (HLS-Variante) von Metadatenobjekten. Es ist immer mindestens eine Formatvariante vorhanden.

      • path

Zeichenfolge Ja

Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt für diese Formatvariante gespeichert wird.

      • playlist

Zeichenfolge Ja

Name der Medienwiedergabelistdatei für diese Formatvariante.

      • byte_range_playlist

Zeichenfolge Ja

Name der Playlist im Bytebereich für diese Formvariante.

      • resolution_height

int Bedingt

Pixelauflösungshöhe des codierten Videos. Diese Option ist nur verfügbar, wenn die Formatvariante eine Videospur enthält.

      • resolution_width

int Bedingt

Pixelauflösungsbreite des codierten Videos. Diese Option ist nur verfügbar, wenn die Formatvariante eine Videospur enthält.

  • thumbnails

object Bedingt

Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Dies ist nur verfügbar, wenn der recordingMode der Miniaturaufzeichnungskonfiguration INTERVAL ist.

    • path

Zeichenfolge Bedingt

Relativer Pfad vom S3-Präfix, in dem Miniaturansicht-Inhalt gespeichert wird. Dies ist nur verfügbar, wenn der recordingMode der Miniaturaufzeichnungskonfiguration INTERVAL ist.

    • resolution_height

int Ja

Die Höhe des Vorschaubilds. Standard: Auflösung der Quellwiedergabeversion. Dieser Wert wird durch Benutzereingaben in der entsprechenden Aufzeichnungskonfiguration beeinflusst, insbesondere durch den thumbnailConfiguration.resolution -Wert.

    • resolution_width

int Ja

Die Breite des Vorschaubilds. Standard: Auflösung der Quellwiedergabeversion. Dieser Wert wird durch Benutzereingaben in der entsprechenden Aufzeichnungskonfiguration beeinflusst, insbesondere durch den thumbnailConfiguration.resolution-Wert.

  • latest thumbnail

object Ja

Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Diese Funktion ist nur verfügbar, wenn die Konfiguration der Miniaturansicht storage auch LATEST enthält.

    • resolution_height

int Ja

Die Höhe des Vorschaubilds. Standard wird die Auflösung der Quell-Wiedergabeversion sein. Dieser Wert wird durch Benutzereingaben in der entsprechenden Aufzeichnungskonfiguration beeinflusst, insbesondere durch den thumbnailConfiguration.resolution-Wert.

    • resolution_width

int Ja

Die Breite des Vorschaubilds. Standard wird die Auflösung der Quell-Wiedergabeversion sein. Dieser Wert wird durch Benutzereingaben in der entsprechenden Aufzeichnungskonfiguration beeinflusst, insbesondere durch den thumbnailConfiguration.resolution-Wert.

recording_ended_at

Zeichenfolge Bedingt

RFC 3339 UTC-Zeitstempel, wenn die Aufnahme beendet wurde. Dies ist nur verfügbar, wenn recording_status "RECORDING_ENDED" oder "RECORDING_ENDED_WITH_FAILURE" ist.

recording_started_at und recording_ended_at sind Zeitstempel, wenn diese Ereignisse generiert werden, und stimmen möglicherweise nicht genau mit den Zeitstempeln des HLS-Videosegments überein. Um die Dauer einer Aufnahme genau zu bestimmen, verwenden Sie das Feld duration_ms.

recording_started_at

Zeichenfolge Ja

RFC 3339 UTC-Zeitstempel, wenn die Aufnahme gestartet wurde.

Beachten Sie den oben stehenden Hinweis zu recording_ended_at.

recording_status

Zeichenfolge Ja

Aufzeichnungsstatus. Zulässige Werte: "RECORDING_STARTED", "RECORDING_ENDED", "RECORDING_ENDED_WITH_FAILURE".

recording_status_message

Zeichenfolge Bedingt

Beschreibende Informationen über den Status. Dies ist nur verfügbar, wenn recording_status "RECORDING_ENDED" oder "RECORDING_ENDED_WITH_FAILURE" ist.

version

Zeichenfolge Ja

Die Version des Metadatenschemas.

Beispiel: recording_started.json

{ "version" : "v1", "channel_arn" : "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_started_at" : "2020-06-12T12:53:26Z", "recording_status : "RECORDING_STARTED", "media" : { "hls" : { "path" : "media/hls", "playlist" : "master.m3u8", "byte_range_playlist": "byte-range-multivariant.m3u8", "renditions" : [ { "path" : "480p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 480, "resolution_width" : 852 }, { "path" : "360p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 360, "resolution_width" : 640 }, { "path" : "160p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 160, "resolution_width" : 284 }, { "path" : "720p60", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 720, "resolution_width" : 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Beispiel: recording_ended.json

{ "version" : "v1", "channel_arn" : "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_ended_at" : "2020-06-14T12:53:20Z", "recording_started_at" : "2020-06-12T12:53:26Z", "recording_status" : "RECORDING_ENDED", "media" : { "hls" : { "duration_ms" : 172794489, "path" : "media/hls", "playlist" : "master.m3u8", "byte_range_playlist": "byte-range-multivariant.m3u8", "renditions" : [ { "path" : "480p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 480, "resolution_width" : 852 }, { "path" : "360p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 360, "resolution_width" : 640 }, { "path" : "160p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 160, "resolution_width" : 284 }, { "path" : "720p60", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 720, "resolution_width" : 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Beispiel: recording_failed.json

{ "version" : "v1", "channel_arn" : "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_ended_at" : "2020-06-14T12:53:20Z", "recording_started_at" : "2020-06-12T12:53:26Z", "recording_status" : "RECORDING_ENDED", "media" : { "hls" : { "duration_ms" : 172794489, "path" : "media/hls", "playlist" : "master.m3u8", "byte_range_playlist": "byte-range-multivariant.m3u8", "renditions" : [ { "path" : "480p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 480, "resolution_width" : 852 }, { "path" : "360p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 360, "resolution_width" : 640 }, { "path" : "160p30", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 160, "resolution_width" : 284 }, { "path" : "720p60", "playlist" : "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height" : 720, "resolution_width" : 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Erkennen der Formatvarianten einer Aufzeichnung

Wenn Sie Inhalte auf einen Amazon IVS-Kanal streamen, verwendet auto-record-to-s3 das Quellvideo, um mehrere Wiedergabeversionen zu generieren. Durch die Verwendung von Adaptive Bitrate Streaming (ABR) schaltet der Amazon IVS Player die Wiedergabedaten (Bitraten) automatisch nach Bedarf um zur Optimierung der Wiedergabe für unterschiedliche Netzwerkbedingungen.

Jede beim Livestreaming generierte Formatvariante wird in einem eindeutigen Pfad innerhalb des S3-Aufzeichnungspräfix aufgezeichnet. Die Namen der Auflösungsdetails, des Pfads und der Wiedergabeliste werden während des Start- und Stoppens der Aufzeichnung in einer JSON-Metadatendatei gespeichert. Wenn der Wert renditionSelection der Aufnahmekonfiguration ALL ist, werden alle Wiedergabeversionen für die Aufnahme ausgewählt. Wenn renditionSelection CUSTOM ist, muss der Benutzer eine oder mehrere der folgenden Optionen auswählen: LOWEST_RESOLUTIONSDHD und FULL_HD. Im Folgenden finden Sie die Auflösungen für jede Option:

160 <= LOWEST_RESOLUTION <= 360

360 <= SD <= 480

480 <= HD <= 720

720 <= FULL_HD <= 1080

Wichtig: Machen Sie keine Annahmen über den statischen Wiedergabepfad oder die Liste der generierten Wiedergabeversionen, da diese Änderungen unterliegen können. Gehen Sie nicht davon aus, dass eine bestimmte Wiedergabe immer für eine Amazon IVS-Aufnahme verfügbar ist. Informationen zum Ermitteln der verfügbaren Formatvarianten, Auflösungen und Pfade finden Sie in den Metadatendateien.

Die event/recording_started.json- oder event/recording_ended.json-Datei innerhalb des Aufnahme-Präfixes enthält die Pfade und Namen der Mediendateien innerhalb des Aufnahme-Präfixes. Alle path-Elemente relativ zum vorherigen Pfad in der Hierarchie sind. Elemente unter media > hls beschreiben HLS-Assets, wobei Name und Pfad der Master-Wiedergabeliste auf dieser Ebene definiert sind.

Hier ist ein Python-Code-Snippet, das zeigt, wie ein Master-Wiedergabelisten-Pfad mit dem S3-Aufzeichnungspräfix und der Metadatendatei generiert wird:

def get_master_playlist(metadata_json, s3_recording_prefix): return s3_recording_prefix + '/' + metadata_json['media']['hls']['path'] + '/' + metadata_json['media']['hls']['playlist']

Elemente unter media > hls > renditions beschreiben die Liste der aufgezeichneten Formatvarianten. Die resolution_height- und resolution_width-Eigenschaften können verwendet werden, um die Videoauflösung zu identifizieren. Die path- und playlist-Elemente können verwendet werden, um den Wiedergabelisten-Pfad abzuleiten. Verwenden Sie diese Felder, um zu bestimmen, welche Formatvariante für die Nachbearbeitung verwendet werden soll.

Um die höchste verfügbare Wiedergabeliste für eine Aufzeichnung zu ermitteln, können Sie EventBridge Ereignisse „IVS-Aufzeichnungsstatusänderung“ abonnieren. (Siehe Verwenden von Amazon EventBridge mit IVS). Im Folgenden finden Sie ein Beispiel Python-Skript, das die Verwendung einer Lambda-Funktion veranschaulicht, die diese Ereignisse abonniert hat.

import json import boto3 s3 = boto3.resource('s3') def get_highest_rendition_playlist(bucket_name, prefix_name): object_path = "{}/events/recording-started.json".format(prefix_name) object = s3.Object(bucket_name, object_path) body = str(object.get()['Body'].read().decode('utf-8')) metadata = json.loads(body) media_path = metadata["media"]["hls"]["path"] renditions = metadata["media"]["hls"]["renditions"] highest_rendition = None highest_rendition_size = 0 for rendition in renditions: current_rendition_size = rendition["resolution_height"] if (current_rendition_size > highest_rendition_size): highest_rendition_size = current_rendition_size highest_rendition = rendition highest_rendition_playlist = media_path + '/' + highest_rendition['path'] + '/' + highest_rendition['playlist'] return highest_rendition_playlist def lambda_handler(event, context): prefix_name = event["detail"]["recording_s3_key_prefix"] bucket_name = event["detail"]["recording_s3_bucket_name"] rendition_playlist = get_highest_rendition_playlist(bucket_name, prefix_name) print("Highest rendition playlist: {}/{}".format(prefix_name, rendition_playlist)) return { 'statusCode': 200, 'body': rendition_playlist }

Wiedergabe von aufgezeichneten Inhalten aus privaten Buckets

Objekte, die mit dem Feature „Automatische Aufnahme in Amazon S3“ aufgezeichnet wurden, sind standardmäßig privat. Daher können diese Objekte nicht über die direkte S3-URL wiedergegeben werden. Wenn Sie versuchen, das HLS-Master-Manifest (m3u8-Datei) für die Wiedergabe mit dem Amazon-IVS-Player oder einem anderen Player zu öffnen, erhalten Sie eine Fehlermeldung (z. B. „Sie haben keine Berechtigung für den Zugriff auf die angeforderte Ressource“). Stattdessen können Sie diese Dateien mit dem Amazon CloudFront CDN (Content Delivery Network) wiedergeben.

Amazon- CloudFront Verteilung

CloudFront -Verteilungen können so konfiguriert werden, dass Inhalte aus privaten Buckets bereitgestellt werden. In der Regel ist dies gegenüber öffentlich zugänglichen Buckets vorzuziehen, in denen Lesevorgänge die von angebotenen Kontrollen umgehen CloudFront. Ihre Verteilung kann für den Service aus einem privaten Bucket eingerichtet werden, indem eine Ursprungszugriffssteuerung (OAC) erstellt wird. Dabei handelt es sich um einen speziellen CloudFront Benutzer, der über Leseberechtigungen für den privaten Ursprungs-Bucket verfügt. Sie können die OAC erstellen, nachdem Sie Ihre Verteilung erstellt haben, über die CloudFront Konsole oder API. Sehen Sie Erstellen einer neuen Ursprungszugriffssteuerung.

Wiedergabe von Amazon CloudFront

Sobald Sie Ihre Verteilung mithilfe einer OAC eingerichtet haben, um Zugriff auf Ihren privaten Bucket zu erhalten, sollten Ihre Videodateien über die CloudFront URL zur Verwendung verfügbar sein. Ihre CloudFront URL ist der Name der Verteilungsdomäne auf der Registerkarte Details in der AWS- CloudFront Konsole. Sie ist in etwa wie folgt:

a1b23cdef4ghij.cloudfront.net.

Um Ihr aufgezeichnetes Video über Ihre Verteilung zu streamen, suchen Sie den Objektschlüssel für Ihre master.m3u8-Datei. Sie ist in etwa wie folgt:

ivs/v1/012345678912/a0bCDeFGH1IjK/2021/4/20/12/03/aBcdEFghIjkL/media/hls/master.m3u8

Hängen Sie den Objektschlüssel an das Ende Ihrer CloudFront URL an. Ihre endgültige URL sieht etwa folgendermaßen aus:

https://a1b23cdef4ghij.cloudfront.net/ivs/v1/012345678912/a0bCDeFGH1IjK/2021/4/20/12/03/aBcdEFghIjkL/media/hls/master.m3u8

Um von einem Webbrowser aus abzuspielen, stellen Sie sicher, dass Sie CORS sowohl im - als auch CloudFront im S3-Bucket konfigurieren. Befolgen Sie für die CloudFront Konfiguration die Anweisungen unter Erstellen von Ursprungsanforderungsrichtlinien, um der CloudFront Verteilung eine CORS-S3-Ursprungsanforderungsrichtlinie und eine SimpleCORS-Antwort-Header-Richtlinie anzufügen. Sehen Sie sich die Beispielseite der Konfigurationskonsole unten an:


                    Beispielseite für Konsolenkonfigurationen. Wir empfehlen, eine Cache-Richtlinie und eine Origin-Request-Richtlinie zu verwenden, um den Cache-Schlüssel und die Origin-Anfragen zu kontrollieren.

Zur Konfiguration von S3 CORS siehe CORS-Konfiguration, um geeignete Regeln für Ihren S3-Bucket zu erstellen.

Jetzt können Sie Ihr aufgezeichnetes Video wiedergeben, als ob Sie direkt aus einem Bucket abspielen würden.

Weitere Informationen finden Sie unter Beschränken des Zugriffs auf einen Amazon-S3-Ursprung.