Extrahieren Sie Bilder aus Videostreams - 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.

Extrahieren Sie Bilder aus Videostreams

Sie können Amazon Kinesis Video Streams APIs verwenden, SDKs um Ihnen beim Extrahieren von Bildern aus Ihren Videostreams zu helfen. Sie können diese Bilder für erweiterte Wiedergabeanwendungen wie Miniaturansichten oder erweitertes Scrubbing oder für die Verwendung in Pipelines für maschinelles Lernen verwenden. Kinesis Video Streams bietet eine On-Demand-Bildextraktion durch eine API oder eine automatisierte Bildextraktion aus Metadaten-Tags in einem aufgenommenen Video.

Informationen zur Verwendung der verwalteten Unterstützung von Kinesis Video Streams für Bilder finden Sie unter:

Automatisierte Bildgenerierung (Amazon S3 S3-Lieferung)

Derzeit betreiben und verwalten Kunden ihre eigene Pipeline zur Bildtranskodierung, um Bilder für verschiedene Zwecke wie Scrubbing, Bildvorschau, Ausführung von ML-Modellen auf Bildern und mehr zu erstellen. Kinesis Video Streams bietet die Möglichkeit, die Bilder zu transkodieren und bereitzustellen. Kinesis Video Streams extrahiert basierend auf einem Tag automatisch Bilder aus Videodaten in Echtzeit und liefert die Bilder an einen vom Kunden angegebenen S3-Bucket.

UpdateImageGenerationConfiguration

So richten Sie einen Kinesis-Videostream ein, um die Bildgenerierung für Amazon S3 zu ermöglichen:
  1. Erstellen Sie einen S3-Bucket für die Image-Generierung auf der Grundlage der Tags, die in SDK Using the new API hinzugefügt wurden. Beachten Sie den S3 URI, der im nächsten Schritt erforderlich ist, wenn Sie die Konfigurationen zur Image-Generierung für die Streams aktualisieren.

  2. Erstellen Sie eine JSON Datei namens update-image-generation-input.json mit dem folgenden Inhalt als Eingabe.

{ "StreamName": "TestStream", "ImageGenerationConfiguration": { "Status": "ENABLED", "DestinationConfig": { "DestinationRegion": "us-east-1", "Uri": "s3://bucket-name" }, "SamplingInterval": 200, "ImageSelectorType": "PRODUCER_TIMESTAMP", "Format": "JPEG", "FormatConfig": { "JPEGQuality": "80" }, "WidthPixels": 320, "HeightPixels": 240 } }

Mit dem können Sie den AWS CLI UpdateImageGenerationConfigurationAPIVorgang aufrufen, um das zuvor ARN erstellte Amazon S3 hinzuzufügen und den Status in zu ENABLED ändern.

aws kinesisvideo update-image-generation-configuration \ --cli-input-json file://./update-image-generation-input.json \

Anfrage:

UpdateImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/updateImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed ImageGenerationConfiguration : { // required Status: 'Enum', // ENABLED | DISABLED, ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP.. DestinationConfig: { DestinationRegion: 'String', Uri: string, }, SamplingInterval: 'Number'// Format: 'Enum', // JPEG | PNG // Optional parameters FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', // 1 - 3840 (4k). HeightPixels: 'Number' // 1 - 2160 (4k). } }

Antwort:

HTTP/1.1 200 Content-type: application/json Body: { }
Anmerkung

Nach der Aktualisierung der Konfiguration für die Imagegenerierung dauert es mindestens 1 Minute, bis der Workflow zur Image-Generierung gestartet wird. Warten Sie PutMedia nach dem Aktualisierungsaufruf mindestens 1 Minute, bevor Sie den Vorgang aufrufen.

DescribeImageGenerationConfiguration

Um Konfigurationen zur Image-Generierung anzuzeigen, die bereits für einen Stream festgelegt wurden, können Kunden wie folgt eine DescribeImageGenerationConfiguration Anfrage stellen.

Anfrage:

DescribeImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/describeImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed }

Antwort:

HTTP/1.1 200 Content-type: application/json Body: { ImageGenerationConfiguration : { Status: 'Enum', ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP DestinationConfig: { DestinationRegion: 'String' Uri: 'string', }, SamplingInterval: 'Number', Format: 'Enum', FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', HeightPixels: 'Number' } }

Weitere Informationen zu dieser DescribeImageGenerationConfiguration Funktion finden Sie DescribeImageGenerationConfiguration im Amazon Kinesis Video Streams Developer Guide.

Hersteller-Tags MKV

Sie können den Kinesis Video Streams Streams-Producer verwendenSDK, um bestimmte Fragmente von Interesse zu taggen, indem Sie einen API Vorgang in der anzeigen. SDK Ein Beispiel für ein Tag finden Sie in diesem Code. Beim Aufrufen SDK fügt der eine Reihe vordefinierter MKV Tags zusammen mit den Fragmentdaten hinzu. API Kinesis Video Streams erkennt diese speziellen MKV Tags und leitet den Bildgenerierungs-Workflow auf der Grundlage der Bildverarbeitungskonfiguration dieses Streams ein.

Alle Fragment-Metadaten, die zusammen mit den Amazon S3 S3-Bildgenerierungs-Tags bereitgestellt werden, werden als Amazon S3 S3-Metadaten gespeichert.

Syntax für MKV Producer-Tags

|+ Tags | + Tag | // MANDATORY: Predefined MKV tag to trigger image generation for the fragment | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_GENERATION | // OPTIONAL: S3 prefix which will be set as prefix for generated image. | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_PREFIX | + String: image_prefix_in_s3 // 256 bytes max m | // OPTIONAL: Key value pairs that will be persisted as S3 Image object metadata. | + Simple | + Name: CUSTOM_KEY_1 // Max 128 bytes | + String:CUSTOM_VALUE_1 // Max 256 bytes | + Simple | + Name: CUSTOM_KEY_2 // Max 128 bytes | + String: CUSTOM_VALUE_2 // Max 256 bytes

Fügen Sie im Producer Metadaten-Tags hinzu SDK mit PutEventMetaData

Die PutEventMetaData Funktion hängt eine MKV Datei an, die einem Ereignis zugeordnet ist. PutEventMetaDatabenötigt zwei Parameter. Der erste Parameter ist ein Ereignis, dessen Wert aus der STREAM_EVENT_TYPE Enumeration stammt. Der zweite Parameter, pStreamEventMetadata, ist optional und kann verwendet werden, um zusätzliche Metadaten als Schlüssel-Wert-Paare einzubeziehen. Es können maximal fünf Schlüssel-Wert-Paare von Metadaten hinzugefügt werden.

Einschränkungen

In der folgenden Tabelle sind die Einschränkungen aufgeführt, die mit den Metadaten-Tags verbunden sind. Wenn das Limit für Metadaten-Tags anpassbar ist, können Sie über Ihren Account Manager eine Erhöhung beantragen.

Limit Maximaler Wert Einstellbar

Länge des Bildpräfixes

256

Nein

Optionale Länge des Metadatenschlüssels

128

Nein

Optionale Länge des Metadatenwerts

256

Nein

Maximale Anzahl optionaler Metadaten

10

Ja

S3-Objekt-Metadaten

Standardmäßig legt Kinesis Video Streams die Fragmentnummer, den Produzenten und den Serverzeitstempel des als Amazon S3 S3-Objektmetadaten generierten Bildes fest. Wenn zusätzliche Fragmentdaten in den MKV Tags angegeben sind, werden diese Tags auch zu den Amazon S3 S3-Objektmetadaten hinzugefügt. Das folgende Beispiel zeigt die korrekte Syntax für die Amazon S3 S3-Objektmetadaten.

{ // KVS S3 object metadata x-amz-meta-aws_kinesisvideo_fragment_number : 'string', x-amz-meta-aws_kinesisvideo_producer_timestamp: 'number', x-amz-meta-aws_kinesisvideo_server_timestamp: 'number', // Optional key value pair sent as part of the MKV tags custom_key_1: custom_value_1, custom_key_2: custom_value_2, }

Amazon S3 S3-Objektpfad (Bild)

Die folgende Liste zeigt das richtige Format des Objektpfads und beschreibt jedes Element innerhalb des Pfads.

Format:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1. ImagePrefix - Wert vonAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - Konto-ID, unter der der Stream erstellt wird.

3. StreamName - Name des Streams, für den das Bild generiert wird.

4. ImageTimecode - Epochen-Timecode in dem Fragment, in dem das Bild generiert wird.

5. RandomID - ZufälligGUID.

6. file-extension- JPG oder PNG basierend auf dem angeforderten Bildformat.

Amazon S3 URI S3-Empfehlungen zum Schutz vor Drosselung

Wenn Sie Tausende von Bildern auf Amazon S3 schreiben, besteht die Gefahr einer Drosselung. Weitere Informationen finden Sie unter Grenzwerte für S3-Präfix-Put-Anfragen.

Ein Amazon S3 S3-Präfix beginnt mit einem PUT Limit von 3.500 PUT Anfragen pro Sekunde und wird im Laufe der Zeit für eindeutige Präfixe schrittweise erhöht. Vermeiden Sie die Verwendung von Datum und Uhrzeit als Amazon S3 S3-Präfixe. Zeitkodierte Daten wirken sich jeweils auf ein Präfix aus und ändern sich zudem regelmäßig, wodurch frühere Präfix-Skalierungen ungültig werden. Um eine schnellere, konsistente Amazon S3 S3-Skalierung zu ermöglichen, empfehlen wir, dem Amazon S3 S3-Ziel ein zufälliges Präfix wie einen Hex-Code hinzuzufügenURI. UUID Hex-Code-Präfixe teilen Ihre Anfragen beispielsweise nach dem Zufallsprinzip auf 16 verschiedene Präfixe auf (ein Präfix für jedes eindeutige Hex-Zeichen), was 56.000 PUT Anfragen pro Sekunde ermöglicht, nachdem Amazon S3 automatisch skaliert hat.