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á.
SDKEstruturas produtoras
Esta seção inclui informações sobre estruturas que você pode usar para fornecer dados ao objeto Kinesis Video Streams Producer.
DeviceInfo/DefaultDeviceInfoProvider
Os DefaultDeviceInfoProviderobjetos DeviceInfoe controlam o comportamento do objeto Kinesis Video Streams Producer.
Campos de membros
-
versão — Um valor inteiro usado para garantir que a versão correta da estrutura seja usada com a versão atual da base de código. A versão atual é especificada usando a macro
DEVICE_INFO_CURRENT_VERSION
. -
nome — O nome legível por humanos para o dispositivo.
-
tagCount/tags — Não usado atualmente.
-
streamCount— O número máximo de streams que o dispositivo pode suportar. Inicialmente, isso pré-aloca o armazenamento dos ponteiros aos objetos de streaming, mas os objetos de streaming reais são criados posteriormente. O padrão é 16 streamings, mas isso pode ser alterado no arquivo
DefaultDeviceInfoProvider.cpp
. -
storageInfo: um objeto que descreve a configuração principal do armazenamento. Para obter mais informações, consulte StorageInfo.
StorageInfo
Especifica a configuração do armazenamento principal para o Kinesis Video Streams.
A implementação padrão é baseada em uma implementação de heap rápido de baixa fragmentação, que é otimizada para streaming. Ela usa o alocador MEMALLOC
, que pode ser substituído em uma plataforma determinada. Algumas plataformas têm alocação de memória virtual sem suporte à alocação com páginas físicas. À medida que a memória for usada, as páginas virtuais serão baseadas nas páginas físicas. Isso resultará em pressão de memória insuficiente em todo o sistema quando o armazenamento for subutilizado.
Calcule o tamanho do armazenamento padrão com base na fórmula a seguir. O DefragmentationFactor
deve ser definido como 1,2 (20 por cento).
Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor
No exemplo a seguir, um dispositivo tem streamings de áudio e de vídeo. O streaming de áudio tem 512 amostras por segundo, com uma amostra média de 100 bytes. O streaming de vídeo tem 25 quadros por segundo, com uma média de 10.000 bytes. Cada fluxo tem 3 minutos de duração do buffer.
Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.
Se o dispositivo tiver mais memória disponível, recomendamos que você adicione mais memória ao armazenamento para evitar fragmentação severa.
Verifique se o tamanho do armazenamento é adequado para acomodar os buffers completos de todos os fluxos com alta complexidade de codificação (quando o tamanho do quadro é maior devido ao alto movimento) ou quando a largura de banda é baixa. Se o produtor atingir a pressão da memória, ele emitirá retornos de chamada de pressão de estouro de armazenamento (). StorageOverflowPressureFunc
No entanto, quando não há memória disponível no armazenamento de conteúdo, ela descarta o quadro que está sendo enviado para o Kinesis Video Streams com um STATUS_STORE_OUT_OF_MEMORY =
0x5200002e
erro (). Para obter mais informações, consulte Códigos de erro e status retornados pela biblioteca cliente. Isso também pode acontecer se as confirmações do aplicativo (ACKs) não estiverem disponíveis ou se as persistentes estiverem atrasadas. ACKs Nesse caso, os buffers são preenchidos até a capacidade de “duração do buffer” antes que os quadros anteriores comecem a ser eliminados.
Campos de membros
-
versão — Um valor inteiro usado para garantir que a versão correta da estrutura seja usada com a versão atual da base de código.
-
storageType— uma
DEVICE_STORAGE_TYPE
enumeração que especifica o suporte subjacente e a implementação do armazenamento. Atualmente, o único valor suportado éDEVICE_STORAGE_TYPE_IN_MEM
. Uma implementação futura oferecerá suporte aoDEVICE_STORAGE_TYPE_HYBRID_FILE
indicando que o armazenamento retorna para o armazenamento de conteúdo baseado em arquivos. -
storageSize— O tamanho do armazenamento em bytes a ser pré-alocado. A alocação mínima é de 10 MB, e a máxima é de 10 GB. (Isso será alterado na implementação futura do armazenamento de conteúdo com base em arquivos.)
-
spillRatio— Um valor inteiro que representa a porcentagem do armazenamento a ser alocado do tipo de armazenamento direto de memória (RAM), em oposição ao armazenamento secundário de estouro (armazenamento de arquivos). Não utilizado no momento.
-
rootDirectory: o caminho para o diretório em que o armazenamento de conteúdo com suporte de arquivo está localizado. Não utilizado no momento.