기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Kinesis Video Streams에 업로드 및 파서 라이브러리를 사용하여 카메라의 출력 보기가 비디오 데이터와 함께 정보를 포함하는 것을 지원하는 형식으로 비디오 데이터를 전송하고 수신합니다. 이 형식은 Matroska () MKV 사양을 기반으로 합니다.
MKV형식은
는 StreamDefinition
및 Frame
유형을 Kinesis Video Streams에 업로드 사용하여 MKV 스트림 헤더, 프레임 헤더 및 프레임 데이터를 생성합니다.
전체 MKV 사양에 대한 자세한 내용은 Matroska
다음 섹션에서는 에서 생성되는 MKV 형식 데이터의 구성 요소에 대해 설명합니다. C++
스트림 헤더 요소
StreamDefinition
(에서 정의됨StreamDefinition.h
) 에서 사용하는 MKV 헤더 요소는 다음과 같습니다.
Element | 설명 | 일반적인 값 |
---|---|---|
stream_name | Kinesis 비디오 스트림의 이름에 해당합니다. | my-stream |
retention_period | Kinesis Video Streams가 스트림 데이터를 유지하는 기간 (시간) 입니다. 데이터를 보존하지 않는 0 스트림에 대해 지정하십시오. |
24 |
tags | 사용자 데이터의 키-값 모음입니다. 이 데이터는 AWS Management Console 에 표시되며, 클라이언트 애플리케이션이 읽어 필터링하거나 스트림에 관한 정보를 얻을 수 있습니다. | |
kms_key_id | 사용자 정의 AWS KMS 키가 있는 경우 스트림의 데이터를 암호화하는 데 사용자 정의 키가 사용됩니다. 없는 경우 Kinesis에서 제공한 키 () 로 데이터가 암호화됩니다. aws/kinesis-video |
01234567-89ab-cdef-0123-456789ab |
streaming_type | 현재 유효한 유일한 스트리밍은 STREAMING_TYPE_REALTIME 입니다. |
STREAMING_TYPE_REALTIME |
content_type | 사용자 정의 콘텐츠 유형입니다. 콘솔에서 재생할 비디오 데이터 스트리밍의 경우 콘텐츠 유형이 video/h264 이어야 합니다. |
video/h264 |
max_latency | 이 값은 현재 사용되지 않으므로 0으로 설정해야 합니다. | 0 |
fragment_duration | 이는 조각 길이의 추정치로서 최적화에 사용됩니다. 실제 조각 지속 시간은 스트리밍 데이터에 의해 결정됩니다. | 2 |
timecode_scale | 프레임 타임스탬프가 사용하는 스케일을 나타냅니다. 기본값은 1밀리초입니다. 자세한 내용은 Matroska TimecodeScale |
|
key_frame_fragmentation | true 인 경우, 키프레임 수신 시 스트림이 새 클러스터를 시작합니다. |
true |
frame_timecodes | 경우 true Kinesis Video Streams는 수신된 프레임의 프레젠테이션 타임스탬프 (pts) 및 디코딩 타임스탬프 (dts) 값을 사용합니다. 경우 false Kinesis Video Streams는 프레임이 수신될 때 시스템에서 생성한 시간 값과 함께 해당 프레임을 스탬프합니다. |
true |
absolute_fragment_time | true 인 경우 클러스터 타임코드가 절대 시간(예: 생산자 시스템 시계의 값)을 사용하는 것으로 해석됩니다. false 인 경우, 클러스터 타임코드가 스트림 시작 시간에 상대적인 것으로 해석됩니다. |
true |
fragment_acks | true 인 경우 Kinesis Video Streams가 데이터를 수신할 때 승인 (ACKs) 이 전송됩니다. 또는 콜백을 사용하여 수신할 ACKs 수 있습니다. KinesisVideoStreamFragmentAck KinesisVideoStreamParseFragmentAck |
true |
restart_on_error | 스트림 오류가 발생한 후 스트림이 전송을 다시 시작해야 하는지 여부를 나타냅니다. | true |
nal_adaptation_flags | 콘텐츠에 NAL (네트워크 추상화 계층) 적응 또는 코덱 개인 데이터가 있는지 여부를 나타냅니다. 유효한 플래그에는 NAL_ADAPTATION_ANNEXB_NALS 및 NAL_ADAPTATION_ANNEXB_CPD_NALS 가 있습니다. |
NAL_ADAPTATION_ANNEXB_NALS |
frame_rate | 콘텐츠 프레임 속도의 추정치입니다. 이 값은 최적화에 사용되며, 실제 프레임 속도는 수신 데이터의 속도에 의해 결정됩니다. 0 을 지정하면 기본값 24 가 할당됩니다. |
24 |
avg_bandwidth_bps | 콘텐츠 대역폭 추정치 (Mbps). 이 값은 최적화에 사용되며, 실제 속도는 수신 데이터의 대역폭에 따라 결정됩니다. 예를 들어 FPS 25에서 실행되는 720p 해상도 비디오 스트림의 경우 평균 대역폭은 5Mbps가 될 것으로 예상할 수 있습니다. | 5 |
buffer_duration | 콘텐츠가 생산자에서 버퍼링되는 기간입니다. 네트워크 지연 시간이 짧으면 이 값을 줄일 수 있습니다. 네트워크 지연 시간이 긴 경우 이 값을 늘리면 더 작은 버퍼에 프레임을 넣는 할당이 실패하여 프레임이 전송되기 전에 삭제되는 것을 방지할 수 있습니다. | |
replay_duration | 연결이 끊긴 경우 비디오 데이터 스트림이 “되감기”되는 시간입니다. 연결 끊김으로 인한 프레임 손실이 우려되지 않는 경우 이 값은 0이 될 수 있습니다. 사용 중인 응용 프로그램에서 중복 프레임을 제거할 수 있는 경우 이 값을 높일 수 있습니다. 이 값은 버퍼 지속 시간보다 작아야 합니다. 그렇지 않으면 버퍼 지속 시간이 사용됩니다. | |
connection_staleness | 수신 데이터가 없을 경우 연결이 유지되는 기간입니다. | |
codec_id | 콘텐츠에 사용되는 코덱입니다. 자세한 내용은 Matroska 사양의 CodecID |
V_ MPEG2 |
track_name | 사용자가 정의하는 트랙 이름입니다. | my_track |
codecPrivateData | 프레임 데이터를 디코딩하는 목적으로 사용되며 인코더에 의해 제공되는 데이터(예: 프레임 픽셀의 높이 및 폭)로서, 다수의 다운스트림 소비자가 필요로 합니다. C++ 프로듀서 라이브러리의 gMkvTrackVideoBits 배열에는 프레임의 픽셀 너비와 높이가 MkvStatics.cpp 포함됩니다. |
|
codecPrivateData크기 | codecPrivateData 파라미터에 있는 데이터의 크기입니다. |
|
track_type | 스트림에 대한 트랙의 유형입니다. | MKV_ TRACK _ INFO _ TYPE _ AUDIO 또는 MKV_ TRACK _ INFO _ TYPE _ VIDEO |
segment_uuid | 사용자 정의 세그먼트 uuid(16바이트)입니다. | |
default_track_id | 트랙에 대한 고유한 0이 아닌 숫자입니다. | 1 |
스트림 트랙 데이터
StreamDefinition
(에서 정의됨StreamDefinition.h
) 에서 사용하는 MKV 트랙 요소는 다음과 같습니다.
Element | 설명 | 일반적인 값 |
---|---|---|
track_name | 사용자 정의 트랙 이름입니다. 예를 들어, 오디오 트랙의 경우 "audio"입니다. | audio |
codec_id | 트랙에 대한 코덱 ID입니다. 예: 오디오 트랙의 경우 “A_AAC”입니다. | A_ AAC |
cpd | 프레임 데이터의 디코딩에 사용되는, 인코더에서 제공하는 데이터입니다. 이 데이터에는 다수의 다운스트림 소비자가 필요로 하는 프레임 픽셀의 폭 및 높이가 포함될 수 있습니다. C++ 프로듀서 MkvStatics 라이브러리에서.cpp의 gMkvTrack VideoBits 배열에는 프레임의 픽셀 너비와 높이가 포함됩니다. | |
cpd_size | 파라미터의 데이터 크기. codecPrivateData | |
track_type | 트랙의 유형입니다. 예를 들어 오디오에는 MKV _ _ TRACK INFO TYPE _ AUDIO _의 열거형 값을 사용할 수 있습니다. | MKV_TRACK_INFO_TYPE_AUDIO |
프레임 헤더 요소
Frame
(KinesisVideoPic
패키지에 정의되어 mkvgen/Include.h
있음) 에서 사용되는 MKV 헤더 요소는 다음과 같습니다.
-
프레임 인덱스: 단순 증가 값.
-
플래그: 프레임의 유형 유효한 값은 다음과 같습니다.
-
FRAME_FLAGS_NONE
-
FRAME_FLAG_KEY_FRAME
:key_frame_fragmentation
가 스트림에 설정되어 있는 경우, 키 프레임이 새 조각을 시작합니다. -
FRAME_FLAG_DISCARDABLE_FRAME
: 디코딩이 느린 경우 이 프레임을 무시할 수 있음을 디코더에 알립니다. -
FRAME_FLAG_INVISIBLE_FRAME
: 이 블록의 지속 시간은 0입니다.
-
-
디코딩 타임스탬프: 이 프레임이 디코딩된 시점의 타임스탬프입니다. 이전 프레임이 이 프레임을 사용하여 디코딩하는 경우 이 타임스탬프가 이전 프레임보다 빠를 수 있습니다. 이 값은 조각의 시작을 기준으로 합니다.
-
프레젠테이션 타임스탬프: 이 프레임이 표시되는 시점의 타임스탬프입니다. 이 값은 조각의 시작을 기준으로 합니다.
-
지속 시간: 프레임의 재생 시간입니다.
-
크기 프레임 데이터의 바이트 단위 크기입니다.
MKV프레임 데이터
frame.frameData
에 있는 데이터는 사용되는 인코딩 스키마에 따라 프레임에 대한 미디어 데이터만 포함할 수도 있고, 더 중첩된 헤더 정보를 포함할 수도 있습니다. 에 표시되려면 데이터가 H.264