

# IVS-Aufzeichnung \$1 Echtzeit-Streaming
<a name="rt-recording"></a>

Für das IVS-Echtzeit-Streaming gibt es zwei Aufzeichnungsoptionen:
+ Bei der Aufzeichnung einzelner Teilnehmer werden die Medien jedes Publishers in separaten Dateien aufgezeichnet.
+ Im Gegensatz dazu fasst die zusammengesetzte Aufzeichnung Medien aller Publisher in einer einzigen Ansicht zusammen und zeichnet sie in einer Datei auf.

Für die Aufzeichnung einzelner Teilnehmer fallen keine zusätzlichen Amazon-IVS-Gebühren an, während bei der zusammengesetzten Aufzeichnung Gebühren für den Stundensatz für das codierte Video anfallen. Bei beiden Aufzeichnungsoptionen fallen standardmäßige S3-Speicher- und Anforderungskosten an. Weitere Informationen finden Sie unter [Preise für Amazon IVS](https://aws.amazon.com/ivs/pricing/).

Wenn Sie eine besser anpassbare Lösung wünschen, sollten Sie das Open-Source-Projekt [IVSStageSaver](https://github.com/aws-samples/amazon-ivs-stage-recorder) als Grundlage für Ihren eigenen, selbst gehosteten Aufzeichnungsdienst verwenden.

## Aufzeichnung einzelner Teilnehmer
<a name="ind-par-rec"></a>

Diese Option ist ideal für Livestreams mit einem einzigen Publisher oder wenn separate Aufzeichnungen jedes Publishers benötigt werden, insbesondere zu Moderationszwecken. Weitere Informationen finden Sie unter [Aufzeichnung einzelner Teilnehmer](rt-individual-participant-recording.md).

![\[Aufzeichnen der Medien jedes Publishers in einer separaten Datei unter Verwendung der Aufzeichnung einzelner Teilnehmer\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/images/Individual_Participant_Recording.png)


## Zusammengesetzte Aufzeichnung
<a name="comp-rec"></a>

Diese Option kombiniert Medien von mehreren Publishern in einer einzigen Ansicht und zeichnet sie in einer Datei auf. Dies ist ideal für ein Video-on-Demand-Erlebnis. Weitere Informationen finden Sie unter [Zusammengesetzte Aufzeichnung](rt-composite-recording.md).

![\[Aufzeichnen einer Stage in einem S3-Bucket mithilfe der serverseitigen Zusammensetzung.\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/images/Composite_Recording.png)


## Miniaturansichten
<a name="thumbnails"></a>

Die Thumbnail-Aufzeichnung für IVS-Echtzeit-Streaming kann sowohl für einzelne Teilnehmeraufzeichnungen als auch für zusammengesetzte Aufzeichnungen (mehrere Teilnehmer) eingerichtet werden. Um die Aufnahme von Thumbnails zu aktivieren oder zu deaktivieren und das Intervall einzustellen, in dem Thumbnails generiert werden, gehen Sie wie folgt vor:
+ Verwenden Sie die Eigenschaft `thumbnailConfiguration` für Aufzeichnungen einzelner Teilnehmer.
+ Verwenden Sie die Eigenschaft `thumbnailConfigurations` für zusammengesetzte Aufzeichnungen.

Die Intervalle für Thumbnails können zwischen 1 Sekunde und 86 400 Sekunden (24 h) liegen. Details finden Sie in der [API-Referenz zu Amazon-IVS-Streaming in Echtzeit](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/Welcome.html).

Eine Thumbnail-Konfiguration umfasst ein `storage`-Feld, das auf `SEQUENTIAL` und/oder `LATEST` gesetzt werden kann. Das `storage`-Feld bestimmt das S3-Speicherverhalten für die Thumbnails:
+ `SEQUENTIAL` speichert alle Thumbnails seriell. Dies ist die Standardeinstellung.
+ `LATEST` speichert nur das neueste Thumbnail und überschreibt das vorherige.

Wenn Sie sowohl `SEQUENTIAL` als auch `LATEST` angeben, werden Thumbnails in zwei separate S3-Pfade geschrieben, einen für das sequentielle Archiv und einen für das neueste Thumbnail.

# Aufzeichnung einzelner IVS-Teilnehmer \$1 Echtzeit-Streaming
<a name="rt-individual-participant-recording"></a>

In diesem Dokument wird erklärt, wie Sie die Aufzeichnung einzelner Teilnehmer mit IVS-Streaming in Echtzeit verwenden können.

Es fallen standardmäßige S3-Speicher- und Anforderungskosten an. Für Thumbnails fallen keine zusätzlichen IVS-Gebühren an. Details finden Sie unter [Preise für Amazon IVS](https://aws.amazon.com/ivs/pricing/).

## Einführung
<a name="ind-part-rec-introduction"></a>

Die Aufzeichnung einzelner Teilnehmer ermöglicht es IVS-Echtzeit-Streaming-Kunden, IVS-Stage-Publisher einzeln in S3-Buckets aufzuzeichnen. Wenn die Aufzeichnung einzelner Teilnehmer für eine Stage aktiviert ist, werden Publisher-Inhalte aufgezeichnet, sobald sie mit der Veröffentlichung für die Stage beginnen.

**Hinweis:** Wenn Sie alle Teilnehmer der Stage in einem einzigen Video mischen möchten, ist das Feature für zusammengesetzte Aufzeichnung besser geeignet. Eine Zusammenfassung der Aufzeichnung von IVS-Echtzeit-Streaming-Inhalten finden Sie unter [Aufzeichnung](rt-recording.md).

![\[Aufzeichnen der Medien jedes Publishers in einer separaten Datei unter Verwendung der Aufzeichnung einzelner Teilnehmer\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/images/Individual_Participant_Recording.png)


## Workflow
<a name="ind-part-rec-workflow"></a>

![\[Workflow für das Aufzeichnen der Medien jedes Publishers in einer separaten Datei unter Verwendung der Aufzeichnung einzelner Teilnehmer\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/images/Workflow_Participant_Recording.png)


### 1. Erstellen eines S3-Bucket
<a name="ind-part-rec-create-s3-bucket"></a>

Es muss ein S3-Bucket vorhanden sein, um VODs zu schreiben. Einzelheiten finden Sie in der S3-Dokumentation zum [Erstellen von Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). Beachten Sie, dass für die Aufzeichnung einzelner Teilnehmer die S3-Buckets in derselben AWS-Region wie die IVS-Stage erstellt werden müssen.

**Wichtig**: Wenn Sie einen vorhandenen S3-Bucket nutzen, ist Folgendes zu berücksichtigen:
+ Für die Einstellung **Objekteigentümerschaft** muss entweder **Bucket-Eigentümer erzwungen** oder **Bucket-Eigentümer bevorzugt** aktiviert sein.
+ Die **Standardverschlüsselung** muss **Serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)** sein.

Einzelheiten finden Sie in der S3-Dokumentation zum [Steuern der Eigentümerschaft von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) und zum [Datenschutz durch Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).

### 2. Erstellen eines StorageConfiguration-Objekts
<a name="ind-part-rec-create-storageconfig-object"></a>

Rufen Sie nach dem Erstellen eines Buckets die IVS-Echtzeit-Streaming-API auf, um [ein StorageConfiguration-Objekt zu erstellen](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_CreateStorageConfiguration.html). Sobald die Speicherkonfiguration erfolgreich erstellt wurde, hat IVS die Berechtigung, in den bereitgestellten S3-Bucket zu schreiben. Sie können dieses StorageConfiguration-Objekt für mehrere Stages wiederverwenden.

### 3. Erstellen einer Stage mit Teilnehmer-Token
<a name="ind-part-rec-create-stage-with-part-tokens"></a>

Jetzt müssen Sie [eine IVS-Stage erstellen](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_CreateStage.html), für welche die Aufzeichnung einzelner Teilnehmer aktiviert ist (indem Sie das AutoParticipantRecordingConfiguration-Objekt festlegen), sowie Teilnehmer-Token für jeden Publisher erstellen.

Mit der folgenden Anforderung wird eine Stage mit zwei Teilnehmer-Token und aktivierter Aufzeichnung einzelner Teilnehmer erstellt.

```
POST /CreateStage HTTP/1.1
Content-type: application/json

{
   "autoParticipantRecordingConfiguration": { 
      "mediaTypes": ["AUDIO_VIDEO"],
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "thumbnailConfiguration": {
         "recordingMode": "INTERVAL",
         "storage": ["LATEST", "SEQUENTIAL"],
         "targetIntervalSeconds": 60
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

### 4. Beitritt zur Stage als aktiver Publisher
<a name="ind-part-rec-join-stage-as-active-pub"></a>

Verteilen Sie die Teilnehmer-Token an Ihre Publisher und lassen Sie sie der Stage beitreten und mit der [Veröffentlichung](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/getting-started-pub-sub.html) dafür beginnen.

Wenn sie der Stage beitreten und mithilfe eines der [Broadcast-SDKs für Echtzeit-Streaming von IVS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/broadcast.html) beginnen, auf ihr zu veröffentlichen, startet der Aufzeichnungsvorgang für die Teilnehmer automatisch und sendet Ihnen ein [EventBridge-Ereignis](eventbridge.md), das angibt, dass die Aufzeichnung gestartet wurde. (Das Ereignis lautet „Statusänderung der IVS-Teilnehmeraufzeichnung – Aufzeichnungsstart“.) Gleichzeitig beginnt der Prozess der Teilnehmeraufzeichnung mit dem Schreiben der VOD- und Metadatendateien in den konfigurierten S3-Bucket. Hinweis: Es kann nicht garantiert werden, dass Teilnehmer, die über einen extrem kurzen Zeitraum (weniger als 5 Sekunden) miteinander verbunden sind, aufgezeichnet werden.

Es gibt zwei Möglichkeiten, das S3-Präfix für jede Aufzeichnung zu erhalten:
+ Hören Sie das EventBridge-Ereignis ab:

  ```
  {
     "version": "0",
     "id": "12345678-1a23-4567-a1bc-1a2b34567890",
     "detail-type": "IVS Participant Recording State Change",
     "source": "aws.ivs",
     "account": "123456789012",
     "time": "2024-03-13T22:19:04Z",
     "region": "us-east-1",
     "resources": ["arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"],
     "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Recording Start",
        "participant_id": "xYz1c2d3e4f",
        "recording_s3_bucket_name": "ivs-recordings",
        "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z"
     }
  }
  ```
+ Verwenden Sie den API-Vorgang [GetParticipant](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_GetParticipant.html) – die Antwort enthält den S3-Bucket und das Präfix für den Ort, an dem ein Teilnehmer aufgezeichnet wird. Hier ist die Anforderung:

  ```
  POST /GetParticipant HTTP/1.1
  Content-type: application/json
  {
     "participantID": "xYz1c2d3e4f",
     "sessionId": "st-ZyXwvu1T2s",
     "stageArn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
  }
  ```

  Und hier ist die Antwort:

  ```
  Content-type: application/json
  {
     "participant": {
        ...
        "recordingS3BucketName": "ivs-recordings",
        "recordingS3Prefix": "<stage_id>/<session_id>/<participant_id>",
        "recordingState": "ACTIVE",
        ...
     }
  }
  ```

### 5. Wiedergabe des VOD
<a name="ind-part-rec-play-back-vod"></a>

Nachdem die Aufzeichnung abgeschlossen ist, können Sie sie mit dem [IVS-Player](https://debug.ivsdemos.com/?p=ivs) ansehen. Anweisungen zum Einrichten von CloudFront-Distributionen für die VOD-Wiedergabe finden Sie unter [Wiedergabe von aufgezeichneten Inhalten aus privaten Buckets](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/rt-composite-recording.html#comp-rec-playback).

## Nur Audioaufzeichnung
<a name="ind-part-rec-audio-only-recordings"></a>

Wenn Sie die Aufzeichnung für einzelne Teilnehmer einrichten, können Sie festlegen, dass nur Audio-HLS-Segmente in Ihren S3-Bucket geschrieben werden. Um dieses Feature zu verwenden, wählen Sie bei der Erstellung der Stage `AUDIO_ONLY mediaType` aus:

```
POST /CreateStage HTTP/1.1
Content-type: application/json

{
   "autoParticipantRecordingConfiguration": { 
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "mediaTypes": ["AUDIO_ONLY"],
      "thumbnailConfiguration": {
         "recordingMode": "DISABLED"
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

## Nur Thumbnail-Aufzeichnung
<a name="ind-part-rec-recording-thumbnail-only"></a>

Wenn Sie die Aufzeichnung für einzelne Teilnehmer einrichten, können Sie festlegen, dass nur Thumbnails in Ihren S3-Bucket geschrieben werden. Um dieses Feature zu verwenden, legen Sie beim Erstellen der Stage für `mediaType` `NONE` fest. Dadurch wird sichergestellt, dass keine HLS-Segmente generiert werden. Thumbnails werden trotzdem erstellt und in Ihren S3-Bucket geschrieben.

```
POST /CreateStage HTTP/1.1
Content-type: application/json
{
   "autoParticipantRecordingConfiguration": { 
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "mediaTypes": ["NONE"],
      "thumbnailConfiguration": {
         "recordingMode": "INTERVAL",
         "storage": ["LATEST", "SEQUENTIAL"],
         "targetIntervalSeconds": 60
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

## Inhalte der Aufnahme
<a name="ind-part-rec-recording-contents"></a>

Wenn die Aufzeichnung einzelner Teilnehmer aktiv ist, werden HLS-Videosegmente und Thumbnails in den S3-Bucket geschrieben, der bei der Erstellung der Stage bereitgestellt wurde. Dieser Inhalt ist für die Nachbearbeitung oder Wiedergabe als On-Demand-Video verfügbar.

Beachten Sie, dass nach Abschluss einer Aufzeichnung das Ereignis „Statusänderung der IVS-Teilnehmeraufzeichnung – Aufzeichnungsende“ über EventBridge gesendet wird. Es wird empfohlen, aufgezeichnete Streams erst wiederzugeben oder zu verarbeiten, nachdem dieses Ereignis empfangen wurde. Einzelheiten finden Sie unter [Verwenden von EventBridge mit IVS-Echtzeit-Streaming](eventbridge.md).

Nachfolgend finden Sie eine Beispielverzeichnisstruktur und den Inhalt einer Aufzeichnung einer Live-IVS-Sitzung:

```
s3://mybucket/stageId/stageSessionId/participantId/timestamp
   events
      recording-started.json
      recording-ended.json
   media
      hls
	 multivariant.m3u8
         high
            playlist.m3u8
            1.mp4
      thumbnails
         high
            1.jpg
            2.jpg
      latest_thumbnail
         high
            thumb.jpg
```

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 angegebener `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 Ordner `media` enthält die unterstützten Medieninhalte. Der Unterordner `hls` enthält alle Medien und Manifestdateien, die während der Aufzeichnungssitzung generiert wurden, und kann mit dem IVS-Player abgespielt werden. Falls konfiguriert, enthalten die Ordner `thumbnails` und die Unterordner `latest_thumbnail` JPEG-Thumbnail-Mediendateien, die während der Aufzeichnungssitzung generiert wurden.

## Zusammenführen fragmentierter Aufzeichnungen einzelner Teilnehmer
<a name="ind-part-rec-merge-frag"></a>

Mit der Eigenschaft `recordingReconnectWindowSeconds` einer Aufzeichnungskonfiguration können Sie ein Zeitfenster (in Sekunden) angeben, in dem IVS versucht, im selben S3-Präfix wie bei der vorherigen Sitzung aufzuzeichnen, wenn ein Stage-Publisher die Verbindung zu einer Stage trennt und dann wieder herstellt. Mit anderen Worten: Wenn ein Publisher die Verbindung trennt und dann innerhalb des angegebenen Intervalls wieder herstellt, werden die einzelnen Aufzeichnungen als eine einzige Aufzeichnung betrachtet und zusammengeführt.

Wenn die Aufzeichnung von Miniaturansichten im Modus `SEQUENTIAL` aktiviert ist, werden die Miniaturansichten ebenfalls unter demselben `recordingS3Prefix` zusammengeführt. Beim Zusammenführen der Aufzeichnungen beginnt der Miniaturansichtenzähler wieder bei dem Wert, der für die vorherige Aufzeichnung geschrieben wurde.

**Ereignisse zur Änderung des IVS-Aufzeichnungsstatus in Amazon EventBridge:** Aufzeichnungsende-Ereignisse und entsprechende JSON-Metadatendateien werden um mindestens `recordingReconnectWindowSeconds` verzögert, da Amazon IVS wartet, damit kein neuer Stream gestartet wird.

Eine Anleitung zum Einrichten der Funktionalität zum Zusammenführen von Streams finden Sie in [Schritt 2: Erstellen einer Stage mit optionaler Teilnehmeraufzeichnung](getting-started-create-stage.md) unter *Erste Schritte mit Amazon-IVS-Streaming in Echtzeit*.

### Berechtigung
<a name="ind-part-rec-merge-frag-eligibility"></a>

Damit mehrere Aufzeichnungen mit demselben S3-Präfix zusammengeführt werden können, müssen für alle Aufzeichnungen bestimmte Bedingungen erfüllt sein:
+ Der Wert der Eigenschaft `recordingReconnectWindowSeconds` der AutoParticipantRecordingConfiguration für die Stage ist auf einen Wert größer als 0 gesetzt.
+ Der `StorageConfigurationArn`, mit dem die VOD-Artefakte geschrieben wurden, ist für alle Aufzeichnungen identisch.
+ Die Zeitdifferenz in Sekunden zwischen dem Verlassen der Stage und dem Wiederbeitritt des Teilnehmers ist kleiner oder gleich `recordingReconnectWindowSeconds`.

Beachten Sie, dass der Standardwert von `recordingReconnectWindowSeconds` 0 lautet, wodurch das Zusammenführen deaktiviert wird.

## Synchronisieren von Aufzeichnungen mehrerer Teilnehmer
<a name="ind-part-rec-sync-multiple"></a>

Aufzeichnungen einzelner Teilnehmer enthalten `EXT-X-PROGRAM-DATE-TIME`-Tags in HLS-Playlisten, die präzise UTC-Zeitstempel mit einer Genauigkeit von Millisekunden für die Synchronisation von Aufzeichnungen mehrerer Teilnehmer während der Nachbearbeitung bereitstellen.

Wenn Sie mehrere Teilnehmer einzeln aufzeichnen und eine synchronisierte Zusammensetzung erstellen möchten (z. B. ein Layout nebeneinander oder ein Bild-in-Bild-Layout), können Sie diese Zeitstempel verwenden, um die Aufzeichnungen genau auszurichten, selbst wenn die Teilnehmer zu unterschiedlichen Zeiten der Stage beigetreten sind oder es zu Unterbrechungen kam, die möglicherweise durch Netzwerkunterbrechungen verursacht wurden.

Die HLS-Playlist jedes Teilnehmers enthält `EXT-X-PROGRAM-DATE-TIME`-Tags, die Folgendes kennzeichnen:
+ Der Beginn der Aufnahme (erstes Segment).
+ Alle Diskontinuitätspunkte während der Aufnahme, z. B. wenn es zu einem Stitching kommt.

Diese Zeitstempel sind auf Millisekunden genau und werden für alle Teilnehmer anhand derselben Zeitreferenz synchronisiert.

### Beispiel einer HLS-Wiedergabeliste
<a name="ind-part-rec-sync-multiple-hls-playlist"></a>

```
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:12
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="init-0.mp4"
#EXT-X-PROGRAM-DATE-TIME:2024-01-01T12:00:00.000Z
#EXTINF:3.30091,
0.mp4
#EXTINF:5.63794,
1.mp4
#EXTINF:2.74290,
2.mp4
#EXT-X-DISCONTINUITY
#EXT-X-MAP:URI="init-1.mp4"
#EXT-X-PROGRAM-DATE-TIME:2024-01-01T12:00:52.772Z
#EXTINF:2.54412,
3.mp4
#EXTINF:5.63649,
4.mp4
```

Die `EXT-X-PROGRAM-DATE-TIME`-Tags geben die genaue UTC-Zeit für das erste Segment und an jedem Diskontinuitätspunkt an und ermöglichen so eine präzise Synchronisation mit den Aufzeichnungen anderer Teilnehmer.

### Synchronisierungs-Workflow
<a name="ind-part-rec-sync-multiple-workflow"></a>

Um Aufzeichnungen mehrerer Teilnehmer zu synchronisieren, extrahieren Sie die `EXT-X-PROGRAM-DATE-TIME`-Zeitstempel aus der HLS-Wiedergabeliste jedes Teilnehmers und verwenden Sie sie, um Zeitversätze zu berechnen. Diese Offsets können dann während der Nachbearbeitung der Zusammensetzung mit Videoverarbeitungstools wie FFmpeg angewendet werden. Wenn die Aufzeichnungen Unterbrechungen aufweisen, bieten Zeitstempel an diesen Stellen die erforderlichen Zeitreferenzen, um eine genaue Synchronisation während der gesamten Aufnahme aufrechtzuerhalten.

Hinweis: Für eine synchronisierte Ausgabe in Echtzeit ohne Nachbearbeitung sollten Sie die serverseitige Zusammensetzung anstelle der Aufzeichnung durch einzelne Teilnehmer in Betracht ziehen.

## JSON-Metadatendateien
<a name="ind-part-rec-json-metadata-files"></a>

Diese Metadaten weisen das JSON-Format auf. Es enthält die folgenden Informationen: 


| Feld | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
| `stage_arn` | Zeichenfolge | Ja | ARN der Stage, die als Quelle für die Aufzeichnung verwendet wird. | 
| `session_id` | Zeichenfolge | Ja | Zeichenfolge, welche die `session_id` der Stage angibt, auf welcher der Teilnehmer aufgezeichnet wird. | 
| `participant_id` | Zeichenfolge | Ja | Zeichenfolge, die die Kennung des aufgezeichneten Teilnehmers darstellt. | 
| `recording_started_at` | Zeichenfolge | Bedingt | RFC 3339 UTC-Zeitstempel, wenn die Aufnahme gestartet wurde. Dies ist nicht verfügbar, wenn sich der `recording_status` in `RECORDING_START_FAILED` befindet. Beachten Sie auch den Hinweis unten für `recording_ended_at`. | 
| `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. **Hinweis:** `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_status` | Zeichenfolge | Ja | Aufzeichnungsstatus. Zulässige Werte: `"RECORDING_STARTED"`, `"RECORDING_ENDED"`, `"RECORDING_START_FAILED"`, `"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. | 
| `media` | object | Ja | Objekt, das die Aufzählungsobjekte von Medieninhalten enthält, die für diese Aufzeichnung verfügbar sind. Zulässiger Wert: `"hls"`. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | object | Ja | Aufzählungsfeld, das die Ausgabe des Apple HLS-Formats beschreibt. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | 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. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Name der HLS-Master-Wiedergabeliste. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Objekt | Ja | Array von Formatversionen (HLS-Varianten) von Metadatenobjekten. Es ist immer mindestens eine Formatvariante vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt für diese Formatvariante gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Name der Medienwiedergabelistdatei für diese Formatvariante. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | object | Bedingt | Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Diese Funktion ist nur verfügbar, wenn das Feld der Konfiguration `storage` `SEQUENTIAL` enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem sequentieller Thumbnail-Inhalt gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | object | Ja | Array von Formatversionen (Thumbnail-Varianten) von Metadatenobjekten. Es ist immer mindestens eine Formatvariante vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem Thumbnail-Inhalt für diese Formatvariante gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | object | Bedingt | Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Diese Funktion ist nur verfügbar, wenn das Feld der Konfiguration `storage` `LATEST` enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem `latest_thumbnail` gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | object | Ja | Array von Formatversionen (Thumbnail-Varianten) von Metadatenobjekten. Es ist immer mindestens eine Formatvariante vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem das neueste Thumbnail für diese Formatvariante gespeichert wird. | 
| `version` | Zeichenfolge | Ja | Die Version des Metadatenschemas. | 

### Beispiel: recording-started.json
<a name="ind-part-rec-json-ex-rec-start"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T13:17:17Z",
   "recording_status": "RECORDING_STARTED",
   "media": {
      "hls": {
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

### Beispiel: recording-ended.json
<a name="ind-part-rec-json-ex-rec-end"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T19:44:19Z",
   "recording_ended_at": "2024-03-13T19:55:04Z",
   "recording_status": "RECORDING_ENDED",
   "media": {
      "hls": {
         "duration_ms": 645237,
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

### Beispiel: recording-failed.json
<a name="ind-part-rec-json-ex-rec-failed"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T19:44:19Z",
   "recording_ended_at": "2024-03-13T19:55:04Z",
   "recording_status": "RECORDING_ENDED_WITH_FAILURE",
   "media": {
      "hls": {
         "duration_ms": 645237,
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

## Konvertieren von Aufzeichnungen in MP4
<a name="ind-part-rec-convert-rec-mp4"></a>

Die Aufzeichnungen einzelner Teilnehmer werden im HLS-Format gespeichert, das aus Playlisten und fragmentierten MP4-Segmenten (fMP4) besteht. Um eine HLS-Aufzeichnung in eine einzelne MP4-Datei zu konvertieren, müssen Sie FFmpeg installieren und den folgenden Befehl ausführen:

```
ffmpeg -i /path/to/playlist.m3u8 -i /path/to/playlist.m3u8 -map 0:v -map 1:a -c copy output.mp4
```

# Zusammengesetzte Aufzeichnung \$1 Echtzeit-Streaming
<a name="rt-composite-recording"></a>

In diesem Dokument wird erläutert, wie Sie das Feature zur Aufzeichnung von Zusammensetzungen innerhalb der [serverseitigen Zusammensetzung](server-side-composition.md) verwenden. Mit der zusammengesetzten Aufzeichnung können Sie HLS-Aufzeichnungen einer IVS-Stage generieren, indem Sie mithilfe eines IVS-Servers alle Stage-Publisher effektiv in einer Ansicht kombinieren und das resultierende Video dann in einem S3-Bucket speichern.

Es fallen standardmäßige S3-Speicher- und Anforderungskosten an. Für Thumbnails fallen keine zusätzlichen IVS-Gebühren an. Details finden Sie unter [Preise für Amazon IVS](https://aws.amazon.com/ivs/pricing/).

## Voraussetzungen
<a name="comp-rec-prerequisites"></a>

Um die zusammengesetzte Aufzeichnung zu verwenden, benötigen Sie eine Stage mit aktiven Publishern und einen S3-Bucket, um ihn als Aufzeichnungsziel zu verwenden. Nachfolgend wird ein möglicher Workflow beschrieben, der EventBridge-Ereignisse verwendet, um eine Zusammensetzung in einem S3-Bucket aufzuzeichnen. Alternativ können Sie Zusammensetzungen basierend auf Ihrer eigenen App-Logik starten und stoppen.

1. Erstellen Sie [eine IVS-Stage](getting-started-create-stage.md) und Teilnehmer-Token für jeden Publisher.

1. Erstellen Sie eine [EncoderConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateEncoderConfiguration.html) (ein Objekt, das angibt, wie das aufgenommene Video gerendert werden soll).

1. Erstellen Sie einen [S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) und eine [StorageConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_CreateStorageConfiguration.html) (in der die Aufzeichnungsinhalte gespeichert werden).

   **Wichtig**: Wenn Sie einen vorhandenen S3-Bucket verwenden, muss die Einstellung **Objekteigentümerschaft** entweder **Bucket-Eigentümer erzwungen** oder **Bucket-Eigentümer bevorzugt** sein. Einzelheiten finden Sie in der S3-Dokumentation zum [Steuern der Eigentümerschaft von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html).

1. [Treten Sie der Stage bei und veröffentlichen Sie dort](getting-started-pub-sub.md).

1. Wenn Sie ein vom Teilnehmer veröffentlichtes [EventBridge-Ereignis](eventbridge.md) erhalten, rufen Sie [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html) mit einem S3 DestinationConfiguration-Objekt als Ziel auf

1. Nach einigen Sekunden sollten Sie sehen können, dass die HLS-Segmente in Ihren S3-Buckets beibehalten werden.

![\[Aufzeichnen einer Stage in einem S3-Bucket mithilfe der serverseitigen Zusammensetzung.\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/images/Composite_Recording_Workflow.png)


**Hinweis:** Eine Zusammensetzung wird nach 60 Sekunden Inaktivität der Publisher-Teilnehmer in der Stage automatisch heruntergefahren. An diesem Punkt wird die Zusammensetzung beendet und sie geht in einen `STOPPED`-Status über. Eine Zusammensetzung wird nach einigen Minuten im `STOPPED`-Status automatisch gelöscht. Einzelheiten finden Sie unter [Zusammensetzungslebenszyklus](ssc-overview.md#ssc-composition-endpoint) unter *Serverseitige Zusammensetzung*.

## Beispiel für eine zusammengesetzte Aufzeichnung: StartComposition mit einem S3-Bucket als Ziel
<a name="comp-rec-example"></a>

Das folgende Beispiel zeigt einen typischen Aufruf des Vorgangs [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html), bei dem S3 als einziges Ziel für die Zusammensetzung angegeben wird. Sobald die Zusammensetzung in einen bestimmten `ACTIVE`-Status übergeht, werden Videosegmente und Metadaten in den durch das `storageConfiguration`-Objekt angegebenen S3-Bucket geschrieben. Informationen zum Erstellen von Zusammensetzungen mit unterschiedlichen Layouts finden Sie unter „Layouts“ im Abschnitt [Serverseitige Zusammensetzung](ssc-overview.md#ssc-api-layouts) und in der [API-Referenz zu IVS-Echtzeit-Streaming](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_LayoutConfiguration.html).

### Anforderung
<a name="comp-rec-example-request"></a>

```
POST /StartComposition HTTP/1.1
Content-type: application/json

{
   "destinations": [
      {
         "s3": {
            "encoderConfigurationArns": [
              "arn:aws:ivs:ap-northeast-1:927810967299:encoder-configuration/PAAwglkRtjge"
            ],
            "storageConfigurationArn": "arn:aws:ivs:ap-northeast-1:927810967299:storage-configuration/ZBcEbgbE24Cq",
	    "thumbnailConfigurations": [
	       {
		  "storage": ["LATEST", "SEQUENTIAL"],
		  "targetIntervalSeconds": 30
               }
	    ]
	 }
      }
   ],
   "idempotencyToken": "db1i782f1g9",
   "stageArn": "arn:aws:ivs:ap-northeast-1:927810967299:stage/WyGkzNFGwiwr"
}
```

### Antwort
<a name="comp-rec-example-response"></a>

```
{
    "composition": {
        "arn": "arn:aws:ivs:ap-northeast-1:927810967299:composition/s2AdaGUbvQgp",
        "destinations": [
            {
                "configuration": {
                    "name": "",
                    "s3": {
                        "encoderConfigurationArns": [
                            "arn:aws:ivs:ap-northeast-1:927810967299:encoder-configuration/PAAwglkRtjge"
                        ],
                        "recordingConfiguration": {
                            "format": "HLS"
                        },
                        "storageConfigurationArn": "arn:aws:ivs:ap-northeast-1:927810967299:storage-configuration/ZBcEbgbE24Cq",
	                "thumbnailConfigurations": [
	                   {
		              "storage": ["LATEST", "SEQUENTIAL"],
		              "targetIntervalSeconds": 30
                           }
	                ]
                    }
                },
                "detail": {
                    "s3": {
                        "recordingPrefix": "MNALAcH9j2EJ/s2AdaGUbvQgp/2pBRKrNgX1ff/composite"
                    }
                },
                "id": "2pBRKrNgX1ff",
                "state": "STARTING"
            }
        ],
        "layout": null,
        "stageArn": "arn:aws:ivs:ap-northeast-1:927810967299:stage/WyGkzNFGwiwr",
        "startTime": "2023-11-01T06:25:37Z",
        "state": "STARTING",
        "tags": {}
    }
}
```

Das in der StartComposition-Antwort vorhandene `recordingPrefix`-Feld kann verwendet werden, um zu bestimmen, wo die Aufnahmeinhalte gespeichert werden. 

## Inhalte der Aufnahme
<a name="comp-rec-contents"></a>

Wenn die Zusammensetzung in einen `ACTIVE`-Status übergeht, werden HLS-Videosegmente und Thumbnails in den S3-Bucket geschrieben, der beim Aufruf von StartComposition bereitgestellt wurde. Dieser Inhalt ist für die Nachbearbeitung oder Wiedergabe als On-Demand-Video verfügbar.

Beachten Sie, dass nach dem Liveschalten einer Zusammensetzung das Ereignis „IVS Composition State Change“ ausgegeben wird und es einige Zeit dauern kann, bis die Manifestdateien, Videosegmente und Thumbnails geschrieben werden. Es wird empfohlen, aufgezeichnete Streams erst wiederzugeben oder zu verarbeiten, nachdem das Ereignis „IVS Composition State Change (Session End)“ empfangen wurde. Einzelheiten finden Sie unter [Verwenden von EventBridge mit IVS-Echtzeit-Streaming](eventbridge.md).

Nachfolgend finden Sie eine Beispielverzeichnisstruktur und den Inhalt einer Aufzeichnung einer Live-IVS-Sitzung:

```
MNALAcH9j2EJ/s2AdaGUbvQgp/2pBRKrNgX1ff/composite
   events
      recording-started.json
      recording-ended.json
   media
      hls
      thumbnails
      latest_thumbnail
```

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 Ordner `media` enthält die unterstützten Medieninhalte. Der Unterordner `hls` enthält alle Medien und Manifestdateien, die während der Zusammensetzungssitzung generiert wurden, und kann mit dem IVS-Player abgespielt werden. Das HLS-Manifest befindet sich im Ordner `multivariant.m3u8`. Falls konfiguriert, enthalten die Ordner `thumbnails` und die Unterordner `latest_thumbnail` JPEG-Thumbnail-Mediendateien, die während der Zusammenstellungssitzung generiert wurden.

## Bucket-Richtlinie für StorageConfiguration
<a name="comp-rec-bucket-policy"></a>

Wenn ein StorageConfiguration-Objekt erstellt wird, erhält IVS Zugriff zum Schreiben von Inhalten in den angegebenen S3-Bucket. Dieser Zugriff wird durch Änderungen an der Richtlinie des S3-Buckets gewährt. *Wenn die Richtlinie für den Bucket so geändert wird, dass der Zugriff von IVS aufgehoben wird, schlagen laufende und neue Aufzeichnungen fehl.*

Das folgende Beispiel zeigt eine S3-Bucket-Richtlinie, die IVS das Schreiben in den S3-Bucket ermöglicht:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CompositeWrite-y1d212y",
            "Effect": "Allow",
            "Principal": {
                "Service": "ivs-composite.ap-northeast-1.amazonaws.com"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::my-s3-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                },
                "Bool": {
                    "aws:SecureTransport": "true"
                }
            }
        }
    ]
}
```

------

## JSON-Metadatendateien
<a name="comp-rec-json"></a>

Diese Metadaten weisen das JSON-Format auf. Es enthält die folgenden Informationen: 


| Feld | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
| `stage_arn` | Zeichenfolge | Ja | ARN der Stage, die als Quelle für die Zusammensetzung verwendet wird. | 
| `media` | object | Ja | Objekt, das die Aufzählungsobjekte von Medieninhalten enthält, die für diese Aufzeichnung verfügbar sind. Zulässige Werte: `"hls"`.  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html) | object | Ja | Aufzählungsfeld, das die Ausgabe des Apple HLS-Formats beschreibt. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | 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. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja |  Name der HLS-Master-Wiedergabeliste.  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Objekt | Ja | Array von Formatvarianten (HLS-Variante) von Metadatenobjekten. Es ist immer mindestens eine Formatvariante vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem HLS-Inhalt für diese Formatvariante gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Name der Medienwiedergabelistdatei für diese Formatvariante. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Bedingt | Pixelauflösungshöhe des codierten Videos. Diese Option ist nur verfügbar, wenn die Formatvariante eine Videospur enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Bedingt | Pixelauflösungsbreite des codierten Videos. Diese Option ist nur verfügbar, wenn die Formatvariante eine Videospur enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | object | Bedingt | Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Diese Funktion ist nur verfügbar, wenn das Feld der Konfiguration `storage` `SEQUENTIAL` enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem sequentieller Thumbnail-Inhalt gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | object | Ja | Array von Auflösungen (Thumbnail-Varianten) von Metadatenobjekten. Es ist immer mindestens eine Auflösung vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem Thumbnail-Inhalt für diese Auflösung gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Ja | Pixelauflösungshöhe des Thumbnails. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Ja | Pixelauflösungsbreite des Thumbnails. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | object | Bedingt | Aufzählungsfeld, das die Ausgabe von Miniaturansichten beschreibt. Diese Funktion ist nur verfügbar, wenn das Feld der Konfiguration `storage` `LATEST` enthält. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem `latest_thumbnail` gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | object | Ja | Array von Auflösungen (Thumbnail-Varianten) von Metadatenobjekten. Es ist immer mindestens eine Auflösung vorhanden. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | Zeichenfolge | Ja | Relativer Pfad vom S3-Präfix, in dem das aktuelle Thumbnail für diese Auflösung gespeichert wird. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Ja | Pixelauflösungshöhe des aktuellen Thumbnails. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/RealTimeUserGuide/rt-composite-recording.html)  | int | Ja | Pixelauflösungsbreite des aktuellen Thumbnails. | 
| `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 | Bedingt | RFC 3339 UTC-Zeitstempel, wenn die Aufnahme gestartet wurde. Dies ist nicht verfügbar, wenn sich der `recording_status` in `RECORDING_START_FAILED` befindet. Beachten Sie den oben stehenden Hinweis zu `recording_ended_at`.  | 
| `recording_status` | Zeichenfolge | Ja | Aufzeichnungsstatus. Zulässige Werte: `"RECORDING_STARTED"`, `"RECORDING_ENDED"`, `"RECORDING_START_FAILED"`, `"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
<a name="comp-rec-json-ex-rec-start"></a>

```
{
  "version": "v1",
  "stage_arn": "arn:aws:ivs:ap-northeast-1:123456789012:stage/aAbBcCdDeE12",
  "recording_started_at": "2023-11-01T06:01:36Z",
  "recording_status": "RECORDING_STARTED",
  "media": {
    "hls": {
      "path": "media/hls",
      "playlist": "multivariant.m3u8",
      "renditions": [
        {
          "path": "720p30-abcdeABCDE12",
          "playlist": "playlist.m3u8",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "thumbnails": {
      "path": "media/thumbnails",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "latest_thumbnail": {
      "path": "media/latest_thumbnail",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    }
  }
}
```

### Beispiel: recording-ended.json
<a name="comp-rec-json-ex-rec-end"></a>

```
{
  "version": "v1",
  "stage_arn": "arn:aws:ivs:ap-northeast-1:123456789012:stage/aAbBcCdDeE12",
  "recording_started_at": "2023-10-27T17:00:44Z",
  "recording_ended_at": "2023-10-27T17:08:24Z",
  "recording_status": "RECORDING_ENDED",
  "media": {
    "hls": {
      "duration_ms": 460315,
      "path": "media/hls",
      "playlist": "multivariant.m3u8",
      "renditions": [
        {
          "path": "720p30-abcdeABCDE12",
          "playlist": "playlist.m3u8",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "thumbnails": {
      "path": "media/thumbnails",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "latest_thumbnail": {
      "path": "media/latest_thumbnail",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    }
  }
}
```

### Beispiel: recording-failed.json
<a name="comp-rec-json-ex-rec-fail"></a>

```
{
  "version": "v1",
  "stage_arn": "arn:aws:ivs:ap-northeast-1:123456789012:stage/aAbBcCdDeE12",
  "recording_started_at": "2023-10-27T17:00:44Z",
  "recording_ended_at": "2023-10-27T17:08:24Z",
  "recording_status": "RECORDING_ENDED_WITH_FAILURE",
  "media": {
    "hls": {
      "duration_ms": 460315,
      "path": "media/hls",
      "playlist": "multivariant.m3u8",
      "renditions": [
        {
          "path": "720p30-abcdeABCDE12",
          "playlist": "playlist.m3u8",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "thumbnails": {
      "path": "media/thumbnails",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    },
    "latest_thumbnail": {
      "path": "media/latest_thumbnail",
      "resolutions": [
        {
          "path": "1280x720",
          "resolution_width": 1280,
          "resolution_height": 720
        }
      ]
    }
  }
}
```

## Wiedergabe von aufgezeichneten Inhalten aus privaten Buckets
<a name="comp-rec-playback"></a>

Standardmäßig sind die aufgezeichneten Inhalte privat. Aus diesem Grund ist die Wiedergabe dieser Objekte über die direkte S3-URL nicht möglich. Wenn Sie versuchen, die multivariate HLS-Wiedergabeliste (m3u8-Datei) zur Wiedergabe mit dem IVS-Player oder einem anderen Player zu öffnen, erhalten Sie eine Fehlermeldung (z. B. „Sie haben keine Berechtigung zum Zugriff auf die angeforderte Ressource“). Stattdessen können Sie diese Dateien mit dem Amazon-CloudFront-CDN (Content Delivery Network) wiedergeben.

Ihre CloudFront-Verteilungen können so konfiguriert werden, dass Inhalt von privaten Buckets bereitgestellt wird. In der Regel ist dies vorzuziehen, offen zugängliche Buckets zu haben, in denen Lesevorgänge die von CloudFront angebotenen Steuerelemente umgehen. Ihre Verteilung kann für den Service von einem privaten Bucket aus eingerichtet werden, indem Sie eine Ursprungs-Zugriffskontrolle erstellen. 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, wenn Sie Ihre Verteilung erstellen oder sie anschließend über die CloudFront-Konsole oder API hinzufügen. Weitere Informationen finden Sie unter [Erstellen einer neuen Ursprungs-Zugriffskontrolle](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#create-oac-overview-s3) im *Amazon CloudFront-Entwicklerhandbuch*.

### Einrichten der Wiedergabe mithilfe von CloudFront mit aktiviertem CORS
<a name="comp-rec-playback-setup"></a>

In diesem Beispiel wird gezeigt, wie ein Entwickler eine CloudFront-Verteilung mit aktiviertem CORS einrichten kann, um die Wiedergabe seiner Aufzeichnungen von jeder Domain aus zu ermöglichen. Dies ist besonders während der Entwicklungsphase nützlich. Sie können das folgende Beispiel jedoch an Ihre Produktionsanforderungen anpassen.

#### Schritt 1: S3-Bucket erstellen
<a name="comp-rec-playback-setup-step1"></a>

Erstellen Sie einen S3-Bucket, der zum Speichern der Aufzeichnungen verwendet wird. Beachten Sie, dass sich der Bucket in derselben Region befinden muss, die Sie für Ihren IVS-Workflow verwenden.

Fügen Sie dem Bucket eine CORS-Berechtigungserichtlinie hinzu:

1. Navigieren Sie in der AWS-Konsole zur Registerkarte **S3-Bucket-Berechtigungen**.

1. Kopieren Sie die untenstehende CORS-Richtlinie und fügen Sie sie unter **Cross-Origin Resource Sharing (CORS)** ein. Dadurch wird der CORS-Zugriff auf den S3-Bucket aktiviert.

   ```
   [
       {
           "AllowedHeaders": [
               "*"
           ],
           "AllowedMethods": [
               "PUT",
               "POST",
               "DELETE",
               "GET"
           ],
           "AllowedOrigins": [
               "*"
           ],
           "ExposeHeaders": [
               "x-amz-server-side-encryption",
               "x-amz-request-id",
               "x-amz-id-2"
           ]
       }
   ]
   ```

#### Schritt 2: Eine CloudFront-Verteilung erstellen
<a name="comp-rec-playback-setup-step2"></a>

Weitere Informationen finden Sie unter [Erstellen einer CloudFront-Verteilung](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html) im *CloudFront-Entwicklerhandbuch*.

Geben Sie über die AWS-Konsole die folgenden Informationen ein:


| Für dieses Feld … | Wählen Sie dies ... | 
| --- | --- | 
| Ursprungs-Domain | Der im vorherigen Schritt erstellte S3-Bucket | 
| Ursprungszugriff | Einstellungen für die Ursprungs-Zugriffskontrolle (empfohlen) unter Verwendung von Standardparametern | 
| Standard-Cache-Verhalten: Viewer-Protokollrichtlinie | Redirect HTTP to HTTPS | 
| Standard-Cache-Verhalten: Zulässige HTTP-Methoden | GET, HEAD und OPTIONS | 
| Standard-Cache-Verhalten: Cache-Schlüssel- und Ursprungsanfragen | CachingDisabled-Richtlinie | 
| Standard-Cache-Verhalten: Ursprungs-Anforderungsrichtlinie | CORS-S3Origin | 
| Standard-Cache-Verhalten: Richtlinie für Antwort-Header | SimpleCORS | 
| Webanwendungs-Firewall | Aktivieren von Sicherheitsmaßnahmen | 

Speichern Sie dann die CloudFront-Verteilung.

#### Schritt 3: Einrichten der S3-Bucket-Richtlinie
<a name="comp-rec-playback-setup-step3"></a>

1. Löschen Sie jede StorageConfiguration, die Sie für den S3-Bucket eingerichtet haben. Dadurch werden alle Bucket-Richtlinien entfernt, die beim Erstellen der Richtlinie für diesen Bucket automatisch hinzugefügt wurden.

1. Navigieren Sie zu Ihrer CloudFront-Verteilung, stellen Sie sicher, dass sich alle Verteilungsfelder in den im vorherigen Schritt definierten Status befinden, und **Kopieren Sie die Bucket-Richtlinie** (verwenden Sie die Schaltfläche **Richtlinie kopieren**). 

1. Navigieren Sie zu Ihrem S3-Bucket. Wählen Sie auf der Registerkarte **Berechtigungen** die Option **Bucket-Richtlinie bearbeiten** aus und fügen Sie die Bucket-Richtlinie ein, die Sie im vorherigen Schritt kopiert haben. Nach diesem Schritt sollte die Bucket-Richtlinie ausschließlich die CloudFront-Richtlinie enthalten. 

1. Erstellen Sie eine StorageConfiguration unter Angabe des S3-Buckets.

Nachdem die StorageConfiguration erstellt wurde, sehen Sie zwei Elemente in der S3-Bucket-Richtlinie: eines erlaubt CloudFront das Lesen von Inhalten und ein anderes erlaubt IVS das Schreiben von Inhalten. Ein Beispiel für eine endgültige Bucket-Richtlinie mit CloudFront- und IVS-Zugriff wird in [Beispiel: S3-Bucket-Richtlinie mit CloudFront- und IVS-Zugriff](#comp-rec-playback-example) gezeigt.

#### Schritt 4: Wiedergabe von Aufnahmen
<a name="comp-rec-playback-setup-step4"></a>

Nachdem Sie die CloudFront-Verteilung erfolgreich eingerichtet und die Bucket-Richtlinie aktualisiert haben, sollten Sie Aufzeichnungen mit dem IVS-Player wiedergeben können:

1. Starten Sie erfolgreich eine Zusammensetzung und stellen Sie sicher, dass eine Aufzeichnung im S3-Bucket gespeichert ist.

1. Nachdem Sie die Schritte 1 bis Schritt 3 in diesem Beispiel ausgeführt haben, sollten die Videodateien für die Nutzung über die CloudFront-URL verfügbar sein. Ihre CloudFront-URL ist der **Domainname für die Verteilung** auf der Registerkarte **Einzelheiten** in der Amazon-CloudFront-Konsole. Sie ist in etwa wie folgt: 

   `a1b23cdef4ghij.cloudfront.net`

1. Um das aufgezeichnete Video über die CloudFront-Verteilung wiederzugeben, suchen Sie den Objektschlüssel für Ihre `multivariant.m3u8`-Datei im S3-Bucket. Sie ist in etwa wie folgt:

   `FDew6Szq5iTt/9NIpWJHj0wPT/fjFKbylPb3k4/composite/media/hls/multivariant.m3u8`

1. 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/FDew6Szq5iTt/9NIpWJHj0wPT/fjFKbylPb3k4/composite/media/hls/multivariant.m3u8`

1. Sie können jetzt die endgültige URL zum Quellattribut eines IVS-Players hinzufügen, um die vollständige Aufzeichnung anzusehen. Um das aufgezeichnete Video anzusehen, können Sie die Demo unter [Erste Schritte](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/web-getting-started.html) im *IVS Player SDK: Web Guide* verwenden.

### Beispiel: S3-Bucket-Richtlinie mit CloudFront und IVS-Zugriff
<a name="comp-rec-playback-example"></a>

Der folgende Ausschnitt veranschaulicht eine S3-Bucket-Richtlinie, die es CloudFront ermöglicht, Inhalte in den privaten Bucket zu lesen und IVS-Inhalte in den Bucket zu schreiben. **Hinweis: Kopieren Sie den unten stehenden Ausschnitt nicht und fügen Sie ihn nicht in Ihren eigenen Bucket ein. Ihre Richtlinie sollte die IDs enthalten, die für Ihre CloudFront-Verteilung und Speicherkonfiguration relevant sind.**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CompositeWrite-7eiKaIGkC9DO",
      "Effect": "Allow",
      "Principal": {
        "Service": "ivs-composite.ap-northeast-1.amazonaws.com"
      },
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::eicheane-test-1026-2-ivs-recordings/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        },
        "Bool": {
          "aws:SecureTransport": "true"
        }
      }
    },
    {
      "Sid": "AllowCloudFrontServicePrincipal",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::eicheane-test-1026-2-ivs-recordings/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::844311324168:distribution/E1NG4YMW5MN25A"
        }
      }
    }
  ]
}
```

------

## Fehlerbehebung
<a name="comp-rec-troubleshooting"></a>
+ **Die Zusammensetzung wird nicht in den S3-Bucket geschrieben –** Stellen Sie sicher, dass der S3-Bucket und die StorageConfiguration-Objekte erstellt werden und sich in derselben Region befinden. Stellen Sie außerdem sicher, dass IVS Zugriff auf den Bucket hat, indem Sie Ihre Bucket-Richtlinie überprüfen. Weitere Informationen finden Sie unter [Bucket-Richtlinie für die Speicherkonfiguration](#comp-rec-bucket-policy).
+ **Ich kann beim Ausführen von *ListCompositions* keine Zusammensetzung finden –** Zusammensetzungen sind kurzlebige Ressourcen. Sobald diese in einen endgültigen Status übergehen, werden sie nach einigen Minuten automatisch gelöscht.
+ **Meine Zusammensetzung hält automatisch an –** Eine Zusammensetzung stoppt automatisch, wenn sich mehr als 60 Sekunden lang kein Publisher in der Stage befindet.

## Bekanntes Problem
<a name="comp-rec-issues"></a>

Die von der zusammengesetzten Aufhzeichnung geschriebene Medien-Wiedergabeliste erhält das Tag `#EXT-X-PLAYLIST-TYPE:EVENT`, während die Zusammensetzung läuft. Wenn die Zusammensetzung abgeschlossen ist, wird das Tag auf `#EXT-X-PLAYLIST-TYPE:VOD` aktualisiert. Für ein reibungsloses Wiedergabeerlebnis empfiehlt es sich, diese Wiedergabeliste erst zu verwenden, nachdem die Zusammensetzung erfolgreich abgeschlossen wurde.