Strukturen der Produzenten SDK - Amazon Kinesis Video Streams

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Strukturen der Produzenten SDK

Dieser Abschnitt enthält Informationen zu Strukturen, die Sie verwenden können, um Daten für das Kinesis Video Streams Producer-Objekt bereitzustellen.

DeviceInfo/DefaultDeviceInfoProvider

Die DefaultDeviceInfoProviderObjekte DeviceInfound steuern das Verhalten des Kinesis Video Streams Producer-Objekts.

Felder für Mitglieder

  • Version — Ein ganzzahliger Wert, mit dem sichergestellt wird, dass die richtige Version der Struktur mit der aktuellen Version der Codebasis verwendet wird. Die aktuelle Version wird mit dem Makro DEVICE_INFO_CURRENT_VERSION angegeben.

  • name — Der für Menschen lesbare Name für das Gerät.

  • tagCount/tags — Wird derzeit nicht verwendet.

  • streamCount— Die maximale Anzahl von Streams, die das Gerät verarbeiten kann. Dadurch wird anfänglich Speicher für Zeiger auf die Streamobjekte zugewiesen, die eigentlichen Streamobjekte werden aber erst später erstellt. Standardmäßig handelt es sich um 16 Streams, dies kann jedoch in der Datei DefaultDeviceInfoProvider.cpp geändert werden.

  • storageInfo: Ein Objekt, das die Hauptspeicherkonfiguration beschreibt. Weitere Informationen finden Sie unter StorageInfo.

StorageInfo

Gibt die Konfiguration des Hauptspeichers für Kinesis Video Streams an.

Die Standardimplementierung basiert auf einem schnellen Heap mit geringer Fragmentierung, optimiert für das Streamen. Sie verwendet den Allocator MEMALLOC, der auf einer gegebenen Plattform überschrieben werden kann. Einige Plattformen sehen eine virtuelle Speicherzuweisung vor, ohne diese Zuweisung mit physischen Seiten zu hinterlegen. Erst bei Nutzung des Speichers werden den virtuellen Seiten physische Seiten hinterlegt. Dies führt zu wenig verfügbarem Speicher im Gesamtsystem, während der Speicher tatsächlich nicht ausgelastet wird.

Berechnen Sie die Standardspeichergröße mit folgender Formel. Der Parameter DefragmentationFactor muss auf 1,2 (20 Prozent) festgelegt werden.

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

Im folgenden Beispiel verfügt ein Gerät über Audio- und Videostreams. Der Audiostream besteht aus 512 Samples pro Sekunde, ein durchschnittliches Sample aus 100 Byte. Der Videostream besteht aus 25 Frames pro Sekunde, mit einem Durchschnitt von 10.000 Bytes. Jeder Stream verfügt über einen Puffer mit 3 Minuten Laufzeit.

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

Wenn das Gerät über mehr verfügbaren Speicher verfügt, empfehlen wir, dem Speicher mehr Speicher hinzuzufügen, um eine starke Fragmentierung zu vermeiden.

Stellen Sie sicher, dass die Speichergröße ausreichend ist, um die vollen Puffer für alle Streams mit hoher Kodierungskomplexität (wenn die Framegröße aufgrund von viel Bewegung größer ist) oder wenn die Bandbreite gering ist, aufzunehmen. Wenn der Producer Speicherauslastung erreicht, gibt er Speicherüberlauf-Druck-Callbacks () aus. StorageOverflowPressureFunc Wenn jedoch kein Speicher im Inhaltsspeicher verfügbar ist, wird der Frame, der in Kinesis Video Streams übertragen wird, mit einem Fehler (STATUS_STORE_OUT_OF_MEMORY = 0x5200002e) gelöscht. Weitere Informationen finden Sie unter Von der Client-Bibliothek zurückgegebene Fehler- und Statuscodes. Dies kann auch passieren, wenn die Anwendungsbestätigungen (ACKs) nicht verfügbar sind oder die ACKs persistenten Bestätigungen verzögert werden. In diesem Fall werden die Puffer bis zur Kapazität der Pufferdauer aufgefüllt, bevor die vorherigen Frames ausfallen.

Felder für Mitglieder

  • Version — Ein ganzzahliger Wert, mit dem sichergestellt wird, dass die richtige Version der Struktur mit der aktuellen Version der Codebasis verwendet wird.

  • storageType— Eine DEVICE_STORAGE_TYPE Aufzählung, die die zugrunde liegende Unterstützung und Implementierung des Speichers spezifiziert. Derzeit wird nur der Wert DEVICE_STORAGE_TYPE_IN_MEM unterstützt. DEVICE_STORAGE_TYPE_HYBRID_FILE wird in einer künftigen Implementierung unterstützt werden und angeben, dass der Speicher in den dateigestützten Inhaltsspeicher zurückfällt.

  • storageSize— Die Speichergröße in Byte, die vorab zugewiesen werden soll. Der kleinste zu reservierende Wert ist 10 MB, der größte 10 GB. (Dies wird sich in einer zukünftigen Implementierung des dateigestützten Inhaltsspeichers ändern.)

  • spillRatio— Ein ganzzahliger Wert, der den Prozentsatz des Speichers darstellt, der vom direkten Speichertyp (RAM) zugewiesen werden soll, im Gegensatz zum sekundären Überlaufspeicher (Dateispeicher). Derzeit nicht verwendet.

  • rootDirectory: Der Pfad zu dem Verzeichnis, in dem sich der dateigestützte Inhaltsspeicher befindet. Derzeit nicht verwendet.