Ekstrak gambar dari aliran video - Amazon Kinesis Video Streams

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Ekstrak gambar dari aliran video

Anda dapat menggunakan Amazon Kinesis APIs Video SDKs Streams dan untuk membantu Anda mengekstrak gambar dari aliran video Anda. Anda dapat menggunakan gambar-gambar ini untuk aplikasi pemutaran yang disempurnakan seperti thumbnail atau scrubbing yang disempurnakan, atau untuk digunakan dalam pipeline pembelajaran mesin. Kinesis Video Streams menawarkan ekstraksi gambar sesuai permintaan API melalui, atau ekstraksi gambar otomatis dari tag metadata dalam video yang dicerna.

Untuk informasi tentang penggunaan dukungan terkelola Kinesis Video Streams untuk gambar, lihat:

  • On-Demand Image Generation (GetImages) - Ini API memungkinkan pelanggan untuk mengekstrak satu gambar atau beberapa gambar dari video yang disimpan di Kinesis Video Streams.

  • Pembuatan gambar otomatis (pengiriman Amazon S3)- Konfigurasikan Kinesis Video Streams untuk secara otomatis mengekstrak gambar dari data video secara real time berdasarkan tag dalam video yang diunggah, dan mengirimkan gambar ke bucket S3 yang ditentukan pelanggan.

Pembuatan gambar otomatis (pengiriman Amazon S3)

Saat ini, pelanggan menjalankan dan mengelola pipeline transcoding gambar mereka sendiri untuk membuat gambar untuk berbagai tujuan seperti menggosok, pratinjau gambar, menjalankan model ML pada gambar, dan banyak lagi. Kinesis Video Streams menawarkan kemampuan untuk mentranskode dan mengirimkan gambar. Kinesis Video Streams akan secara otomatis mengekstrak gambar dari data video secara real-time berdasarkan tag, dan mengirimkan gambar ke bucket S3 yang ditentukan pelanggan.

UpdateImageGenerationConfiguration

Untuk menyiapkan aliran video Kinesis untuk mengaktifkan pembuatan gambar ke Amazon S3:
  1. Buat Bucket S3 untuk pembuatan gambar berdasarkan tag yang ditambahkan dalam SDK menggunakan yang baruAPI. Perhatikan S3 URI, yang diperlukan pada langkah berikutnya, saat memperbarui konfigurasi pembuatan gambar untuk aliran.

  2. Buat JSON file bernama update-image-generation-input.json dengan konten berikut sebagai input.

{ "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 } }

Anda dapat menggunakan AWS CLI untuk menjalankan UpdateImageGenerationConfigurationAPIoperasi untuk menambahkan Amazon ARN S3 yang dibuat sebelumnya dan mengubah statusnya menjadi. ENABLED

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

Permintaan:

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). } }

Tanggapan:

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

Dibutuhkan setidaknya 1 menit untuk memulai alur kerja pembuatan gambar setelah memperbarui konfigurasi pembuatan gambar. Tunggu setidaknya 1 menit sebelum memanggil PutMedia setelah panggilan pembaruan.

DescribeImageGenerationConfiguration

Untuk melihat konfigurasi pembuatan gambar yang sudah diatur untuk streaming, pelanggan dapat membuat DescribeImageGenerationConfiguration permintaan, sebagai berikut.

Permintaan:

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 }

Tanggapan:

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' } }

Untuk mempelajari lebih lanjut tentang DescribeImageGenerationConfiguration fitur ini, lihat DescribeImageGenerationConfiguration di Panduan Pengembang Amazon Kinesis Video Streams.

MKVTag produser

Anda dapat menggunakan produser Kinesis Video SDK Streams untuk menandai fragmen tertentu yang menarik dengan API mengekspos operasi di file. SDK Untuk contoh tag, lihat kode ini. Setelah memanggil iniAPI, SDK akan menambahkan satu set MKV tag yang telah ditentukan bersama dengan data fragmen. Kinesis Video Streams akan mengenali tag khusus MKV ini dan memulai alur kerja pembuatan gambar berdasarkan konfigurasi pemrosesan gambar dari aliran tersebut.

Setiap metadata fragmen yang disediakan bersama dengan tag pembuatan gambar Amazon S3 akan disimpan sebagai metadata Amazon S3.

Sintaks untuk tag produser MKV

|+ 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

Tambahkan tag metadata di produsen menggunakan SDK PutEventMetaData

PutEventMetaDataFungsi ini menambahkan MKV file yang terkait dengan suatu peristiwa. PutEventMetaDatamengambil dua parameter. Parameter pertama adalah peristiwa yang nilainya berasal dari STREAM_EVENT_TYPE enum. Parameter kedua, pStreamEventMetadata, adalah opsional dan dapat digunakan untuk menyertakan metadata tambahan sebagai pasangan nilai kunci. Ada batas lima pasangan nilai kunci metadata yang dapat ditambahkan.

Batas

Tabel berikut mencantumkan batasan yang terkait dengan tag metadata. Jika batas tag metadata dapat disesuaikan, Anda dapat meminta peningkatan melalui manajer akun Anda.

Kuota Nilai maks Dapat Disesuaikan

Panjang awalan gambar

256

tidak

Panjang tombol metadata opsional

128

tidak

Panjang nilai metadata opsional

256

tidak

Jumlah maksimum metadata opsional

10

Ya

Metadata objek S3

Secara default, Kinesis Video Streams akan mengatur nomor fragmen, produser, dan stempel waktu server dari gambar yang dihasilkan sebagai metadata objek Amazon S3. Jika ada data fragmen tambahan yang ditentukan dalam MKV tag, tag tersebut juga akan ditambahkan ke metadata objek Amazon S3. Contoh berikut menunjukkan sintaks yang benar untuk metadata objek Amazon S3.

{ // 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, }

Jalur objek Amazon S3 (gambar)

Daftar berikut menunjukkan format yang benar dari jalur objek dan menjelaskan setiap elemen dalam jalur.

Format:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1. ImagePrefix - NilaiAWS_KINESISVIDEO_IMAGE_PREFIX.

2. AccountID - ID Akun tempat aliran dibuat.

3. StreamName - Nama aliran tempat gambar dihasilkan.

4. ImageTimecode - Kode waktu Epoch dalam fragmen tempat gambar dihasilkan.

5. RandomID - AcakGUID.

6. file-extension - JPG atau PNG berdasarkan format gambar yang diminta.

URIRekomendasi Amazon S3 untuk melindungi dari pelambatan

Jika Anda menulis ribuan gambar ke Amazon S3, ada risiko pelambatan. Untuk informasi selengkapnya, lihat Awalan S3 Menempatkan Batas Permintaan.

Awalan Amazon S3 dimulai dengan PUT batas 3.500 PUT permintaan per detik, dan secara bertahap akan meningkat seiring waktu untuk awalan unik. Hindari menggunakan tanggal dan waktu sebagai awalan Amazon S3. Data kode waktu akan berdampak pada satu awalan pada satu waktu, dan juga akan berubah secara teratur, membatalkan peningkatan skala awalan sebelumnya. Untuk mengaktifkan penskalaan Amazon S3 yang lebih cepat dan konsisten, sebaiknya tambahkan awalan acak, seperti kode hex atau ke Tujuan UUID Amazon S3. URI Misalnya, awalan kode hex secara alami akan membagi permintaan Anda secara acak di antara 16 awalan yang berbeda (awalan untuk setiap karakter hex unik), yang akan memungkinkan 56.000 permintaan PUT per detik setelah Amazon S3 diskalakan secara otomatis.