기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 값과 함께 사용됩니다. 이 값이 이면 false Kinesis 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 제공합니다. 대부분의 초기 스트림은 다음 형식입니다. 이 예제에서
H.264의 경우 코덱 프라이빗 데이터(CPD)는 SPS (시퀀스 파라미터 세트) 및 PPS (픽처 파라미터 세트) 파라미터에 있으며 AVCC 형식에 맞게 조정할 수 있습니다. 미디어 파이프라인에서를 CPD 별도로 제공하지 않는 한 애플리케이션은 프레임CPD에서를 추출할 수 있습니다. 이렇게 하려면 첫 번째 IDR 프레임( SPS 및를 포함해야 함PPS)을 찾아 두 프레임NALUs(인 자세한 내용은 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 |
초당 바이트 단위의 현재 스트림의 관측된 전송 속도. |