As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Retornos de SDK chamada do produtor
As classes e métodos do Amazon Kinesis Video SDK Streams Producer não mantêm seus próprios processos. Em vez disso, eles usam as chamadas e eventos da função de entrada para programar retornos de chamada para se comunicar com o aplicativo.
Há dois padrões de retorno de chamada que o aplicativo pode usar para interagir com oSDK:
-
CallbackProvider
— Esse objeto expõe cada retorno de chamada do componente code (PIC) independente da plataforma para o aplicativo. Esse padrão permite funcionalidade completa, mas também significa que a implementação deve lidar com todos os API métodos e assinaturas públicos na camada C++. -
StreamCallbackProvidere ClientCallbackProvider — Esses objetos expõem os retornos de chamada específicos do fluxo e do cliente, e a camada C++ do expõe o restante dos retornos SDK de chamada. Esse é o padrão de retorno de chamada preferido para interagir com o produtor. SDK
O diagrama a seguir ilustra o modelo de objeto dos objetos de retorno de chamada:
No diagrama anterior, DefaultCallbackProvider
deriva de CallbackProvider
(que expõe todos os retornos de chamada noPIC) e contém e. StreamCallbackProvider
ClientCallbackProvider
Este tópico contém as seguintes seções:
ClientCallbackProvider
O objeto ClientCallbackProvider
expõe as funções de retorno no nível do cliente. Os detalhes das funções são descritos na seção ClientCallbacks estrutura.
Métodos de retorno de chamada:
-
getClientReadyCallback
— Relata um estado pronto para o cliente. -
getStorageOverflowPressureCallback
— Relata sobrecarga ou pressão de armazenamento. Esse retorno de chamada é feito quando a utilização do armazenamento fica abaixo do valor deSTORAGE_PRESSURE_NOTIFICATION_THRESHOLD
, que é de 5% do tamanho total do armazenamento. Para obter mais informações, consulte StorageInfo.
StreamCallbackProvider
O objeto StreamCallbackProvider
expõe as funções de retorno no nível do streaming.
Métodos de retorno de chamada:
-
getDroppedFragmentReportCallback
: relata um fragmento descartado. -
getDroppedFrameReportCallback
— Relata um quadro perdido. -
getFragmentAckReceivedCallback
— Relata que um fragmento ACK foi recebido para o stream. -
getStreamClosedCallback
— Relata uma condição de riacho fechado. -
getStreamConnectionStaleCallback
— Relata uma condição de conexão obsoleta. Nessa condição, o produtor está enviando dados para o serviço, mas não está recebendo confirmações. -
getStreamDataAvailableCallback
— Relata que os dados estão disponíveis no stream. -
getStreamErrorReportCallback
— Relata uma condição de erro de transmissão. -
getStreamLatencyPressureCallback
— Relata uma condição de latência do stream, que ocorre quando o tamanho do buffer acumulado é maior que omax_latency
valor. Para obter mais informações, consulte StreamDefinition/StreamInfo. -
getStreamReadyCallback
: —Relata uma condição de prontidão do fluxo. -
getStreamUnderflowReportCallback
— Relata uma condição de subfluxo do riacho. Essa função não é usada atualmente e está reservada para uso futuro.
Para obter o código-fonte deStreamCallbackProvider
, consulte StreamCallbackProvider.h.
ClientCallbacks estrutura
A ClientCallbacks
estrutura contém os pontos de entrada da função de retorno de chamada que PIC ela chama quando ocorrem eventos específicos. A estrutura também contém informações sobre a versão no campo CALLBACKS_CURRENT_VERSION
e um campo customData
de dados definidos pelo usuário que é retornado com funções de retorno de chamada individuais.
O aplicativo cliente pode usar um ponteiro this
para o campo custom_data
para mapear as funções de membro para as funções ClientCallback
estáticas em tempo de execução, conforme mostrado no seguinte código de exemplo:
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(...);
Função | Descrição | Tipo |
---|---|---|
CreateDeviceFunc |
Não implementado no back-end atualmente. Essa chamada falha quando chamada do Java ou do C++. Outros clientes executam inicialização específica à plataforma. | Backend API |
CreateStreamFunc |
Chamada quando o streaming é criado. | Backend API |
DescribeStreamFunc |
Chamada quando DescribeStream é chamado. |
Backend API |
GetStreamingEndpointFunc |
Chamada quando GetStreamingEndpoint é chamado. |
Backend API |
GetStreamingTokenFunc |
Chamada quando GetStreamingToken é chamado. |
Backend API |
PutStreamFunc |
Chamada quando PutStream é chamado. |
Backend API |
TagResourceFunc |
Chamada quando TagResource é chamado. |
Backend API |
CreateMutexFunc |
Cria um mutex de sincronização. | Sincronização |
FreeMutexFunc |
Libera o mutex. | Sincronização |
LockMutexFunc |
Bloqueia o mutex de sincronização. | Sincronização |
TryLockMutexFunc |
Tenta bloquear o mutex. Não implementado no momento. | Sincronização |
UnlockMutexFunc |
Desbloqueia o mutex. | Sincronização |
ClientReadyFunc |
Chamada quando o cliente entra em estado de pronto. | Notificação |
DroppedFrameReportFunc |
Relata quando um quadro é descartado. | Notificação |
DroppedFragmentReportFunc |
Relata quando um fragmento é descartado. Essa função não é usada atualmente e está reservada para uso futuro. | Notificação |
FragmentAckReceivedFunc |
Chamado quando um fragmento ACK (armazenamento em buffer, recebido, persistente e erro) é recebido. | Notificação |
StorageOverflowPressureFunc |
Chamada quando a utilização do armazenamento fica abaixo do valor de STORAGE_PRESSURE_NOTIFICATION_THRESHOLD , que é definido como 5% do tamanho total do armazenamento. |
Notificação |
StreamClosedFunc |
Chamada quando os últimos bits dos quadros restantes são transmitidos. | Notificação |
StreamConnectionStaleFunc |
Chamada quando o streaming entra em um estado de conexão obsoleta. Nessa condição, o produtor está enviando dados ao serviço, mas não está recebendo confirmações. | Notificação |
StreamDataAvailableFunc |
Chamada quando os dados do streaming estão disponíveis. | Notificação |
StreamErrorReportFunc |
Chamada quando ocorre um erro de streaming. O fecha PIC automaticamente o fluxo sob essa condição. | Notificação |
StreamLatencyPressureFunc |
Chamada quando o streaming entra em uma condição de latência, que é quando o tamanho do buffer acumulado é maior que o valor de max_latency . Para obter mais informações, consulte StreamDefinition/StreamInfo. |
Notificação |
StreamReadyFunc |
Chamada quando o streaming entra em estado de pronto. | Notificação |
StreamUnderflowReportFunc |
Essa função não é usada atualmente e está reservada para uso futuro. | Notificação |
DeviceCertToTokenFunc |
Retorna o certificado da conexão como um token. | Integração de plataformas |
GetCurrentTimeFunc |
Retorna a hora atual. | Integração de plataformas |
GetDeviceCertificateFunc |
Retorna o certificado do dispositivo. Essa função não é usada atualmente e está reservada para uso futuro. | Integração de plataformas |
GetDeviceFingerprintFunc |
Retorna a impressão digital do dispositivo. Essa função não é usada atualmente e está reservada para uso futuro. | Integração de plataformas |
GetRandomNumberFunc |
Retorna um número aleatório entre 0 e RAND_MAX . |
Integração de plataformas |
GetSecurityTokenFunc |
Retorna o token de segurança que é passado para as funções que se comunicam com o back-endAPI. A implementação pode especificar os AccessKeyId , SecretKeyId e o token de sessão serializados. |
Integração de plataformas |
LogPrintFunc |
Registra em log uma linha de texto com a tag e o nível do log. Para obter mais informações, consulte PlatformUtils.h . |
Integração de plataformas |
Para as funções de integração de plataformas na tabela anterior, o último parâmetro é uma estrutura ServiceCallContext
que tem os seguintes campos:
-
version
: a versão do struct. -
callAfter
: um horário absoluto após o qual chamar a função. -
timeout
: o tempo limite da operação em 100 unidades de nanossegundo. -
customData
: um valor definido pelo usuário a ser passado de volta para o cliente. -
pAuthInfo
: as credenciais para a chamada. Para obter mais informações, consulte a estrutura (__AuthInfo
) a seguir.
As informações de autorização são fornecidas usando a estrutura __AuthInfo
, que podem ser credenciais serializadas ou um token de autenticação específico ao provedor. Esta estrutura tem os seguintes campos:
-
version
: a versão da estrutura de__AuthInfo
. -
type
: um valor deAUTH_INFO_TYPE
que define o tipo de credencial (certificado ou token de segurança). -
data
: uma matriz de bytes que contém as informações de autenticação. -
size
: o tamanho do parâmetrodata
. -
expiration
: a expiração das credenciais em 100 unidades de nanossegundo.
Implementações de retorno de chamada para repetir o streaming
O Kinesis Video Producer SDK fornece o status do streaming por meio de funções de retorno de chamada. Recomendamos que você implemente os seguintes mecanismos de retorno de chamada para se recuperar de quaisquer problemas momentâneos de rede encontrados durante o streaming.
-
Retorno de chamada de pressão de latência de fluxo - esse mecanismo de retorno de chamada é iniciado quando ele SDK encontra uma condição de latência de fluxo. Isso acontece quando o tamanho do buffer acumulado é maior que o LATENCY valor MAX _. Quando o stream é criado, o aplicativo de streaming define MAX _ LATENCY como o valor padrão de 60 segundos. A implementação típica para esse retorno de chamada é a redefinição da conexão. Você pode usar o exemplo de implementação em https://github.com/awslabs/amazon-kinesis-video-streams- producer-sdk-cpp /blob/master/ kinesis-video-c-producer /src/source/ StreamLatencyStateMachine .c
conforme necessário. Observe que não há opção de armazenar os quadros não entregues devido à interrupção da rede em um armazenamento secundário para preenchimento. -
Retorno de chamada de inatividade do stream — esse retorno de chamada é iniciado quando o produtor pode enviar dados para o serviço Amazon Kinesis Data Streams (uplink), mas não consegue recuperar as confirmações (armazenadas em buffer) a tempo ACK (o padrão é 60 segundos). Dependendo das configurações de rede, o retorno de chamada de pressão de latência do fluxo ou o retorno de chamada de inatividade do fluxo, ou ambos, podem ser iniciados. Semelhante à implementação de nova tentativa do retorno de chamada de pressão de latência do streaming, a implementação típica é a redefinição da conexão e o início de uma nova conexão para streaming. Você pode usar a implementação de amostra em https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/
.c conforme necessário. -
Retorno de chamada de erro de transmissão - esse retorno de chamada é iniciado quando ele SDK encontra um tempo limite na conexão de rede ou outros erros durante a chamada para as chamadas de serviço. KVS API
-
Retorno de chamada de quadro perdido - esse retorno de chamada é iniciado quando o tamanho do armazenamento está cheio devido à baixa velocidade da rede ou a um erro de transmissão. Se a velocidade da rede resultar em queda de quadros, você poderá aumentar o tamanho do armazenamento, reduzir o tamanho do quadro do vídeo ou a taxa de quadros para corresponder à velocidade da rede.