프로듀서 콜백 SDK - Amazon Kinesis Video Streams

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

프로듀서 콜백 SDK

Amazon Kinesis Video Streams SDK Producer의 클래스와 메서드는 자체 프로세스를 유지 관리하지 않습니다. 그 대신, 수신 함수 호출 및 이벤트를 사용하여 애플리케이션과 통신할 콜백을 예약합니다.

애플리케이션이 다음과 상호 작용하는 데 사용할 수 있는 두 가지 콜백 패턴이 있습니다. SDK

  • CallbackProvider— 이 객체는 플랫폼 독립적 code () PIC 구성 요소의 모든 콜백을 애플리케이션에 노출합니다. 이 패턴을 사용하면 모든 기능을 사용할 수 있지만 구현시 C++ 계층의 모든 공개 API 메서드와 서명을 처리해야 한다는 의미이기도 합니다.

  • StreamCallbackProviderClientCallbackProvider — 이러한 객체는 스트림별 콜백과 클라이언트별 콜백을 노출하고 의 C++ 계층은 나머지 콜백을 노출합니다. SDK 이는 프로듀서와 상호작용할 때 선호되는 콜백 패턴입니다. SDK

다음 다이어그램은 콜백 객체의 객체 모델을 보여줍니다.

Kinesis Video Streams에서 생산자와 소비자의 상호 작용을 보여주는 다이어그램.

위 다이어그램에서는 에서 DefaultCallbackProvider 파생되며 CallbackProvider (의 모든 콜백이 표시됨) 및 를 포함합니다. PIC StreamCallbackProvider ClientCallbackProvider

ClientCallbackProvider

ClientCallbackProvider 객체는 클라이언트 수준 콜백 함수를 공개합니다. 이 함수의 세부 정보는 ClientCallbacks 구조 단원에서 설명합니다.

콜백 메서드:

  • getClientReadyCallback— 클라이언트의 준비 상태를 보고합니다.

  • getStorageOverflowPressureCallback— 스토리지 오버플로 또는 압력을 보고합니다. 스토리지 활용도가 전체 스토리지 크기의 5%인 STORAGE_PRESSURE_NOTIFICATION_THRESHOLD 값 밑으로 떨어지면 이 콜백이 호출됩니다. 자세한 내용은 StorageInfo 단원을 참조하십시오.

StreamCallbackProvider

StreamCallbackProvider 객체는 스트림 수준 콜백 함수를 공개합니다.

콜백 메서드:

  • getDroppedFragmentReportCallback: 드롭된 조각을 보고합니다.

  • getDroppedFrameReportCallback— 프레임 드롭을 보고합니다.

  • getFragmentAckReceivedCallback— 스트림에 대해 ACK 프래그먼트가 수신되었음을 보고합니다.

  • getStreamClosedCallback— 스트림이 종료된 상태를 보고합니다.

  • getStreamConnectionStaleCallback— 부실 연결 상태를 보고합니다. 이 상태에서는 생산자가 서비스에 데이터를 보내고 있지만 승인을 받지 못합니다.

  • getStreamDataAvailableCallback— 스트림에서 데이터를 사용할 수 있다고 보고합니다.

  • getStreamErrorReportCallback— 스트림 오류 상태를 보고합니다.

  • getStreamLatencyPressureCallback— 누적 버퍼 크기가 max_latency 값보다 큰 경우인 스트림 지연 시간을 보고합니다. 자세한 내용은 StreamDefinition/StreamInfo 단원을 참조하십시오.

  • getStreamReadyCallback: —스트림 준비 상태를 보고합니다.

  • getStreamUnderflowReportCallback— 스트림 언더플로우 상태를 보고합니다. 이 함수는 현재 사용되지 않으며 나중에 사용할 수 있도록 예약되어 있습니다.

의 소스 코드는 StreamCallbackProvider StreamCallbackProvider.h를 참조하십시오.

ClientCallbacks 구조

ClientCallbacks 구조체에는 특정 이벤트가 발생할 때 PIC 호출하는 콜백 함수 진입점이 포함됩니다. 구조에는 CALLBACKS_CURRENT_VERSION 필드에 있는 버전 정보, 및 개별 콜백 함수를 통해 반환되는 사용자 정의 데이터에 대한 customData 필드도 포함됩니다.

다음 코드 예와 같이, 클라이언트 애플리케이션은 this 포인터를 custom_data 필드에 사용하여 멤버 함수를 정적 ClientCallback 함수에 실행 시간에 매핑합니다.

STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped."); TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data); streamCallbackProvider->streamClosedHandler(...);
이벤트
함수 설명 형식
CreateDeviceFunc 백엔드에서 현재 구현되지 않습니다. Java 또는 C++에서 호출되면 이 호출이 실패합니다. 다른 클라이언트는 플랫폼별 초기화를 수행합니다. 백엔드 API
CreateStreamFunc 스트림이 생성될 때 호출됩니다. 백엔드 API
DescribeStreamFunc DescribeStream이 호출될 때 호출됩니다. 백엔드 API
GetStreamingEndpointFunc GetStreamingEndpoint이 호출될 때 호출됩니다. 백엔드 API
GetStreamingTokenFunc GetStreamingToken이 호출될 때 호출됩니다. 백엔드 API
PutStreamFunc PutStream이 호출될 때 호출됩니다. 백엔드 API
TagResourceFunc TagResource이 호출될 때 호출됩니다. 백엔드 API
     
CreateMutexFunc 동기화 뮤텍스를 생성합니다. 동기화
FreeMutexFunc 뮤텍스를 비웁니다. 동기화
LockMutexFunc 동기화 뮤텍스를 잠급니다. 동기화
TryLockMutexFunc 뮤텍스를 잠그려고 시도합니다. 현재 구현되지 않습니다. 동기화
UnlockMutexFunc 뮤텍스 잠금을 해제합니다. 동기화
     
ClientReadyFunc 클라이언트가 준비 상태에 들어갈 때 호출됩니다. Notification
DroppedFrameReportFunc 프레임이 드롭될 때 보고합니다. Notification
DroppedFragmentReportFunc 조각이 드롭될 때 보고합니다. 이 함수는 현재 사용되지 않으며 나중에 사용할 수 있도록 예약되어 있습니다. Notification
FragmentAckReceivedFunc 프래그먼트 ACK (버퍼링, 수신, 지속, 오류) 가 수신될 때 호출됩니다. Notification
StorageOverflowPressureFunc 스토리지 활용도가 전체 스토리지 크기의 5%로 정의되는 STORAGE_PRESSURE_NOTIFICATION_THRESHOLD 값 밑으로 떨어지면 호출됩니다. Notification
StreamClosedFunc 나머지 프레임의 마지막 비트가 스트리밍될 때 호출됩니다. Notification
StreamConnectionStaleFunc 스트림이 기한 경과 연결 상태에 들어갈 때 호출됩니다. 이 조건에서 생산자는 서비스에 데이터를 전송하지만 승인을 받지 않습니다. Notification
StreamDataAvailableFunc 스트림 데이터를 사용할 수 있을 때 호출됩니다. Notification
StreamErrorReportFunc 스트림 오류가 발생할 경우 호출됩니다. 이 경우 스트림이 PIC 자동으로 닫힙니다. Notification
StreamLatencyPressureFunc 스트림이 지연 시간 조건에 들어갈 때 호출됩니다. 이 조건은 누적된 버퍼 크기가 max_latency 값보다 큰 경우입니다. 자세한 내용은 StreamDefinition/StreamInfo 단원을 참조하십시오. Notification
StreamReadyFunc 스트림이 준비 상태에 들어갈 때 호출됩니다. Notification
StreamUnderflowReportFunc 이 함수는 현재 사용되지 않으며 나중에 사용할 수 있도록 예약되어 있습니다. Notification
     
DeviceCertToTokenFunc 연결 인증서를 토큰으로 반환합니다. 플랫폼 통합
GetCurrentTimeFunc 현재 시간을 반환합니다. 플랫폼 통합
GetDeviceCertificateFunc 디바이스 인증서를 반환합니다. 이 함수는 현재 사용되지 않으며 나중에 사용할 수 있도록 예약되어 있습니다. 플랫폼 통합
GetDeviceFingerprintFunc 디바이스 지문을 반환합니다. 이 함수는 현재 사용되지 않으며 나중에 사용할 수 있도록 예약되어 있습니다. 플랫폼 통합
GetRandomNumberFunc 0과 RAND_MAX 사이의 임의 숫자를 반환합니다. 플랫폼 통합
GetSecurityTokenFunc API백엔드와 통신하는 함수에 전달된 보안 토큰을 반환합니다. 구현은 직렬화된 AccessKeyId, SecretKeyId 및 세션 토큰을 지정할 수 있습니다. 플랫폼 통합
LogPrintFunc 태그와 로그 수준을 사용하여 텍스트 줄을 기록합니다. 자세한 내용은 PlatformUtils.h 단원을 참조하십시오. 플랫폼 통합

위의 표에 있는 플랫폼 통합 함수의 경우 마지막 파라미터는 ServiceCallContext 구조이며, 이 구조에는 다음 필드가 있습니다.

  • version: 구조의 버전입니다.

  • callAfter: 함수를 호출할 때까지의 절대 시간입니다.

  • timeout: 작업 제한 시간입니다(100나노초 단위).

  • customData: 다시 클라이언트에게 전달할 사용자 정의 값입니다.

  • pAuthInfo: 호출에 대한 자격 증명입니다. 자세한 내용은 다음(__AuthInfo) 구조를 참조하십시오.

권한 부여 정보는 __AuthInfo 구조를 사용하여 제공되며, 이 구조는 직렬화된 자격 증명 또는 공급자별 인증 토큰일 수 있습니다. 이 구조에는 다음 필드가 있습니다.

  • version: __AuthInfo 구조의 버전입니다.

  • type: 자격 증명의 유형(인증서 또는 보안 토큰)을 정의하는 AUTH_INFO_TYPE 값입니다.

  • data: 인증 정보가 포함된 바이트 배열입니다.

  • size: data 파라미터의 크기입니다.

  • expiration: 100나노초 단위로 표시되는 자격 증명의 만료입니다.

스트리밍 재시도를 위한 콜백 구현

Kinesis 비디오 프로듀서는 콜백 함수를 통해 스트리밍 상태를 SDK 제공합니다. 스트리밍 중에 발생하는 일시적인 네트워크 문제를 복구하려면 다음 콜백 메커니즘을 구현하는 것이 좋습니다.

  • 스트림 지연 압력 콜백 - 이 콜백 메커니즘은 스트림 지연 상황이 발생할 때 시작됩니다. SDK 이는 누적된 버퍼 크기가 _ 값보다 클 때 발생합니다. MAX LATENCY 스트림이 생성되면 스트리밍 애플리케이션은 MAX LATENCY _를 기본값인 60초로 설정합니다. 이 콜백의 일반적인 구현 방법은 연결을 재설정하는 것입니다. 필요에 따라 https://github.com/awslabs/amazon-kinesis-video-streamsproducer-sdk-cpp-/blob/master/ /src/source/ kinesis-video-c-producer .c에서 샘플 구현을 사용할 수 있습니다. StreamLatencyStateMachine 단, 네트워크 중단으로 인해 전송되지 않은 프레임을 보조 스토리지에 저장하여 백필할 수 있는 옵션은 없습니다.

  • 스트림 부실 콜백 - 이 콜백은 생산자가 Amazon Kinesis Data Streams 서비스 (업링크) 로 데이터를 보낼 수는 있지만 확인 메시지를 제때 (ACK버퍼링) 받을 수 없을 때 시작됩니다 (기본값은 60초). 네트워크 설정에 따라 스트림 지연 압력 콜백이나 스트림 지연 콜백 또는 둘 다 시작될 수 있습니다. 스트림 지연 시간 압력 콜백의 재시도 구현과 마찬가지로, 일반적인 구현 방법은 연결을 재설정하고 스트리밍을 위한 연결을 새로 시작하는 것입니다. 필요에 따라 https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/ .c에서 샘플 구현을 사용할 수 있습니다.

  • 스트림 오류 콜백 - 이 콜백은 서비스 호출 SDK 중에 네트워크 연결에 제한 시간이 초과되거나 기타 오류가 발생하면 시작됩니다. KVS API

  • 드롭된 프레임 콜백 - 이 콜백은 네트워크 속도가 느리거나 스트림 오류로 인해 스토리지 크기가 가득 차면 시작됩니다. 네트워크 속도로 인해 프레임이 손실되는 경우 네트워크 속도에 맞게 스토리지 크기를 늘리거나 비디오 프레임 크기를 줄이거나 프레임 속도를 줄일 수 있습니다.