Ao criar o VideoFxProcessor
, você pode fornecer o parâmetro processingBudgetPerFrame
opcional e controlar a quantidade de CPU e GPU que os filtros usam.
let videoFxProcessor: VideoFxProcessor | undefined = undefined;
const processingBudgetPerFrame = 50
;
try {
videoFxProcessor = await VideoFxProcessor.create(logger, videoFxConfig, processingBudgetPerFrame);
} catch (error) {
logger.warn(error.toString());
}
O VideoFxProcessor
requer tempo para processar um quadro. A quantidade de tempo depende do dispositivo, do navegador e do que mais está sendo executado no navegador ou no dispositivo. O processador usa o conceito de um orçamento para definir a quantidade de tempo usada para processar e renderizar cada quadro.
O tempo de processamento é em milissegundos. Como exemplo de como usar um orçamento, 1 segundo tem 1000 ms. A meta de 15 quadros por segundo de captura de vídeo resulta em um orçamento total de 1000 ms/15 fps = 66 ms. Você pode definir um orçamento de 50% disso, ou 33 ms, fornecendo o valor 50
no parâmetro processingBudgetPerFrame
, conforme mostrado no exemplo acima.
O VideoFxProcessor
em seguida tenta processar os quadros dentro do orçamento especificado. Se o processamento ultrapassar o orçamento, o processador reduz a qualidade visual para ficar dentro do orçamento. O processador continua reduzindo a qualidade visual ao mínimo e, nesse momento, ele para de reduzir. Essa duração do processamento é medida continuamente, portanto, se mais recursos forem disponibilizados, como outro aplicativo fechando e liberando a CPU, o processador aumentará a qualidade visual novamente até atingir o orçamento ou atingir a qualidade visual máxima.
Se você não fornecer um valor para processingBudgetPerFrame
, o VideoFxProcessor
padrão será 50
.