Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Sie können die folgenden Strukturen verwenden, um Daten für eine Instanz eines Kinesis-Videostreams bereitzustellen.
StreamDefinition/StreamInfo
Das Objekt StreamDefinition
auf C++-Ebene kapselt das Objekt StreamInfo
im plattformunabhängigen Code und stellt im Konstruktor einige Standardwerte bereit.
Felder für Mitglieder
Feld | Datentyp | Beschreibung | Standardwert |
---|---|---|---|
stream_name | string |
Ein optionaler Streamname. Weitere Informationen zur Länge des Streamnamens finden Sie unter SDKKontingente für Produzenten. Jeder Stream sollte einen eindeutigen Namen haben. | Wenn kein Name angegeben wird, wird ein zufälliger Name generiert. |
retention_period | duration<uint64_t,
ratio<3600>> |
Der Aufbewahrungszeitraum für den Stream in Sekunden. 0 bedeutet keine Aufbewahrung. |
3600 (eine Stunde) |
Tags | const map<string, string>*
|
Eine Map mit Schlüssel-Wert-Paaren, die Benutzerdaten enthalten. Wenn der Stream bereits einen Satz Tags aufweist, werden die neuen Tags an die die vorhandenen Tags angehängt. | Keine Tags |
kms_key_id | string |
Die AWS KMS Schlüssel-ID, die für die Verschlüsselung des Streams verwendet werden soll. Weitere Informationen finden Sie unter Datenschutz in Kinesis Video Streams. | Der KMS Standardschlüssel (aws/kinesis-video .) |
streaming_type | STREAMING_TYPE -Aufzählung |
Der einzige unterstützte Wert ist STREAMING_TYPE_REALTIME . |
|
content_type | string |
Inhaltsformat des Streams. Die Kinesis Video Streams Streams-Konsole kann Inhalte in diesem video/h264 Format wiedergeben. |
video/h264 |
max_latency | duration<uint64_t, milli> |
Die maximale Latenz für den Stream in Millisekunden. Der Callback für Stream-Latenzdruck (sofern angegeben) wird aufgerufen, wenn die Pufferlaufzeit diesen Zeitraum übersteigt. Mit der Angabe 0 wird festgelegt, dass der Callback für Stream-Latenzdruck aufgerufen wird. |
milliseconds::zero() |
fragment_duration | duration<uint64_t> |
Die gewünschte Fragmentdauer in Sekunden. Dieser Wert wird in Kombination mit dem key_frame_fragmentation -Wert verwendet. Wenn dieser Wert lautetfalse , generiert Kinesis Video Streams nach Ablauf dieser Dauer Fragmente auf einem Schlüsselbild. Bei einem Audiostream mit erweiterter Audiocodierung (AAC) ist beispielsweise jeder Frame ein Schlüsselbild. Mit key_frame_fragmentation = false kommt es nach Ablauf dieser Dauer zur Fragmentierung eines Keyframes mit dem Ergebnis zweisekündiger Fragmente. |
2 |
timecode_scale | duration<uint64_t, milli> |
Die MKV Timecode-Skala in Millisekunden, die die Granularität der Timecodes für die Frames innerhalb des Clusters angibt. MKV Der MKV Frame-Timecode bezieht sich immer auf den Start des Clusters. MKVverwendet einen 16-Bit-Wert mit Vorzeichen (0-32767), um den Timecode innerhalb des Clusters (Fragment) darzustellen. Stellen Sie sicher, dass der Frame-Timecode mit der angegebenen Timecode-Skala dargestellt werden kann. Mit dem Standard-Timecode-Skalawert von 1 ms wird sichergestellt, dass der größte darstellbare Frame 32 767 ms ~= 32 Sekunden lang ist. Dieser Wert liegt über der maximalen Fragmentdauer von 10 Sekunden, die in Kontingente für den Amazon Kinesis Video Streams Streams-Service angegeben ist. | 1 |
key_frame_fragmentation | bool |
Gibt an, ob Fragmente für einen Keyframe erstellt werden. Wenntrue , SDK erzeugt das jedes Mal einen Start des Fragments, wenn ein Schlüsselbild vorhanden ist. Wennfalse , wartet Kinesis Video Streams mindestens darauf fragment_duration und erzeugt ein neues Fragment auf dem darauffolgenden Schlüsselbild. |
true |
frame_timecodes | bool |
Verwendung von Frame-Timecodes oder Generieren von Zeitstempeln mit dem aktuellen Zeit-Callback: Viele Encoder erzeugen keine Zeitstempel mit den Frames. Wenn Sie also diesen Parameter angebenfalse , wird sichergestellt, dass die Frames beim Einfügen in Kinesis Video Streams mit einem Zeitstempel versehen werden. |
true |
absolute_fragment_times | bool |
Kinesis Video Streams verwendet MKV als zugrunde liegenden Verpackungsmechanismus. Die MKV Spezifikation legt strikt fest, dass sich Frame-Timecodes auf den Anfang des Clusters (Fragment) beziehen. Die Cluster-Timecodes können jedoch entweder absolut oder relativ zum Startzeitpunkt des Streams sein. Wenn die Zeitstempel relativ sind, verwendet der PutMedia API Serviceaufruf den optionalen Stream-Startzeitstempel und passt die Cluster-Zeitstempel an. Der Service speichert die Fragmente immer mit den absoluten Zeitstempeln. |
true |
fragment_acks | bool |
Ob Fragmente auf Anwendungsebene ACKs (Bestätigungen) empfangen werden sollen. | true , was bedeutet, dass SDK sie das erhalten ACKs und entsprechend handeln werden. |
restart_on_error | bool |
Wird bei bestimmten Fehlern neu gestartet? | true , was bedeutet, dass SDK versucht wird, das Streaming neu zu starten, falls Fehler auftreten. |
recalculate_metrics | bool |
Gibt an, ob die Metriken neu berechnet werden. Bei jedem Aufruf zum Abrufen der Metriken können diese neu berechnet werden, um den aktuellen „laufenden“ Wert zu erhalten, was geringfügige Auswirkungen haben kann. CPU Möglicherweise müssen Sie dies false auf Geräten mit extrem geringem Stromverbrauch und geringem Platzbedarf aktivieren, um die Zyklen zu schonen. CPU Andernfalls raten wir davon ab, diesen Wert false zu verwenden. |
true |
nal_adaptation_flags | uint32_t |
Gibt die Anpassungsflags der Network Abstraction Layer Unit (NALU) an. Wenn der Bitstream H.264-kodiert ist, kann er anschließend als Rohdatei oder als Paket verarbeitet werden. NALUs Diese sind entweder im Anhang-B- oder im Format. AVCC Die meisten elementaren Stream-Produzenten und -Verbraucher (Lese-Encoder und -Decoder) verwenden das Annex-B-Format, weil es Vorteile bietet, wie z. B. die Fehlerbehebung. Systeme auf höherer Ebene verwenden das AVCC Format, das das Standardformat fürMPEG,, HLS usw. ist. DASH Bei der Konsolenwiedergabe werden die Browser MSE (Medienquellen-Erweiterungen) verwendet, um den Stream, der das Format verwendet, zu dekodieren und abzuspielen. AVCC Für H.264 (und für M- JPEG und H.265) SDK bietet das Anpassungsmöglichkeiten. Viele einfache Streams liegen in folgendem Format vor. In diesem Beispiel ist
Im Fall von H.264 befinden sich die privaten Daten des Codecs (CPD) in den Parametern SPS (Sequenzparametersatz) und PPS (Bildparametersatz) und können an das Format angepasst werden. AVCC Sofern die Medienpipeline die Daten nicht CPD separat angibt, kann die Anwendung sie CPD aus dem Frame extrahieren. Dazu sucht sie nach dem ersten IDR Frame (der das SPS und enthalten solltePPS), extrahiert die beiden NALUs (die sind Weitere Informationen finden Sie unter Referenz zum Anpassungsflag für Network Abstraction Layer (NAL). |
Standardmäßig wird das Format von Anhang B an das Format sowohl für die Frame-Daten als auch für die privaten Codec-Daten angepasst. AVCC |
frame_rate | uint32_t |
Die erwartete Bildrate. Dieser Wert wird verwendet, um den Pufferbedarf exakter zu berechnen. | 25 |
avg_bandwidth_bps | uint32_t |
Die erwartete durchschnittliche Bandbreite für den Stream. Dieser Wert wird verwendet, um den Pufferbedarf exakter zu berechnen. | 4 * 1 024 * 1 024 |
buffer_duration | duration<uint64_t> |
Laufzeit des Streampuffers in Sekunden. SDKDadurch werden die Frames bis zu einem Tag im Inhaltsspeicher aufbewahrt. Danach werden die vorherigen Frames gelöschtbuffer_duration , wenn sich das Fenster vorwärts bewegt. Wenn der Frame, der gelöscht wird, nicht an das Backend gesendet wurde, wird der Drop-Frame-Callback aufgerufen. Wenn die aktuelle Pufferlaufzeit größer als max_latency ist, wird der Callback für Stream-Latenzdruck aufgerufen. Der Puffer wird auf den nächsten Fragmentstart gekürzt, wenn das persistente Fragment empfangen wird. ACK Dies gibt an, dass der Inhalt dauerhaft persistent in der Cloud liegt und nicht mehr auf dem lokalen Gerät gespeichert werden muss. |
120 |
replay_duration | duration<uint64_t> |
Die Dauer in Sekunden, für die das aktuelle Lesegerät bei einem Fehler zur Wiedergabe zurückgesetzt wird, wenn der Neustart aktiviert ist. Das Rollback stoppt beim Start des Puffers (falls gerade mit dem Streaming begonnen wurde oder der persistente ACK Teil hinzugekommen ist). Das Rollback versucht, auf einem Keyframe zu landen, der einen Fragmentstart bezeichnet. Wenn der Fehler, der den Neustart verursacht hat, nicht auf einen toten Host hinweist (der Host ist noch am Leben und enthält die Frame-Daten in seinen internen Puffern), wird das Rollback beim letzten empfangenen Frame beendet. ACK Dann wird zum nächsten Keyframe vor gesprungen, da das gesamte Fragment bereits im Arbeitsspeicher des Host gespeichert ist. | 40 |
connection_staleness | duration<uint64_t> |
Die Zeit in Sekunden, nach der der Stream Staleness Callback aufgerufen wird, wenn der die Pufferung SDK nicht empfängt. ACK Es zeigt an, dass die Frames vom Gerät gesendet werden, das Backend sie jedoch nicht bestätigt. Dies weist auf eine getrennte Verbindung am Zwischenpunkt oder Load Balancer hin. | 30 |
codec_id | string |
Die Codec-ID für den Track. MKV | V_MPEG4/ISO/AVC |
track_name | string |
Der Name des MKV Titels. | kinesis_video |
codecPrivateData | unsigned char* |
Der Codec-Puffer für private Daten (CPD). Wenn die Medienpipeline Informationen über die CPD vor dem Start des Streams hat, können sie eingegeben werden. StreamDefinition.codecPrivateData Die Bits werden kopiert und der Puffer kann nach dem Aufruf zum Erstellen des Streams wiederverwendet oder freigegeben werden. Wenn die Daten jedoch nicht verfügbar sind, wenn der Stream erstellt wird, können sie in einer der Überladungen der KinesisVideoStream.start(cpd) Funktion festgelegt werden. |
null |
codecPrivateDataGröße | uint32_t |
Die CPD-Puffergröße | 0 |
ClientMetrics
Das ClientMetricsObjekt wird durch Aufrufen getKinesisVideoMetrics
gefüllt.
Felder für Mitglieder
Feld | Datentyp | Beschreibung |
---|---|---|
Version | UINT32 |
Die Version der Struktur, definiert im Makro CLIENT_METRICS_CURRENT_VERSION . |
contentStoreSize | UINT64 |
Die Inhaltsspeicher-Gesamtgröße in Byte. Dies ist der in DeviceInfo.StorageInfo.storageSize angegebene Wert. |
contentStoreAvailableGröße | UINT64 |
Aktuell verfügbare Speichergröße in Byte. |
contentStoreAllocatedGröße | UINT64 |
Aktuell zugewiesene Größe. Die zugewiesene plus die verfügbaren Größen sollten etwas kleiner als die Speichergesamtgröße sein, da für die interne Speicherverwaltung und die Implementierung des Inhaltsspeichers ebenfalls Speicher benötigt wird. |
totalContentViewsGröße | UINT64 |
Die Größe des für alle Inhaltsansichten für alle Streams zugewiesenen Speichers. Dies wird nicht auf die Speichergröße angerechnet. Dieser Speicher wird mit dem Makro MEMALLOC zugeordnet, das überschrieben werden kann, um einen benutzerdefinierten Allocator bereitzustellen. |
totalFrameRate | UINT64 |
Die insgesamt über alle Streams beobachtete Bildrate. |
totalTransferRate | UINT64 |
Die insgesamt über alle Streams beobachtete Streamrate in Byte pro Sekunde. |
StreamMetrics
Das StreamMetricsObjekt wird durch Aufrufen gefülltgetKinesisVideoMetrics
.
Felder für Mitglieder
Feld | Datentyp | Beschreibung |
---|---|---|
Version | UINT32 |
Die Version der Struktur, definiert im Makro STREAM_METRICS_CURRENT_VERSION . |
currentViewDuration | UINT64 |
Die Dauer der akkumulierten Frames. Im Fall eines schnellen Netzwerks ist diese Dauer entweder Null oder die Framedauer (während der Frame übertragen wird). Wenn die Dauer länger als die in der max_latency angegebene Dauer wirdStreamDefinition , wird der Stream-Latenz-Callback aufgerufen, sofern er angegeben ist. Die Dauer wird in Einheiten von 100 ns angegeben. Dies ist die Standardzeiteinheit für die PIC Ebene. |
overallViewDuration | UINT64 |
Die Gesamtanzeigedauer. Wenn der Stream ohne ACKs oder Persistenz konfiguriert ist, nimmt dieser Wert zu, wenn die Frames in den Kinesis-Videostream eingefügt werden, und entspricht dem buffer_duration in der. StreamDefinition Wenn ACKs diese Option aktiviert ist und die persistente Datei empfangen ACK wird, wird der Puffer auf das nächste Schlüsselbild gekürzt. Das liegt daran, dass der ACK Zeitstempel den Anfang des gesamten Fragments angibt. Die Dauer wird in Einheiten von 100 ns angegeben. Dies ist die Standardzeiteinheit für die PIC Ebene. |
currentViewSize | UINT64 |
Die Größe des aktuellen Puffers in Byte. |
overallViewSize | UINT64 |
Die Gesamtanzeigegröße in Byte. |
currentFrameRate | UINT64 |
Die beobachtete Bildrate für den aktuellen Stream. |
currentTransferRate | UINT64 |
Die beobachtete Übertragungsrate in Byte pro Sekunde für den aktuellen Stream. |