Como o iOS escolhe a resolução e a taxa de quadros da câmera - Amazon IVS

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á.

Como o iOS escolhe a resolução e a taxa de quadros da câmera

A câmera gerenciada pelo SDK de transmissão otimiza sua resolução e taxa de quadros (frames-per-secondou FPS) para minimizar a produção de calor e o consumo de energia. Esta seção explica como acontece a seleção da resolução e da taxa de quadros para ajudar aplicações no host a otimizarem seus casos de uso.

Ao criar um IVSLocalStageStream com um IVSCamera, a câmera é otimizada para uma taxa de quadros de IVSLocalStageStreamVideoConfiguration.targetFramerate e uma resolução de IVSLocalStageStreamVideoConfiguration.size. A chamada de IVSLocalStageStream.setConfiguration atualiza a câmera com valores mais novos.

Prévia da câmera

Se você criar uma prévia de um IVSCamera sem anexá-lo a um IVSBroadcastSession ou IVSStage, o padrão será uma resolução de 1080p e uma taxa de quadros de 60 FPS.

Transmissão de um palco

Ao usar um IVSBroadcastSession para transmitir um IVSStage, o SDK tenta otimizar a câmera com uma resolução e uma taxa de quadros que atendam aos critérios de ambas as sessões.

Por exemplo, se a configuração de transmissão estiver definida para ter uma taxa de quadros de 15 FPS e uma resolução de 1080p, enquanto o palco tiver uma taxa de quadros de 30 FPS e uma resolução de 720p, o SDK selecionará uma configuração de câmera com uma taxa de quadros de 30 FPS e uma resolução de 1080p. O IVSBroadcastSession eliminará todos os outros quadros da câmera e o IVSStage ajustará a escala da imagem de 1080p para 720p.

Se uma aplicação do host planeja usar ambos IVSBroadcastSession e IVSStage em conjunto com uma câmera, recomendamos que as propriedades targetFrameratesize das respectivas configurações correspondam. Uma incompatibilidade pode fazer com que a câmera se reconfigure durante a captura de vídeo, o que causará um breve atraso na entrega da amostra de vídeo.

Se a presença de valores idênticos não corresponder ao caso de uso da aplicação do host, criar primeiro a câmera de maior qualidade evitará que a câmera se reconfigure quando a sessão de qualidade inferior for adicionada. Por exemplo, se você transmitir em 1080p e 30 FPS e depois entrar em um palco definido para 720p e 30 FPS, a câmera não se reconfigurará e o vídeo continuará sem interrupções. Isso ocorre porque 720p é menor ou igual a 1080p e 30 FPS é menor ou igual a 30 FPS.

Taxas de quadros, resoluções e taxas de proporções arbitrárias

A maioria dos hardwares de câmera é capaz de corresponder exatamente aos formatos comuns, como 720p a 30 FPS ou 1080p a 60 FPS. Contudo, não é possível corresponder exatamente a todos os formatos. O SDK de transmissão escolhe a configuração da câmera com base nas seguintes regras (em ordem de prioridade):

  1. A largura e a altura da resolução são maiores ou iguais à resolução desejada, mas dentro dessa restrição, a largura e a altura são as menores possíveis.

  2. A taxa de quadros é maior ou igual à taxa de quadros desejada, mas dentro dessa restrição, a taxa de quadros é a mais baixa possível.

  3. A taxa de proporção corresponde à proporção desejada.

  4. Se houver vários formatos correspondentes, o formato com o maior campo de visão será usado.

Veja dois exemplos a seguir:

  • A aplicação do host está tentando transmitir em 4K a 120 FPS. A câmera selecionada é compatível somente com 4K a 60 FPS ou 1080p a 120 FPS. O formato selecionado será 4k a 60 FPS, porque a regra de resolução tem prioridade superior em relação à regra de taxa de quadros.

  • Uma resolução irregular é solicitada, 1910x1070. A câmera usará 1920x1080. Cuidado: escolher uma resolução como 1921x1080 fará com que a câmera aumente para a próxima resolução disponível (como 2592x1944), o que acarretará em penalidade na largura de banda da CPU e da memória.

E quanto ao Android?

O Android não ajusta sua resolução ou taxa de quadros em tempo real, como o iOS, portanto, isso não afeta o SDK de Transmissão do Android.