비디오 스트림에서 이미지 추출 - 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. 새를 SDK 사용하여에 추가된 태그를 기반으로 이미지 생성을 위한 S3 버킷을 생성합니다API. 스트림에 대한 이미지 생성 구성을 업데이트할 때 다음 단계에서 필요한 S3 URI를 기록해 둡니다.

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

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

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 의 섹션을 참조하세요. Amazon Kinesis Video Streams

생산자 MKV 태그

Kinesis Video Streams 생산자를 사용하여에 API 작업을 노출하여 관심 있는 특정 조각에 SDK 태그를 지정할 수 있습니다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 접두사 Put Request Limits를 참조하세요.

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