Archivierung
Mit der Archivierungsfunktion der Vonage Video API können Sie Sitzungen aufzeichnen, speichern und abrufen.
Dieses Thema umfasst die folgenden Abschnitte:
- Grundlegender Arbeitsablauf
- Archivierungsdauer
- Archivierung
- Nur-Audio- und Nur-Video-Archive
- Einzelne Streams und zusammengesetzte Archive
- Arbeiten mit einzelnen Stream-Archiven
- Auswahl der in ein Archiv aufzunehmenden Streams
- Automatisch archivierte Sitzungen
- Gleichzeitige Archive
- Nachbearbeitung zusammengesetzter Archive
- Änderung des Archivstatus
- Archivsicherheit
- Beispiel-Apps
- Weitere Informationen
Grundlegender Arbeitsablauf
Das ist wichtig: Sie können nur Sitzungen archivieren, die den OpenTok Media Router verwenden (Sitzungen mit dem Medienbetrieb auf geroutet gesetzt).
Sie können ein Archiv für eine OpenTok-Sitzung mithilfe der OpenTok REST API oder eines der OpenTok-Server-SDKs. Sobald Sie ein Archiv erstellen, beginnt die Aufzeichnung. Sie können ein Archiv nur für Sitzungen erstellen, bei denen mindestens ein Client verbunden ist. (Ein Client muss innerhalb einer Minute mit der Übertragung eines Streams beginnen, andernfalls wird die Archivierung beendet.)
Wenn Clients die Veröffentlichung von Streams starten und beenden, werden die Streams aufgezeichnet.
Das ist wichtig: Sie können bis zu 16 Videostreams mit zusammengefasster Archivierung oder 50 mit individueller Stream-Archivierung aufzeichnen. (Sowohl zusammengefasste als auch individuelle Stream-Archive können bis zu 50 Audiostreams enthalten.) Siehe Einzelne Streams und zusammengesetzte Archive. Sobald diese Grenze erreicht ist, werden weitere Streams, die an die Sitzung gesendet werden, nicht mehr aufgezeichnet. Die maximale aufgezeichnet Die Dauer eines Archivs (die Gesamtzeit, in der Streams in der Sitzung veröffentlicht werden) beträgt 4 Stunden (14.400 Sekunden). Siehe Archivierungsdauer für weitere Einzelheiten.
Die Anzahl der Archive, die Sie aufzeichnen können, ist unbegrenzt. (Beachten Sie jedoch, dass automatisch archivierte Sitzungen (Alle 4 Stunden wird eine neue Aufnahme gestartet, bis die Aufnahme beendet wird.)
Die OpenTok-REST-API und die OpenTok-Server-SDKs enthalten Methoden für Folgendes:
- Starten einer Archivaufzeichnung
- Anhalten einer Archivaufzeichnung
- Archiv der Einträge
- Abrufen von Archivinformationen
- Löschen eines Archivs
Wenn Sie die Aufzeichnung eines Archivs beenden, erstellt der OpenTok-Server eine MP4-Datei oder (im Falle von Einzelstream-Archiven) eine ZIP-Datei. (Siehe Einzelne Streams und zusammengesetzte Archive.)
Wenn eine Archivaufzeichnung beginnt und endet, werden in den Clients Ereignisse ausgelöst. Beispielsweise enthält die OpenTok.js-Bibliothek archiveStarted und archiveStopped Ereignisse, die durch das Session-Objekt ausgelöst werden.
Archivierungsdauer
Die maximale aufgezeichnet Die Dauer eines Archivs beträgt 4 Stunden (14.400 Sekunden). Dies aufgezeichnet Dauer
bezieht sich auf die Gesamtzeit, in der Streams veröffentlicht (und aufgezeichnet) werden.
Solange Streams veröffentlicht (und aufgezeichnet) werden, wird der Status des Archivs auf "started".
(Siehe Archivstatusänderungen).
Solange ein Archiv aufzeichnet, ohne dass Streams veröffentlicht werden, wird der Status
auf "paused".
Die maximale insgesamt Die Dauer eines Archivs, einschließlich der Zustände „gestartet“ und „angehalten“, beträgt 12 Stunden (43.200 Sekunden). Archive werden automatisch beendet (und die Aufzeichnung gestoppt), nach 1 Stunde (3.600 Sekunden) Inaktivität (wenn keine Clients Streams veröffentlichen).
Anmerkungen:
- Automatisch archivierte Sitzungen zu einer oder mehreren aufeinanderfolgenden Aufzeichnungen führen, die jeweils höchstens 4 Stunden lang sind.
- Laufende Archive werden während der Serverrotation beendet (mit Ausnahme der automatischen Archive, die automatisch neu gestartet werden, wenn die Sitzung während der Serverrotation migriert wird). Sie können Archive als Reaktion auf Benachrichtigungsereignisse zur Serverrotation neu starten. Siehe . Server-Rotation und Sitzungsmigration.
Archivierung
Verwenden Sie Ihr Video API-Konto um ein Ziel für die hochzuladenden, fertiggestellten Archivdateien festzulegen. Dies kann Ihr eigener Amazon S3-Bucket, ein Bucket bei einem anderen S3-kompatiblen Speicheranbieter als Amazon oder ein Windows Azure-Container sein. Bei anderen S3-kompatiblen Speicheranbietern als Amazon S3 unterstützen wir Cloudian und Google Cloud Storage (Zugriff über die AWS-S3-API). Bei anderen S3-kompatiblen Diensten können Funktionseinschränkungen bestehen. Siehe Verwendung von S3-Speicher bei der OpenTok-Archivierung und Verwendung eines Windows Azure-Containers mit OpenTok-Archivierung.
Wenn das Archiv fertiggestellt ist (das Archivstatus wird eingestellt auf "stopped"), versuchen wir, die Archivdatei bis zu 72 Stunden nach der Erstellung des Archivs (oder mindestens 6 Stunden, wenn der Fallback aktiviert ist) auf das angegebene Ziel (z. B. einen S3-Bucket oder einen Azure-Container) hochzuladen, wobei wir im Rahmen einer verteilten Upload-Planungsrichtlinie mehrere Wiederholungsversuche durchführen.
Wenn der Upload auf das angegebene Ziel erfolgreich war, wird der Archivstatus auf "uploaded".
Wenn der Upload auf das angegebene Ziel (nach mehreren Wiederholungsversuchen) fehlschlägt und die Ausweichoption auf den OpenTok-Speicher aktiviert ist, stellen wir das Archiv in der OpenTok-Cloud zum Download bereit, und der Archivstatus wird auf "available". Sobald die Datei in der OpenTok-Cloud zum Download bereitsteht, werden wir keinen weiteren Versuch mehr unternehmen, sie auf das von Ihnen angegebene Ziel hochzuladen. In der OpenTok-Cloud bereitgestellte Archive stehen ab dem Zeitpunkt ihrer Erstellung 72 Stunden lang zur Verfügung. Um zu verhindern, dass Daten ausweichend in der OpenTok-Cloud gespeichert werden, deaktivieren Sie diese Funktion während der S3 oder Azurblau Einrichtungsprozess.
Wenn der Upload auf das angegebene Ziel (nach mehreren Wiederholungsversuchen) fehlschlägt und die Ausweichoption auf den OpenTok-Speicher deaktiviert ist, wird der Archivstatus auf "failed".
Sie können erst dann auf das Archiv zugreifen, wenn es auf den von Ihnen angegebenen Speicherort hochgeladen wurde oder im OpenTok-Speicher verfügbar ist.
Für Archive, die in der OpenTok-Cloud gespeichert sind, wird die Download-URL in der url Eigenschaft des Archivs, wenn der Archivstatus auf "available". Jede Download-URL, die im Rahmen des Fallbacks auf die Archivspeicherung verwendet wird, ist eine vorab signierte URL, die mithilfe von Sicherheitsanmeldedaten eine zeitlich begrenzte Berechtigung zum Herunterladen des Archivs gewährt. Nach 10 Minuten läuft die vorab signierte URL ab, und es muss über die REST-API oder eine Server-Methode eine neue vorab signierte URL angefordert werden, um die Download-URL abzurufen. Aus Sicherheitsgründen ist die Download-URL nur über REST-API-Aufrufe oder Server-SDK-Methoden für Abrufen von Archivinformationen oder Angebotsarchiv (für die Ihre Account-Anmeldedaten erforderlich sind).
Nur-Audio- und Nur-Video-Archive
Wenn Sie ein Archiv mit dem OpenTok REST API oder eines der OpenTok-Server-SDKs, können Sie festlegen, ob das Archiv Audio, Video oder beides aufzeichnen soll. (Standardmäßig werden beide aufgezeichnet.)
Einzelne Streams und zusammengesetzte Archive
Die Archivausgabedatei kann eines der folgenden Formate haben:
-
Zusammengesetzte Archive – Das Archiv besteht aus einer einzigen MP4-Datei, die alle Streams enthält. Dies ist die Standardeinstellung. Sie wird auch für automatisch archivierte Sitzungen verwendet (siehe Automatisch archivierte Sitzungen). Die MP4-Datei verwendet H.264-Video und AAC-Audio (mit 128 kbit/s und einer Abtastrate von 48 kHz).
Sie können das Layout eines zusammengesetzten Archivs anpassen, indem Sie die visuelle Anordnung der Streams sowie die Auswahl der angezeigten Streams festlegen. Siehe Anpassen des Videolayouts für zusammengesetzte Archive.
Standardmäßig haben zusammengesetzte Archive eine Auflösung von 640 x 480 Pixel (SD im Querformat). Um ein zusammengesetztes Archiv auf eine Auflösung von 480 × 640 (SD im Hochformat), 1280 × 720 (HD im Querformat), 720 × 1280 (HD im Hochformat) 1920 × 1080 (FHD Querformat) oder 1080 × 1920 (FHD Hochformat) einzustellen, legen Sie den
resolutionEigenschaft zu"480x640","1280x720","1920x1080","720x1280", oder"1080x1920"beim Aufruf der Archiv starten Methode der OpenTok-REST-API. Bei der Aufzeichnung von Archiven, die Videostreams von Mobilgeräten enthalten (die häufig das Hochformat verwenden), empfiehlt es sich, das Hochformat zu verwenden.Sie können die maximale Video-Bitrate eines zusammengestellten Archivs festlegen, um die Größe des Archivs zu steuern. Legen Sie die Option „maxBitrate“ beim Aufruf der Archiv starten Methode. Geben Sie eine Bitrate in Bits pro Sekunde zwischen 100.000 und 6.000.000 an. Diese Einstellung gilt nur für die Methode Video Bitrate des Archivs. Wenn das Ausgangsarchiv Audio enthält, werden diese Bits bei der Begrenzung nicht berücksichtigt. Diese Option ist nur für zusammengesetzte Archive verfügbar (nicht für Archive mit einzelnen Streams). Wenn Sie die maximale Bitrate festlegen, verwendet das Archiv eine konstante Bitrate.
Sie können den Quantisierungsparameter (QP) für ein zusammengesetztes Archiv einstellen, um den Kompromiss zwischen Videoqualität und Dateigröße anzupassen. Setzen Sie den
quantizationParameterOption beim Aufruf der Archiv starten Methode. Die Einstellung des Quantisierungsparameters bewirkt, dass das Archiv eine variable Bitrate und eine konstante Komprimierungsquantisierung verwendet, was zu einem konsistenten Qualitätsniveau bei Szenenwechseln führt. Gültige Werte liegen zwischen 15 und 40, wobei 20 bis 30 vernünftige Ergebnisse ohne große Unterschiede in der wahrgenommenen Qualität liefern. Niedrigere QP-Werte bewirken eine feinere Quantisierung der Videokompression, was zu einer besseren Videoqualität (mehr Videodetails bleiben erhalten) und einer größeren Datei führt. Höhere QP-Werte bewirken eine gröbere Quantisierung der Videokomprimierung, was zu einer geringeren Videoqualität und einer geringeren Dateigröße führt. Sie können nicht beide Werte einstellen.quantizationParameterEigenschaft und diemaxBitrateEigenschaft – dies führt zu einem Fehler. Anmerkung: Derzeit ist die Einstellung des Quantisierungsparameters nur in der REST-API verfügbar, nicht jedoch in den OpenTok-Server-SDKs.Standardmäßig, wenn Sie nicht festlegen
quantizationParameterodermaxBitrateBei der Erstellung eines zusammengesetzten Archivs verwendet das Archiv eine Kodierung mit variabler Bitrate und einem Quantisierungsparameter, der eine hohe Qualität gewährleistet. -
Einzelne Stream-Archive – Das Archiv ist eine ZIP-Container-Datei mit mehreren einzelnen Mediendateien für jeden Stream sowie einer JSON-Metadatendatei für die Videosynchronisation. Sie können dieses Format angeben, wenn Sie eine der folgenden Optionen verwenden: OpenTok-Server-SDKs um das Archiv zu starten. Dieses Format steht für automatisch archivierte Sitzungen nicht zur Verfügung (siehe Automatisch archivierte Sitzungen).
Anmerkungen:
- Wenn bei einem zusammengesetzten Archiv der Archivierungsvorgang gestartet wird und während der gesamten Dauer des Archivs keine Daten gestreamt werden (es werden weder Audio- noch Videodaten veröffentlicht), beträgt die Größe der Archivdatei 0 Byte.
- In einem zusammengestellten Archiv kann es vorkommen, dass das Video jedes enthaltenen Streams etwas später als der Ton startet (wobei das Video zunächst schwarz bleibt, bis es beginnt).
Arbeiten mit einzelnen Stream-Archiven
Der Modus „Einzelnes Stream-Archiv“ ist für die Verwendung mit einem Nachbearbeitungswerkzeug vorgesehen, um maßgeschneiderte Inhalte zu erstellen, die von Ihrer Anwendung generiert werden. Es gibt einige Aspekte, die Entwickler bei der Entscheidung für die Nutzung dieser Funktion berücksichtigen sollten.
Einzelne Strombehälter
Die einzelnen Medien aus dem Stream-Archiv werden als ZIP-Archiv bereitgestellt, das Dateien für jeden Audio- und Videostream enthält:
-
Jeder Stream-Container im Archiv entspricht einem bei OpenTok veröffentlichten Stream. Die Stream-ID des Herausgebers stimmt mit dem entsprechenden Dateinamen überein, und jede Stream-ID ist in der Archivmanifest.
Wenn ein Stream aufgrund einer automatischen Wiederverbindung unterbrochen und wieder aufgenommen wird oder wenn ein Stream wiederholt in einem Archiv im manuellen Stream-Modus, das ZIP-Archiv enthält separate Dateien für jedes einzelne Segment des Streams.
-
Stream-Container sind entweder vom Typ
.webm, oder.mkv, abhängig von der Konfiguration Ihres Projekts. Archive für Sitzungen, die VP8 oder VP9 als bevorzugter Video-Codec habenwebmContainer sowie Projekte, bei denen H.264 als bevorzugter Videocodec festgelegt ist, verwenden denmkvFormat. Siehe Hinweise zur Archivierung mit VP9-Videos Weitere wichtige Informationen zu VP9-Videos finden Sie in den einzelnen Stream-Archiven. -
Einzelne Stream-Archiv-Container enthalten alle Video- und Audiodaten, die vom Archivserver empfangen wurden. Diese Medien werden nicht verarbeitet, weshalb der Container in den meisten Fällen nicht für die direkte Wiedergabe geeignet ist.
Der Stream-Container wird wie ein Transportstrom behandelt – alle Medien, die auf dem Archivserver eingehen, werden direkt in eine Datei geschrieben, ohne dass sie überprüft oder nachbearbeitet werden. Diese Konzeption hat Auswirkungen auf die nachgelagerte Nutzung von Stream-Containern. In den meisten Fällen ist die direkte Wiedergabe eines einzelnen Stream-Archiv-Containers nicht möglich oder führt aufgrund des Inhalts des Containers zu Problemen:
- Die angegebenen Abmessungen im Stream-Header sind selten korrekt. Derzeit zeigen die Header des Containers eine Videospur mit einer Auflösung von 640 × 480 Pixeln an, unabhängig von den Abmessungen der kodierten Videobilder.
- Die Abmessungen von Videobildern ändern sich im Laufe der Zeit. Dazu können auch Änderungen des Seitenverhältnisses gehören, insbesondere bei Streams mit Bildschirmfreigabe.
- Audio- und Videobilder werden möglicherweise nicht mit monotonen Zeitstempeln übertragen; die Bildraten
sind nicht immer konsistent. Dies ist insbesondere dann relevant, wenn entweder die Video- oder
die Audiospur vorübergehend deaktiviert wird, und zwar mithilfe einer der folgenden Optionen:
publishVideooderpublishAudioVerlagseigenschaften.
Die Zeitstempel für die Frame-Präsentation (PTS) werden auf der Grundlage von NTP-Zeitstempeln geschrieben, die zum Zeitpunkt der Erfassung erfasst wurden, versetzt um den Zeitstempel des ersten empfangenen Frames. Selbst wenn eine Spur stummgeschaltet und später wieder aktiviert wird, sollte der Zeitstempel-Versatz über die gesamte Dauer des Streams hinweg konsistent bleiben. Bei der Dekodierung in der Nachbearbeitung besteht für die Dauer der Stummschaltung des Tracks eine Lücke im PTS zwischen aufeinanderfolgenden Frames: Es gibt keine „stillen“ Frames im Container.
Um aus einzelnen Stream-Archivdateien anzeigbare Inhalte zu erstellen, müssen Sie die Medien durch einen Nachbearbeitungsprozessor leiten, um einzelne Stream-Container zu reparieren oder mehrere Container zu multiplexen bzw. zu einem Endprodukt zusammenzufügen. Vorschläge für den Einstieg in die Nachbearbeitung finden Sie in unserem GitHub-Repository „archiving-composer“: https://github.com/opentok/archiving-composer.
Manifest des einzelnen Stream-Archivs
Die einzelnen Stream-Archive enthalten eine JSON-Metadaten-Datei, die Informationen über die im Archiv enthaltenen Stream-Aufzeichnungen enthält. Sie hat das folgende Format:
{
"createdAt" : 1429305105162,
"files" : [
{
"connectionData" : "connection data for this stream's connection",
"filename" : "a1475893-99f5-4f02-b697-5d69e8e30d19.webm",
"size" : 5558064,
"startTimeOffset" : 3119,
"stopTimeOffset" : 48765,
"streamId" : "a1475893-99f5-4f02-b697-5d69e8e30d19",
"videoType": "camera"
},
{
"connectionData" : "connection data for this stream's connection",
"filename" : "5ab71b7b-d998-4683-ad2b-7769d6533666.webm",
"size" : 5396527,
"startTimeOffset" : 2799,
"stopTimeOffset" : 48764,
"streamId" : "5ab71b7b-d998-4683-ad2b-7769d6533666",
"videoType": "screen"
}
],
"id" : "297b9c62-78b3-4152-9e98-7e167354c9e6",
"name" : "archive name",
"partnerId" : 123456,
"sessionId" : "2_MX4xMDB-fjE0MjkzMDQ3NzY3NTZ-WUpRUGVFUmhFSkRmVGljeU5zVnJpaXYxfn4"
}
Diese JSON-Datei enthält die folgenden Eigenschaften:
-
id — Die eindeutige Kennung dieses Archivs.
-
partnerId – Die Partner-/Projekt-ID dieses Archivs
-
sessionId – Die Sitzungs-ID dieses Archivs
-
name — Der Name dieses Archivs. Dieses Feld ist leer, wenn „name“ beim Aufruf von Archiv starten.
-
createdAt — Die Unix-Zeit in Millisekunden, zu der das Archiv erstellt wurde.
-
Dateien – Ein Array mit den im ZIP-Container enthaltenen Dateien. Jede Datei weist die folgenden Eigenschaften auf:
-
streamId — Die zugehörige Stream-ID für den Stream, der in dieser Datei aufgezeichnet wurde.
Wenn ein Stream aufgrund einer automatischen Wiederverbindung unterbrochen und wieder aufgenommen wird oder wenn ein Stream wiederholt in einem Archiv im manuellen Stream-Modus, Das jeweilige Stream-Archiv enthält separate Dateien für jedes einzelne Segment des Streams.
-
Dateiname — Der Name der aufgezeichneten Mediendatei. Dabei handelt es sich um eine
.webmfür ein Archiv einer Sitzung in einem OpenTok-Projekt, das VP8 als bevorzugter Video- Codec, und es wird ein.mkvfür ein Archiv einer Sitzung in einem Projekt, das H.264 als bevorzugten Videocodec verwendet.Wenn ein Stream unterbrochen und aufgrund einer automatischen Wiederverbindung fortgesetzt wird oder wenn ein Stream wiederholt in einem Archiv im manuellen Stream-Modus, können mehrere Dateien für denselben Stream vorhanden sein (jeweils entsprechend einem Segment), und der Dateiname jedes Stream-Segments wird hinter der Stream-ID um eine Indexnummer (z. B. „_1“ oder „_2“) ergänzt, um die Reihenfolge der Segmente zu kennzeichnen.
-
startTimeOffset – Der Versatz in Millisekunden für den Zeitpunkt, zu dem die Aufzeichnung dieser Datei begann (gemessen ab dem „createdAt“-Zeitpunkt des Archivs) – siehe den wichtigen Hinweis unten.
-
stopTimeOffset – Der Versatz in Millisekunden, der angibt, wann die Aufzeichnung dieser Datei beendet wurde (gemessen ab dem „createdAt“-Zeitpunkt des Archivs) – siehe den wichtigen Hinweis unten.
-
connectionData — Die Verbindungsdaten für den Verlagskunden.
-
videoType— Entweder"camera","screen", oder"custom". A"screen"Das Video nutzt die Bildschirmfreigabe auf dem Publisher als Videoquelle; ein „benutzerdefiniertes“ Video wird von einem Web-Client unter Verwendung eines HTML-VideoTrack-Elements als Videoquelle veröffentlicht. Bei einem von einem Mobilgerät veröffentlichten Stream kann sich der Bildschirmtyp von einer Kamera zu einem Bildschirmfreigabe-Videotyp ändern. Die Eigenschaft im Archiv-Manifest gibt jedoch nur den ursprünglichen Videotyp an.
-
Das ist wichtig: In einem Archiv einzelner StreamsWenn während der Aufzeichnung für einen kurzen Zeitraum keine Streams veröffentlicht werden, wird die startTimeOffset Die Werte für „stopTimeOffset“ können geringfügig abweichen. Dies ist ein bekanntes Problem.
Nachbearbeitung einzelner Archive
Eine Beispielanwendung für einen Postprozessor ist verfügbar unter https://github.com/opentok/archiving-composer.
Auswahl der in ein Archiv aufzunehmenden Streams
Wenn Sie beim Starten eines Archivs die Option streamMode zu "manual", können Sie auswählen,
welche Streams in das Archiv aufgenommen werden sollen. Sie können während der Archivaufzeichnung Streams hinzufügen oder entfernen.
Außerdem können Sie festlegen, ob das Archiv den Audio- oder den Videostream (oder beides) eines Streams enthalten soll.
Andernfalls gilt bei der streamMode eingestellt auf "auto" (Standardeinstellung) werden alle Streams
(mit Audio und Video) in das Archiv aufgenommen. Siehe
Starten einer Archivaufzeichnung und
Auswahl der in ein Archiv aufzunehmenden Streams.
In einem zusammengestellten Archiv gilt jedoch eine Obergrenze von 16 Videostreams und 50 Audiostreams,
die gleichzeitig enthalten sein dürfen (sowohl im automatischen als auch im manuellen Stream-Modus), und die Streams werden auf der Grundlage von
Strompriorisierungsregeln.
Bei Archiven im manuellen Stream-Modus werden Stream-Aktualisierungen als Archivstatusänderungen.
Automatisch archivierte Sitzungen
Sie können eine Sitzung auch automatisch archivieren lassen. Dies können Sie beim Erstellen der Sitzung über die OpenTok-REST-API oder eines der OpenTok-Server-SDKs festlegen:
Die Archivierung eines automatisch archivierten Laufs beginnt, sobald sich ein Client mit dem Lauf verbindet.
Die REST-API-Methode zum eine Sitzung erstellen bietet eine Option zur Festlegung des Archivnamens und der Archivauflösung bei der Erstellung einer automatisch archivierten Sitzung.
Anmerkung: Wenn die Archivierung gestartet wird und während der Dauer der Archivierung keine Daten gestreamt werden (es werden keine Audio- oder Videodaten veröffentlicht), beträgt die Größe der Archivdatei 0 Byte.
Automatisch archivierte Sitzungen umfassen sowohl Audio als auch Video, und alle Streams werden in derselben (zusammengesetzten) MP4-Datei aufgezeichnet. Dauert die Aufzeichnung jedoch länger als 4 Stunden (14.400 Sekunden), wird die Sitzung in mehreren aufeinanderfolgenden MP4-Dateien mit einer Länge von jeweils bis zu 4 Stunden aufgezeichnet, bis die Archivierung beendet wird. Aufeinanderfolgende automatische Archivierungen einer Sitzung überlappen sich geringfügig, damit keine aufgezeichneten Daten verloren gehen.
Sie können die OpenTok-REST-Methode für Angebotsarchiv und übergeben Sie die sessionID Abfrageparameter, um die Archive für eine bestimmte Sitzungs-ID aufzulisten. Die Reihenfolge der einzelnen MP4-Dateien können Sie dann ermitteln, indem Sie die createdAt Eigenschaft jedes Archivs, das in den JSON-Daten aufgeführt ist, die durch den Aufruf der REST-Methode zurückgegeben werden.
Sie können eine automatische Archivierung nicht über die OpenTok-REST-API oder die Server-SDKs stoppen. Die automatische Archivierung endet 60 Sekunden, nachdem sich der letzte Client von der Sitzung getrennt hat, oder 60 Minuten, nachdem der letzte Client die Übertragung eines Streams in die Sitzung eingestellt hat.
Das ist wichtig:
- Wenn Sie davon ausgehen, dass es längere Zeiträume geben wird, in denen die Archivierung unterbrochen wird, sollten Sie in Erwägung ziehen, die Archivierung mithilfe der in der OpenTok REST API oder eines der OpenTok-Server-SDKs (anstatt die Sitzung automatisch archivieren zu lassen).
- Sie sollten die Wiederverwendung von Sitzungskennungen unbedingt vermeiden, wenn Sie die automatische Archivierung verwenden. Die Wiederverwendung einer Sitzungsnummer kann dazu führen, dass die automatische Archivierung fehlschlägt, wenn eine frühere automatische Archivierung für die Sitzung zeitlich abgelaufen ist.
- Verwenden Sie keine automatischen Archive für kurzlebige Sitzungen, wie z. B. solche, die für Voranrufe oder Verbindungstests verwendet werden. Die übermäßige Nutzung der Archivressourcen wird Ihnen in Rechnung gestellt, da die automatische Archivierung 60 Sekunden, nachdem der letzte Client die Verbindung zur Sitzung getrennt hat, oder 60 Minuten, nachdem der letzte Client die Veröffentlichung eines Streams in der Sitzung beendet hat (wenn der Client nach der Veröffentlichung verbunden bleibt), beendet wird.
Anmerkung: Wenn Sie zwei aufeinanderfolgende Aufnahmen nahtlos miteinander verbinden möchten, wobei sich der Endabschnitt der ersten Datei und der Anfang der zweiten Datei teilweise überschneiden, können Sie unser Tool zur Nachbearbeitung zusammengesetzter Dateien verwenden, das im Folgenden erläutert wird.
Nachbearbeitung zusammengesetzter Archive
Die Aufzeichnungen im Videoarchiv sind archiviert Dauer von bis zu 4 Stunden und 14.400 Sekunden. Daher wird eine längere Videositzung nicht in einer einzigen Archivdatei aufgezeichnet. Um zu vermeiden, dass ein Teil der Sitzung verloren geht, verwenden Sie die Option Automatisch archivierte Sitzungen die es ermöglicht, mehrere Dateien zu erstellen, um die gesamte Sitzung abzudecken. Alternativ können Sie auch die Funktion Gleichzeitige Archive um eine zweite Aufzeichnung zu starten, bevor die vorherige Aufzeichnung beendet wird. In beiden Fällen werden diese Archive mit einer kurzen Überlappung zwischen dem Ende der einen Datei und dem Beginn der nächsten erstellt.
Wenn Sie es vorziehen, eine einzige Datei zu haben, die die gesamte Sitzung enthält, können Sie die Nachbearbeitung von zusammengestellten Archiven das aufeinanderfolgende, sich überschneidende Aufnahmen zusammenführt und versucht, den Übergang so fließend wie möglich zu gestalten. Sie können dieses Werkzeug verwenden, um eine einzige, aber längere Datei zu erstellen, die Medien aus mehreren kürzeren Archivdateien enthält. Weitere Einzelheiten finden Sie in der Anleitung für Entwickler Nachbearbeitung zusammengestellter Archive. Das Tool ist verfügbar unter https://github.com/Vonage/archive-post-processing.
Sie können dieses Tool auch mit Videoaufzeichnungen verwenden, die nicht als Vonage Video Archive erstellt wurden, sofern eine gewisse Medienüberlappung vorhanden ist und die Videoaufzeichnungen eine Reihe von Merkmalen erfüllen, wie z. B. die Verwendung der Codecs H264 und AAC LC für Video bzw. Audio.
Gleichzeitige Archive
Um mehrere Archive für dieselbe Sitzung gleichzeitig aufzuzeichnen, setzen Sie den multiArchiveTag Option
wenn Jedes Archiv starten. Sie müssen hierfür für jedes gleichzeitige Archiv einer laufenden Sitzung
eine eindeutige Zeichenfolge festlegen.
Sie können verschiedene Layouts verwenden und jeder gleichzeitigen Archivaufzeichnung verschiedene Streams zuweisen.
Unter automatisch archivierte Sitzungensetzen Sie die multiArchiveTag Option für
Ein neues simultanes Archiv anlegen die gleichzeitig
mit den automatischen Archiven aufgezeichnet wird. Automatische Archive beginnen und enden, wenn die Sitzung
von selbst startet und beendet wird (gemäß den Regeln für automatische Archive), während manuell gestartete Archive separat beendet werden.
Archivstatusänderungen
Sie können eine Callback-URL für die Benachrichtigung bei Statusänderungen eines Archivs registrieren. Der Status eines Archivs wird auf einen der folgenden Werte gesetzt:
-
"started"— Das Archiv wurde eingerichtet und wird derzeit erfasst. -
"paused"— Wenn ein Archiv angehalten wird, wird nichts aufgezeichnet. Das Archiv wird angehalten, wenn eine der folgenden Bedingungen eintritt:- Es gibt keine Clients, die Streams an die Sitzung senden. In diesem Fall gilt eine Zeitüberschreitung von 60 Minuten; danach wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
"stopped". - Alle Clients trennen die Verbindung zur Sitzung. Nach 60 Sekunden wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
"stopped".
Wenn ein Client die Veröffentlichung wieder aufnimmt, während sich das Archiv im
"paused"Zustand: Die Archivaufzeichnung wird fortgesetzt und der Status wechselt zurück zu"started". - Es gibt keine Clients, die Streams an die Sitzung senden. In diesem Fall gilt eine Zeitüberschreitung von 60 Minuten; danach wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
-
"stopped"— Das Archiv hat die Aufzeichnung beendet. -
"uploaded"— Das Archiv steht zum Download über den von Ihnen bei Ihrer Registrierung angegebenen Upload-Zielort zur Verfügung. Video API-Konto. Beachten Sie, dass bei sehr kleinen Archiven die"uploaded"Statusereignis kann auftreten, bevor die"stopped"Statusereignis. Wenn Sie Archivspeicher-Fallback Wenn diese Option aktiviert ist, speichern wir das Archiv im Falle eines Fallbacks in der OpenTok-Cloud (und der Status lautet"available"). -
"available"— Das Archiv steht in der OpenTok-Cloud zum Download bereit. -
"expired"— Das Archiv steht in der OpenTok-Cloud nicht mehr zum Herunterladen zur Verfügung. (Archive in der OpenTok-Cloud sind nur 72 Stunden ab dem Zeitpunkt ihrer Erstellung verfügbar.) -
"failed"— Die Archivaufzeichnung ist fehlgeschlagen (oder das Hochladen der Archivdatei ist fehlgeschlagen und der Fallback-Speicher in der OpenTok-Cloud ist deaktiviert). -
"streamAdded"— Dem Archiv wurde ein Stream hinzugefügt. Dies gilt für Handbetrieb nur Archive. -
"streamRemoved"— Ein Stream wurde aus dem Archiv entfernt. Dies betrifft Handbetrieb nur Archive.
Verwenden Sie Ihr Video API-Konto um eine Callback-URL anzugeben.
Sichere Rückrufe: Sie können Webhook-Callback-Anfragen mithilfe signierter Callbacks und eines Signatur-Geheimnisses sichern. Siehe Sichere Rückrufe.
Wenn sich der Status eines Archivs ändert, sendet der Server HTTP-POST-Anfragen an die von Ihnen angegebene URL. Der Content-Type der Anfrage lautet „application/json“. Die Daten der Anfrage bestehen aus einem JSON-Objekt in folgender Form:
{
"id" : "b40ef09b-3811-4726-b508-e41a0f96c68f",
"event": "archive",
"createdAt" : 1384221380000,
"duration" : 328,
"name" : "Foo",
"partnerId" : 123456,
"reason" : "",
"resolution" : "640x480",
"sessionId" : "2_MX40NzIwMzJ-flR1ZSBPY3QgMjkgMTI6MTM6MjMgUERUIDIwMTN-MC45NDQ2MzE2NH4",
"size" : 18023312,
"status" : "available",
"url" : "https://example.com/archive.mp4"
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
createdAt— Der Zeitstempel für den Zeitpunkt, zu dem die aufrufen Zeitpunkt des Archivstarts, ausgedrückt in Millisekunden seit der Unix-Epoche (1. Januar 1970, 00:00:00 UTC). Beachten Sie, dass dieser Wert auf die nächste Sekunde gerundet wird. Beachten Sie außerdem, dass dieser Wert vomcreatedAtWert in der REST-Methode zum Abrufen eines Archivs und diecreatedAtWert in der Manifest für ein einzelnes Stream-Archiv In diesen Fällen ist diecreatedAtDer Wert entspricht dem Zeitpunkt, zu dem die Aufzeichnung auf den OpenTok-Servern tatsächlich begonnen hat (nicht dem Zeitpunkt, zu dem der Aufruf zum Starten der Aufzeichnung erfolgte). Beachten Sie, dass selbst wenn ein Aufruf zum Starten einer Aufzeichnung erfolgt, die Aufzeichnung auf dem OpenTok-Server erst dann tatsächlich beginnt, wenn mindestens ein Client einen Stream in der Sitzung veröffentlicht.duration— Die Dauer des Archivs in Sekunden. Für Archive, die gerade aufgezeichnet werden (wobei die Eigenschaft „status“ auf"started"), wird dieser Wert auf 0 gesetzt.id— Die eindeutige Archiv-ID.name— Der von Ihnen angegebene Name des Archivs (dies ist optional)partnerId— Ihr OpenTok-API-Schlüssel.resolution— Die Auflösung des Archivs (entweder „640x480“, „480x640“, „1280x720“, „720x1280“, „1920x1080“ oder „1080x1920“). Diese Eigenschaft wird nur für zusammengesetzte Archive festgelegt. Sie können die Auflösung eines zusammengesetzten Archivs beim Aufruf der Archiv starten Methode der OpenTok-REST-API.reason— Eine Zeichenfolge, die den Grund für die Statusänderung beschreibt.- Für Archive mit dem Status
"stopped"oder"failed"Diese Zeichenfolge beschreibt den Grund, warum das Archiv angehalten wurde oder fehlgeschlagen ist. Bei Archiven mit dem Status"stopped"kann dieser Wert auf"maximum duration exceeded","maximum idle time exceeded","session ended", oder"user initiated". - Für Archive mit dem Status
"failed"kann dieser Wert auf"Internal server failure". - Für Archive mit dem Status
"streamRemoved"kann der Grund angegeben werden, warum der Stream aus der Sitzung (und dem Archiv) entfernt wurde:"clientDisconnected","networkDisconnected","forceDisconnected","forceUnpublished","mediaStopped".
- Für Archive mit dem Status
sessionId— Die Sitzungs-ID der archivierten OpenTok-Sitzung.size— Die Größe der Archivdatei. Bei noch nicht erstellten Archiven ist dieser Wert auf 0 gesetzt.status— Der Status des Archivs:-
"available"— Das Archiv steht auf OpenTok zum Download bereit. -
"expired"— Das Archiv steht in der OpenTok-Cloud nicht mehr zum Herunterladen zur Verfügung. (Archive in der OpenTok-Cloud sind nur 72 Stunden ab dem Zeitpunkt ihrer Erstellung verfügbar.) -
"failed"— Die Archivierung ist fehlgeschlagen. -
"paused"— Wenn ein Archiv angehalten wird, wird nichts aufgezeichnet. Das Archiv wird angehalten, wenn eine der folgenden Bedingungen eintritt:- Es gibt keine Clients, die Streams an die Sitzung senden. In diesem Fall gilt eine Zeitüberschreitung von 60 Minuten; danach wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
"stopped". - Alle Clients trennen die Verbindung zur Sitzung. Nach 60 Sekunden wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
"stopped".
Wenn ein Client die Veröffentlichung wieder aufnimmt, während sich das Archiv im
"paused"Zustand: Die Archivaufzeichnung wird fortgesetzt und der Status wechselt zurück zu"started". - Es gibt keine Clients, die Streams an die Sitzung senden. In diesem Fall gilt eine Zeitüberschreitung von 60 Minuten; danach wird die Archivierung beendet und der Archivierungsstatus ändert sich zu
-
"started"— Das Archiv wurde eingerichtet und wird derzeit erfasst. -
"stopped"— Das Archiv hat die Aufzeichnung beendet. -
"uploaded"— Das Archiv steht zum Herunterladen aus dem S3-Bucket oder dem Azure-Container zur Verfügung, den Sie in Ihrer Video API-Konto. Beachten Sie, dass bei sehr kleinen Archiven die"uploaded"Statusereignis kann auftreten, bevor die"stopped"Statusereignis.
-
streamMode— Ob alle Streams im Archiv enthalten sind ("auto") oder Sie wählen die Streams aus, die in das Archiv aufgenommen werden sollen ("manual"). Siehe Auswahl der in ein Archiv aufzunehmenden Streams.streams— Ein Array von Objekten, die den derzeit archivierten Streams entsprechen. Dies wird nur für ein Archiv gesetzt, dessen Status auf"started". Jedes Objekt im Array enthält die folgenden Eigenschaften:streams— Die Stream-ID des im Archiv enthaltenen Streams.hasAudio— Ob der Ton des Streams im Archiv enthalten ist.hasVideo— Ob das Video des Streams im Archiv enthalten ist.
url— Die Download-URL der verfügbaren Archivdatei. Diese wird nur für ein Archiv festgelegt, dessen Status auf"available"für andere Archive (einschließlich Archive mit dem Status"uploaded") wird diese Eigenschaft auf Null gesetzt. Aus Sicherheitsgründen ist die Download-URL nur bei Aufrufen der REST-API (oder des Server-SDK) für Abrufen von Archivinformationen oder Angebotsarchivoder indem Sie auf die URL zugreifen, indem Sie sich bei Ihrem Video API-Konto online (die alle eine Authentifizierung erfordern). Nach 10 Minuten läuft eine Download-URL ab und eine neue URL wird mit einer neuen Anfrage zugewiesen.timestamp— Für Handbuch Stream-Aktualisierungen, der Zeitstempel des Ereignisses, ausgedrückt in Millisekunden seit der Unix-Epoche (1. Januar 1970, 00:00:00 UTC)stream- Für Handbuch Stream-Updates, Eigenschaften:id— Die Stream-ID des Streams, der dem Archiv hinzugefügt oder daraus entfernt wurde.connection— Das Verbindungsobjekt für den Stream, das eine Eigenschaft enthält:id. Dieidist die Verbindungs-ID des Streams, der im Archiv hinzugefügt oder entfernt wurde.createdAt— Der Zeitstempel für den Start des Streams, ausgedrückt in Millisekunden seit der Unix-Epoche (1. Januar 1970, 00:00:00 UTC). Beachten Sie, dass dieser Wert auf die nächste Sekunde gerundet wird.
Sie können den Status der Archive auch unter der Video API-Konto:
- Navigieren Sie zu Ihrem Video API-Konto Seite.
- Wählen Sie aus der Projektliste auf der linken Seite des Bildschirms das Projekt aus, das die Sitzungen enthält, die Sie archivieren möchten.
- In der Archivierung Abschnitt, klicken Sie auf die Archivliste Registerkarte. Hier finden Sie Einzelheiten zu den Archiven im Projekt.
Archivsicherheit
Sie können Ihre Archive auf folgende Weise sichern:
- Archivspeicher-Fallback deaktivieren — Standardmäßig speichert Vonage eine Archivdatei auf den OpenTok-Servern, falls das Hochladen der Datei auf den von Ihnen angegebenen S3- oder Azure-Server nicht möglich war. Um diese Ausweichspeicherung (die standardmäßig aktiviert ist) zu verhindern, melden Sie sich bei Ihrem Video API-KontoWählen Sie das Projekt aus, und setzen Sie die Option zum Deaktivieren des Archivspeicher-Fallbacks.
- OpenTok-Verschlüsselung verwenden — Auf diese Weise können Sie OpenTok-Archive erstellen, bei denen die Daten niemals unverschlüsselt gespeichert werden. Von den verfügbaren Methoden zur Sicherung Ihrer OpenTok-Archive bietet diese die höchste Sicherheitsstufe. Diese Funktion ist als Add-on-Feature. Weitere Informationen finden Sie in der OpenTok-Verschlüsselung Dokumentation.
- Verwenden Sie die serverseitige Verschlüsselung von Amazon S3 - Dabei werden von Amazon S3 verwaltete Verschlüsselungsschlüssel zur Verschlüsselung verwendet. Erfahren Sie mehr über die serverseitige Verschlüsselung von Amazon S3 hier.
Beispiel-Apps
Die folgenden Beispiel-Apps veranschaulichen die Archivierung mit OpenTok:
- Archivierung mit PHP
- Archivierung mit Node.js
- Archivierung mit Java
- Archivierung mit .NET
- Archivierung mit Python
- Archivierung mit Ruby
- Beispiel für die Webarchivierung (JavaScript) mit einer PHP-Serverkomponente
- Beispiel für die Archivierung von Android-Java-Dateien mit einer PHP-Serverkomponente
- Beispiel für die Archivierung mit Android Kotlin und einer PHP-Serverkomponente
- Beispiel für die iOS-Archivierung mit PHP-Serverkomponente
Weitere Informationen
Informationen zu den Methoden im Zusammenhang mit der Archivierung finden Sie in der Dokumentation unter OpenTok REST API und in den API-Referenzen für die OpenTok-Server-SDKs. Außerdem enthält jedes der Server-SDKs eine Beispielanwendung zur Archivierung.