비디오 스트림에서 이미지 추출 - Amazon Kinesis Video Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

비디오 스트림에서 이미지 추출

Amazon Kinesis Video Streams를 사용하여 비디오 APIs SDKs 스트림에서 이미지를 추출하는 데 도움을 받을 수 있습니다. 이러한 이미지는 썸네일이나 향상된 스크러빙과 같은 향상된 재생 애플리케이션이나 기계 학습 파이프라인에서 사용할 수 있습니다. Kinesis Video Streams는 인제스트된 비디오의 메타데이터 태그에서 이미지를 자동으로 추출하거나 자동으로 이미지를 추출하여 API 온디맨드 방식으로 이미지를 추출합니다.

이미지에 대한 Kinesis Video Streams 관리형 지원 사용에 대한 자세한 내용은 다음을 참조하십시오.

  • 온디맨드 이미지 생성 (GetImages) - 이를 API 통해 고객은 Kinesis Video Streams에 저장된 비디오에서 단일 이미지 또는 여러 이미지를 추출할 수 있습니다.

  • 자동 이미지 생성 (Amazon S3 전송)- 업로드된 비디오의 태그를 기반으로 실시간으로 비디오 데이터에서 이미지를 자동으로 추출하고 고객이 지정한 S3 버킷으로 이미지를 전송하도록 Kinesis Video Streams를 구성합니다.

자동 이미지 생성 (Amazon S3 전송)

현재 고객은 자체 이미지 트랜스코딩 파이프라인을 실행 및 관리하여 스크러빙, 이미지 미리 보기, 이미지에 대한 ML 모델 실행 등과 같은 다양한 용도의 이미지를 생성합니다. Kinesis Video Streams는 이미지를 트랜스코딩하고 전송하는 기능을 제공합니다. Kinesis Video Streams는 태그를 기반으로 실시간으로 비디오 데이터에서 이미지를 자동으로 추출하고 고객이 지정한 S3 버킷으로 이미지를 전송합니다.

UpdateImageGenerationConfiguration

Amazon S3에 이미지를 생성할 수 있도록 Kinesis 비디오 스트림을 설정하려면:
  1. API버킷을 SDK 사용할 때 추가된 태그를 기반으로 이미지 생성을 위한 S3 버킷을 생성합니다. 스트림의 이미지 생성 구성을 업데이트할 때 다음 단계에서 필요한 URIS3를 기록해 두십시오.

  2. 다음 내용을 update-image-generation-input입력으로.json이라는 JSON 파일을 생성합니다.

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

를 사용하여 이전에 ARN 생성한 Amazon S3를 추가하고 상태를 로 변경하는 UpdateImageGenerationConfigurationAPI작업을 호출할 ENABLED 수 있습니다. AWS CLI

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

요청:

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

응답:

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

이미지 생성 구성을 업데이트한 후 이미지 생성 워크플로를 시작하는 데 최소 1분이 걸립니다. 업데이트 호출 PutMedia 후 호출하려면 1분 이상 기다리십시오.

DescribeImageGenerationConfiguration

스트림에 이미 설정된 이미지 생성 구성을 보려면 고객이 다음과 같이 DescribeImageGenerationConfiguration 요청할 수 있습니다.

요청:

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 }

응답:

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

DescribeImageGenerationConfiguration 기능에 대한 자세한 내용은 Amazon Kinesis Video Streams 개발자 안내서를 참조하십시오 DescribeImageGenerationConfiguration .

프로듀서 태그 MKV

Kinesis Video Streams SDK 프로듀서를 사용하면 에서 작업을 노출하여 관심 있는 특정 프래그먼트에 태그를 지정할 API 수 있습니다. SDK 태그의 예는 이 코드를 참조하십시오. 이를 API SDK 호출하면 는 프래그먼트 데이터와 함께 미리 정의된 MKV 태그 세트를 추가합니다. Kinesis Video Streams는 이러한 MKV 특수 태그를 인식하고 해당 스트림의 이미지 처리 구성을 기반으로 이미지 생성 워크플로를 시작합니다.

Amazon S3 이미지 생성 태그와 함께 제공된 모든 프래그먼트 메타데이터는 Amazon S3 메타데이터로 저장됩니다.

프로듀서 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

를 SDK 사용하여 프로듀서에 메타데이터 태그를 추가합니다. PutEventMetaData

PutEventMetaData함수는 이벤트와 관련된 MKV 파일을 추가합니다. PutEventMetaData두 개의 매개변수를 사용합니다. 첫 번째 매개변수는 값이 STREAM_EVENT_TYPE 열거형에서 오는 이벤트입니다. 두 번째 매개변수는 선택 사항이며 추가 메타데이터를 키-값 쌍으로 포함하는 데 사용할 수 있습니다. pStreamEventMetadata 추가할 수 있는 메타데이터의 키-값 쌍은 5개로 제한됩니다.

Limits

다음 표에는 메타데이터 태그와 관련된 제한 사항이 나열되어 있습니다. 메타데이터 태그 한도를 조정할 수 있는 경우 계정 관리자를 통해 증가를 요청할 수 있습니다.

Limit 최대값 조정 가능

이미지 접두사 길이

256

아니요

선택적 메타데이터 키 길이

128

아니요

선택적 메타데이터 값 길이

256

아니요

선택적 메타데이터의 최대 수

10

yes

S3 객체 메타데이터

기본적으로 Kinesis Video Streams는 Amazon S3 객체 메타데이터로 생성된 이미지의 프래그먼트 번호, 프로듀서 및 서버 타임스탬프를 설정합니다. MKV태그에 추가 프래그먼트 데이터가 지정된 경우 해당 태그가 Amazon S3 객체 메타데이터에도 추가됩니다. 다음 예제는 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, }

Amazon S3 객체 경로 (이미지)

다음 목록은 객체 경로의 올바른 형식을 보여주고 경로 내의 각 요소를 설명합니다.

형식:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1. ImagePrefix - 값AWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - 스트림이 생성되는 데 사용되는 계정 ID.

3. StreamName - 이미지가 생성되는 스트림의 이름.

4. ImageTimecode - 이미지가 생성되는 프래그먼트의 에포크 타임코드.

5. RandomID - 랜덤GUID.

6. file-extension - JPG 또는 요청된 이미지 형식을 PNG 기반으로 합니다.

스로틀링 방지를 위한 Amazon S3 URI 권장 사항

Amazon S3에 수천 개의 이미지를 쓰는 경우 병목 현상이 발생할 위험이 있습니다. 자세한 내용은 S3 접두사 입력 요청 제한을 참조하십시오.

Amazon S3 접두사는 초당 PUT 요청 수 3,500개로 PUT 제한되며, 시간이 지남에 따라 고유 접두사의 수가 점차 늘어납니다. 날짜와 시간을 Amazon S3 접두사로 사용하지 마십시오. 타임코딩된 데이터는 한 번에 하나의 접두사에 영향을 미치며 정기적으로 변경되므로 이전의 접두사 규모 확장은 무효화됩니다. 더 빠르고 일관된 Amazon S3 확장을 위해서는 16진수 코드와 같은 임의의 접두사를 Amazon S3 대상에 UUID 추가하는 것이 좋습니다. URI 예를 들어 16진수 코드 접두사는 자연스럽게 16개의 서로 다른 접두사 (각 고유한 16진수 문자의 접두사) 사이에서 요청을 무작위로 분할하므로 Amazon S3가 자동 크기 조정한 후 PUT 초당 56,000개의 요청을 허용하게 됩니다.