Kinesis 비디오 스트림 구조 - Amazon Kinesis Video Streams

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

Kinesis 비디오 스트림 구조

다음 구조를 사용하여 Kinesis 비디오 스트림의 인스턴스에 데이터를 제공할 수 있습니다.

StreamDefinition/StreamInfo

C++ 계층의 StreamDefinition 객체는 PIC(Platform Independent Code)의 StreamInfo 객체를 래핑하고 생성자의 몇 가지 기본값을 제공합니다.

멤버 필드

필드 데이터 유형 설명 기본값
stream_name string 선택적 스트림 이름. 스트림 이름 길이에 대한 자세한 내용은 생산자 SDK 할당량 단원을 참조하십시오. 각 스트림은 고유한 이름을 지녀야 합니다. 이름을 지정하지 않으면 임의로 이름이 생성됩니다.
retention_period duration<uint64_t, ratio<3600>> 스트림 보존 기간(초)입니다. 0을 지정하면 보관하지 않음을 나타냅니다. 3600(1시간)
tags const map<string, string>* 사용자 정보가 포함된 키/값 페어의 맵입니다. 스트림에 태그 세트가 이미 있는 경우 새 태그는 기존 태그 세트에 추가됩니다. 태그 없음
kms_key_id string 스트림을 암호화하는 데 사용할 AWS KMS 키 ID입니다. 자세한 내용은 Kinesis Video Streams의 데이터 보호 단원을 참조하십시오. 기본 KMS 키(aws/kinesisvideo.)
streaming_type STREAMING_TYPE 열거 지원되는 유일한 값은 STREAMING_TYPE_REALTIME입니다.
content_type string 스트림의 콘텐츠 형식. Kinesis Video Streams 콘솔은 video/h264 형식으로 콘텐츠를 재생할 수 있습니다. video/h264
max_latency duration<uint64_t, milli> 천분의 1초 단위의 스트림 최대 지연 시간. 버퍼 지속 시간이 이 시간을 초과하면 스트림 지연 시간 압력 콜백(지정된 경우)이 호출됩니다. 0을 지정하면 스트림 지연 시간 압력 콜백이 회신되지 않습니다. milliseconds::zero()
fragment_duration duration<uint64_t> 원하는 조각 지속 시간(초)입니다. 이 값은 key_frame_fragmentation 값과 함께 사용됩니다. 이 값이 이면 falseKinesis Video Streams는이 기간이 경과한 후 키 프레임에 조각을 생성합니다. 예를 들어 고급 오디오 코딩(AAC) 오디오 스트림에는 각 프레임이 키 프레임으로 있습니다. key_frame_fragmentation = false를 지정하면 이 시간이 만료된 후 키 프레임에서 조각화가 수행되어 2초 조각이 생성됩니다. 2
timecode_scale duration<uint64_t, milli> MKV 타임코드는 MKV 클러스터 내 프레임에 대한 타임코드의 세분성을 지정하는 밀리초 단위로 스케일링됩니다. MKV 프레임 타임코드는 항상 클러스터의 시작을 기준으로 합니다.는 서명된 16비트 값(0~32767)을 MKV 사용하여 클러스터(분할) 내의 타임코드를 나타냅니다. 프레임 타임코드를 지정된 타임코드 스케일로 표시할 수 있는지 확인합니다. 기본 타임코드 척도 값인 1ms를 지정할 경우 표시할 수 있는 최대 프레임은 32767ms ~= 32초입니다. 이 값은 Amazon Kinesis Video Streams 서비스 할당량에 지정된 최대 조각 지속 시간인 10초를 초과합니다. 1
key_frame_fragmentation bool 키 프레임에서 조각을 생성할지 여부입니다. true인 경우는 키 프레임이 있을 때마다 조각의 시작을 SDK 생성합니다. false인 경우 Kinesis Video Streams는 최소한를 기다렸다가 그 뒤에 오는 키 프레임에 새 조각을 fragment_duration 생성합니다. true
frame_timecodes bool 현재 시간 콜백을 사용하여 프레임 타임코드를 사용할지 타임스탬프를 생성할지 여부. 대부분의 인코더는 프레임과 함께 타임스탬프를 생성하지 않습니다. 따라서 false이 파라미터를 지정하면 프레임이 Kinesis Video Streams에 배치될 때 타임스탬프가 지정됩니다. true
absolute_fragment_times bool Kinesis Video Streams는를 기본 패키징 메커니즘MKV으로 사용합니다. MKV 사양은 클러스터(분할)의 시작을 기준으로 하는 프레임 타임코드에 대해 엄격합니다. 하지만 클러스터 타임코드는 스트림 시작 시간에 절대적이거나 상대적일 수 있습니다. 타임스탬프가 상대적인 경우 PutMedia 서비스 API 호출은 선택적 스트림 시작 타임스탬프를 사용하고 클러스터 타임스탬프를 조정합니다. 서비스는 항상 조각을 조각의 절대적 타임스탬프와 함께 저장합니다. true
fragment_acks bool 애플리케이션 수준 조각을 수신할지 여부ACKs(인정). true즉, SDK는를 수신ACKs하고 그에 따라 작동합니다.
restart_on_error bool 특정 오류에 따라 재시작할지 여부. true: 오류가 발생하면가 스트리밍을 다시 SDK 시작하려고 시도합니다.
recalculate_metrics bool 지표를 다시 계산할지 여부입니다. 지표를 검색하기 위한 각 호출은 지표를 다시 계산하여 최신 "실행" 값을 가져올 수 있으며, 이로 인해 약간의 CPU 영향이 발생할 수 있습니다. CPU 주기를 절약하려면 매우 낮은 전력/풋프린트 디바이스false에서이 값을 로 설정해야 할 수 있습니다. 그렇지 않으면이 값에 false를 사용하지 않는 것이 좋습니다. true
nal_adaptation_flags uint32_t

Network Abstraction Layer 단위(NALU) 적응 플래그를 지정합니다. 비트스트림이 H.264로 인코딩된 경우에서 원시로 처리하거나 패키징할 수 있습니다NALUs. 이는 Annex-B 또는 AVCC 형식입니다. 대부분의 기본 스트림 생산자 및 소비자(읽기 인코더 및 디코더)는 오류 복구와 같은 이점이 있으므로 Annex-B 형식을 사용합니다. 상위 수준 시스템은 , MPEG, HLS DASH등의 기본 AVCC 형식인 형식을 사용합니다. 콘솔 재생은 브라우저MSE(미디어 소스 확장)를 사용하여 AVCC 형식을 사용하는 스트림을 디코딩하고 재생합니다. H.264(및 M-JPEG 및 H.265의 경우)의 경우는 조정 기능을 SDK 제공합니다.

대부분의 초기 스트림은 다음 형식입니다. 이 예제에서 Ab는 Annex-B 시작 코드(001 또는 0001)입니다.

Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)

H.264의 경우 코덱 프라이빗 데이터(CPD)는 SPS (시퀀스 파라미터 세트) 및 PPS (픽처 파라미터 세트) 파라미터에 있으며 AVCC 형식에 맞게 조정할 수 있습니다. 미디어 파이프라인에서를 CPD 별도로 제공하지 않는 한 애플리케이션은 프레임CPD에서를 추출할 수 있습니다. 이렇게 하려면 첫 번째 IDR 프레임( SPS 및를 포함해야 함PPS)을 찾아 두 프레임NALUs(인Ab(Sps)Ab(Pps))을 추출한 다음의에서 설정할 수 CPD 있습니다StreamDefinition.

자세한 내용은 Network Abstraction Layer(NAL) 적응 플래그 참조 단원을 참조하십시오.

기본값은 프레임 데이터와 코덱 프라이빗 데이터의 형식에 맞게 Annex-B AVCC 형식을 조정하는 것입니다.
frame_rate uint32_t 예상 프레임 속도입니다. 이 값은 버퍼링 니즈를 계산하는 데 사용됩니다. 25
avg_bandwidth_bps uint32_t 스트림용 예상 평균 대역폭. 이 값은 버퍼링 니즈를 계산하는 데 사용됩니다. 4 * 1024 * 1024
buffer_duration duration<uint64_t> 스트림 버퍼 지속 시간(초)입니다. 는 최대 까지 프레임을 콘텐츠 스토어에 SDK 유지하며buffer_duration, 이후 창 앞으로 이동할 때 이전 프레임이 삭제됩니다. 삭제되는 프레임이 백엔드로 전송되지 않은 경우 삭제된 프레임 콜백이 호출됩니다. 현재 버퍼 지속 시간이 max_latency보다 크면 스트림 지연 시간 압력 콜백이 호출됩니다. 조각이 지속되면 버퍼ACK가 다음 조각 시작으로 잘립니다. 따라서 콘텐츠가 클라우드에 내구성 있게 지속되므로 더 이상 로컬 디바이스에 콘텐츠를 저장할 필요가 없습니다. 120
replay_duration duration<uint64_t> 재시작이 활성화된 경우 오류 발생 시 현재 리더를 뒤로 롤링하여 재생하는 초 단위의 지속 시간입니다. 롤백은 버퍼 시작 시 중지됩니다(스트리밍을 방금 시작했거나 지속된 ACK가 발생한 경우). 롤백은 조각화 시작을 나타내는 키 프레임에 랜딩하려고 합니다. '재시작을 유발하는 오류는 무중단 호스트(호스트가 여전히 활성 상태이고 내부 버퍼에 프레임 데이터가 포함되어 있음)를 나타내지 않는 경우 롤백은 마지막으로 수신된 ACK 프레임에서 중지됩니다. 그런 다음 전체 조각이 호스트 메모리에 이미 저장되어 있으므로 다음 키 프레임으로 앞으로 롤합니다. 40
connection_staleness duration<uint64_t> 가 버퍼링를 수신하지 SDK 않는 경우 스트림 지연 콜백이 호출되는 초 단위 시간입니다ACK. 프레임이 디바이스에서 전송 중이지만 백엔드가 프레임을 승인하지 않음을 나타냅니다. 이 조건은 중간 홉 또는 로드 밸런서에서 연결이 끊어졌음을 나타냅니다. 30
codec_id string MKV 트랙의 코덱 ID입니다. V_MPEG4/ISO/AVC
track_name string MKV 트랙 이름입니다. kinesis_video
codecPrivateData unsigned char* 코덱 프라이빗 데이터(CPD) 버퍼입니다. 미디어 파이프라인에 스트림이 시작CPD되기 전에에 대한 정보가 있는 경우에서 설정할 수 있습니다StreamDefinition.codecPrivateData. 비트가 복사되며, 스트림을 생성하기 위한 호출 후에 버퍼를 재사용하거나 비울 수 있습니다. 그러나 스트림이 생성될 때 데이터를 사용할 수 없는 경우 KinesisVideoStream.start(cpd) 함수의 오버로드 중 하나로 설정할 수 있습니다. null
codecPrivateData크기 uint32_t 코덱 프라이빗 데이터 버퍼 크기입니다. 0

ClientMetrics

ClientMetrics 객체는를 호출하여 채워집니다getKinesisVideoMetrics.

멤버 필드

필드 데이터 유형 설명
version UINT32 구조의 버전은 CLIENT_METRICS_CURRENT_VERSION 매크로에 정의되어 있습니다.
contentStoreSize UINT64 바이트 단위의 전체 콘텐츠 스토어 크기. DeviceInfo.StorageInfo.storageSize에서 이 값을 지정합니다.
contentStoreAvailable크기 UINT64 현재 사용 가능한 스토리지 크기는 바이트입니다.
contentStoreAllocated크기 UINT64 현재 할당된 크기입니다. 내부 기록 및 콘텐츠 저장소 구현으로 인해 할당된 크기 더하기 사용 가능한 크기는 전체 스토리지 크기보다 약간 작아야 합니다.
totalContentViews크기 UINT64 모든 스트림에 대한 모든 콘텐츠에 할당된 메모리 크기. 이는 스토리지 크기에 포함되지 않습니다. 이 메모리는 MEMALLOC 매크로를 사용하여 할당되고 덮어 쓰여 사용자 지정 할당기를 제공합니다.
totalFrameRate UINT64 모든 스트림의 관측된 총 프레임 속도.
totalTransferRate UINT64 초당 바이트 단위의 모든 스트림의 관측된 총 스트림 속도.

StreamMetrics

StreamMetrics 객체는를 호출하여 채워집니다getKinesisVideoMetrics.

멤버 필드

필드 데이터 유형 설명
version UINT32 구조의 버전은 STREAM_METRICS_CURRENT_VERSION 매크로에 정의되어 있습니다.
currentViewDuration UINT64 축척된 프레임 지속 시간. 빠른 네트워킹의 경우이 지속 시간은 0이거나 프레임 지속 시간(프레임이 전송 중일 때)입니다. 지속 시간이에 max_latency 지정된 것보다 길어지면 StreamDefinition스트림 지연 시간 콜백이 지정된 경우 호출됩니다. 지속 시간은 PIC 계층의 기본 시간 단위인 100ns 단위로 지정됩니다.
overallViewDuration UINT64 총 보기 지속 시간. 스트림이 ACKs 또는 지속성 없이 구성된 경우 프레임이 Kinesis 비디오 스트림에 배치될 때이 값이 커지고 buffer_duration의와 동일하게 됩니다StreamDefinition. ACKs이 활성화되고 지속ACK된이 수신되면 버퍼가 다음 키 프레임으로 잘립니다. 이는 ACK 타임스탬프가 전체 조각의 시작을 나타내기 때문입니다. 기간은 PIC 계층의 기본 시간 단위인 100ns 단위로 지정됩니다.
currentViewSize UINT64 바이트 단위의 현재 버퍼 크기.
overallViewSize UINT64 바이트 단위의 전체 보기 크기.
currentFrameRate UINT64 현재 스트림의 관측된 총 프레임 속도.
currentTransferRate UINT64 초당 바이트 단위의 현재 스트림의 관측된 전송 속도.