Partilhar via


Guia de início rápido: definir restrições de vídeo em seu aplicativo de chamada

Importante

A funcionalidade descrita neste artigo está atualmente em visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Descrição geral

A API de restrições de vídeo permite que os desenvolvedores controlem a qualidade do vídeo a partir de suas chamadas de vídeo. Neste guia de início rápido, ilustramos como usar a API para definir as restrições.

Pré-requisitos

Consulte o Guia de início rápido de chamadas de voz para configurar um aplicativo de exemplo com chamadas de voz.

Classes

Nome Descrição
VideoRestrições Usado para manter restrições de vídeo de entrada e restrições de vídeo de saída.
OutgoingVideoConstraints Usado para especificar restrições (MaxWidth | MaxHeight | MaxFrameRate) para fluxos de vídeo de saída.
IncomingVideoConstraints Usado para especificar restrições (MaxWidth | MaxHeight) para fluxos de vídeo de entrada.

Usando restrições de vídeo

As seções a seguir explicam como as restrições de vídeo podem ser definidas para fluxos de vídeo de entrada e/ou saída em diferentes momentos de uma chamada.

Definir restrições de vídeo antes de iniciar uma chamada

Para fluxos de vídeo de entrada , um IncomingVideoConstraints precisa ser adicionado ao IncomingVideoOptions.

    var IncomingVideoOptions = new IncomingVideoOptions()
    {
        Constraints = new IncomingVideoConstraints() 
        { 
            MaxWidth = /*value*/, 
            MaxHeight = /*value*/ 
        },
        // other options
        // ...
    }

Para fluxos de vídeo de saída, um OutgoingVideoConstraints precisa ser adicionado ao OutgoingVideoOptions.

    var OutgoingVideoOptions = new OutgoingVideoOptions()
    {
        Constraints = new OutgoingVideoConstraints() 
        { 
            MaxWidth = /*value*/, 
            MaxHeight = /*value*/, 
            MaxFrameRate = /*value*/ 
        },
        // other options
        // ...
    }

Como as opções são usadas para iniciar/participar de uma chamada, as restrições podem ser aplicadas aos fluxos automaticamente. Por exemplo:

    var joinCallOptions = new JoinCallOptions()
    {
        IncomingVideoOptions = new IncomingVideoOptions()
        {
            Constraints = new IncomingVideoConstraints() 
            { 
                MaxWidth = /*value*/, 
                MaxHeight = /*value*/ 
            },
            // other options
            // ...
        },

        OutgoingVideoOptions = new OutgoingVideoOptions()
        {
            Constraints = new OutgoingVideoConstraints() 
            { 
                MaxWidth = /*value*/, 
                MaxHeight = /*value*/, 
                MaxFrameRate = /*value*/ 
            },
            // other options
            // ...
        }
    };
    await callAgent.JoinAsync(locator, joinCallOptions);

Definir restrições de vídeo durante uma chamada

Em vez de definir as restrições de vídeo antes de iniciar uma chamada, você também pode ajustar dinamicamente as restrições de vídeo durante uma chamada. Você precisa chamar SetVideoConstraints sua Call classe de tipo e fornecer as restrições.


    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
    {
        outgoingVideoConstraints.MaxWidth = /*value*/ ;
        outgoingVideoConstraints.MaxHeight = /*value*/ ;
        outgoingVideoConstraints.MaxFrameRate = /*value*/ ;
    };
    
    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints()
    {
        incomingVideoConstraints.MaxWidth = /*value*/ ;
        incomingVideoConstraints.MaxHeight = /*value*/ ;
    };
  
    VideoConstraints constraints = new VideoConstraints();
    constraints.OutgoingVideoConstraints = outgoingVideoConstraints;
    constraints.IncomingVideoConstraints = incomingVideoConstraints;
    
    call.SetVideoConstraints(constraints);

Para redefinir / remover as restrições de vídeo que você definiu anteriormente, você tem que seguir o padrão acima e fornecer 0 como um valor de restrição. Fornecer null valores para ou IncomingVideoConstraintsOutgoingVideoConstraints não redefinir/remover as restrições e as restrições com um null valor será ignorado.

Limitações

Nota

Certifique-se de estar ciente dessas limitações ao usar a API de restrições de vídeo. Algumas das limitações serão removidas em versões futuras.

Existem algumas limitações conhecidas para a API de restrições de vídeo atual.

  • A restrição é uma restrição máxima , o que significa que o valor de restrição possível pode ser o valor especificado ou menor. Não há garantia de que o valor real permaneça o mesmo especificado pelo usuário.

  • Quando o usuário define um valor de restrição muito pequeno, o SDK usará o menor valor disponível suportado.

  • Para a configuração OutgoingVideoConstraints durante uma chamada, o fluxo de vídeo atual em curso não capta automaticamente as restrições especificadas. Para que as restrições entrem em vigor, você precisa parar e reiniciar o vídeo de saída.

  • IncomingVideoConstraints atualmente é uma restrição preferida pelo usuário em vez de uma restrição rígida, o que significa que, dependendo da sua rede e hardware, o valor real recebido ainda pode exceder a restrição definida.

Estatísticas da mídia

Para avaliar e comparar a qualidade do vídeo depois de aplicar as restrições de vídeo, você pode acessar a API MediaStats para obter a resolução de vídeo e informações de taxa de bits do fluxo. As estatísticas de mídia também incluem outras estatísticas granulares relacionadas aos fluxos, como desvios, perda de pacotes, tempo de ida e volta, etc.

Importante

A funcionalidade descrita neste artigo está atualmente em visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Descrição geral

A API de restrições de vídeo permite que os desenvolvedores controlem a qualidade do vídeo a partir de suas chamadas de vídeo. Neste guia de início rápido, ilustramos como usar a API para definir as restrições.

Pré-requisitos

Consulte o Guia de início rápido de chamadas de voz para configurar um aplicativo de exemplo com chamadas de voz.

Classes

Nome Descrição
VideoRestrições Usado para manter restrições de vídeo de entrada e restrições de vídeo de saída.
OutgoingVideoConstraints Usado para especificar restrições (maxWidth | maxHeight | maxFrameRate) para fluxos de vídeo de saída.
IncomingVideoConstraints Usado para especificar restrições (maxWidth | maxHeight) para fluxos de vídeo de entrada.

Usando restrições de vídeo

As seções a seguir explicam como as restrições de vídeo podem ser definidas para fluxos de vídeo de entrada e/ou saída em diferentes momentos de uma chamada.

Definir restrições de vídeo antes de iniciar uma chamada

Para fluxos de vídeo de entrada , um IncomingVideoConstraints precisa ser adicionado ao IncomingVideoOptions.

    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
    incomingVideoConstraints.setMaxWidth(/*value*/);
    incomingVideoConstraints.setMaxHeight(/*value*/);

    // ...

    IncomingVideoOptions incomingVideoOptions = new IncomingVideoOptions();
    incomingVideoOptions.setConstraints(incomingVideoConstraints);

Para fluxos de vídeo de saída, um OutgoingVideoConstraints precisa ser adicionado ao OutgoingVideoOptions.

    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints() 
    outgoingVideoConstraints.setMaxWidth(/*value*/); 
    outgoingVideoConstraints.setMaxHeight(/*value*/); 
    outgoingVideoConstraints.setMaxFrameRate(/*value*/); 
   
    // ...
    
    OutgoingVideoOptions outgoingVideoOptions = new OutgoingVideoOptions();
    outgoingVideoOptions.setConstraints(outgoingVideoConstraints);

Como as opções são usadas para iniciar/participar de uma chamada, as restrições podem ser aplicadas aos fluxos automaticamente. Por exemplo:

    JoinCallOptions joinCallOptions = new JoinCallOptions();
    joinCallOptions.setIncomingVideoOptions(incomingVideoOptions);
    joinCallOptions.setOutgoingVideoOptions(outgoingVideoOptions);
    callAgent.Join(context, locator, joinCallOptions);

Definir restrições de vídeo durante uma chamada

Em vez de definir as restrições de vídeo antes de iniciar uma chamada, você também pode ajustar dinamicamente as restrições de vídeo durante uma chamada. Você precisa chamar setVideoConstraints sua Call classe de tipo e fornecer as restrições.


    OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints();
    outgoingVideoConstraints.setMaxWidth(/*value*/); 
    outgoingVideoConstraints.setMaxHeight(/*value*/); 
    outgoingVideoConstraints.setMaxFrameRate(/*value*/); 
    
    IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
    incomingVideoConstraints.setMaxWidth(/*value*/);
    incomingVideoConstraints.setMaxHeight(/*value*/);
  
    VideoConstraints constraints = new VideoConstraints();
    constraints.setOutgoingVideoConstraints(outgoingVideoConstraints);
    constraints.setIncomingVideoConstraints(incomingVideoConstraints);
    
    call.setVideoConstraints(constraints);

Para redefinir / remover as restrições de vídeo que você definiu anteriormente, você tem que seguir o padrão acima e fornecer 0 como um valor de restrição. Fornecer null valores para ou IncomingVideoConstraintsOutgoingVideoConstraints não redefinir/remover as restrições e as restrições com um null valor será ignorado.

Limitações

Nota

Certifique-se de estar ciente dessas limitações ao usar a API de restrições de vídeo. Algumas das limitações serão removidas em versões futuras.

Existem algumas limitações conhecidas para a API de restrições de vídeo atual.

  • A restrição é uma restrição máxima , o que significa que o valor de restrição possível pode ser o valor especificado ou menor. Não há garantia de que o valor real permaneça o mesmo especificado pelo usuário.

  • Quando o usuário define um valor de restrição muito pequeno, o SDK usará o menor valor disponível suportado.

  • Para a configuração OutgoingVideoConstraints durante uma chamada, o fluxo de vídeo atual em curso não capta automaticamente as restrições especificadas. Para que as restrições entrem em vigor, você precisa parar e reiniciar o vídeo de saída.

  • IncomingVideoConstraints atualmente é uma restrição preferida pelo usuário em vez de uma restrição rígida, o que significa que, dependendo da sua rede e hardware, o valor real recebido ainda pode exceder a restrição definida.

Estatísticas da mídia

Para avaliar e comparar a qualidade do vídeo depois de aplicar as restrições de vídeo, você pode acessar a API MediaStats para obter a resolução de vídeo e informações de taxa de bits do fluxo. As estatísticas de mídia também incluem outras estatísticas granulares relacionadas aos fluxos, como desvios, perda de pacotes, tempo de ida e volta, etc.

Importante

A funcionalidade descrita neste artigo está atualmente em visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Descrição geral

A API de restrições de vídeo permite que os desenvolvedores controlem a qualidade do vídeo a partir de suas chamadas de vídeo. Neste guia de início rápido, ilustramos como usar a API para definir as restrições.

Pré-requisitos

Consulte o Guia de início rápido de chamadas de voz para configurar um aplicativo de exemplo com chamadas de voz.

Classes

Nome Descrição
VideoRestrições Usado para manter restrições de vídeo de entrada e restrições de vídeo de saída.
OutgoingVideoConstraints Usado para especificar restrições (maxWidth | maxHeight | maxFrameRate) para fluxos de vídeo de saída.
IncomingVideoConstraints Usado para especificar restrições (maxWidth | maxHeight) para fluxos de vídeo de entrada.

Usando restrições de vídeo

As seções a seguir explicam como as restrições de vídeo podem ser definidas para fluxos de vídeo de entrada e/ou saída em diferentes momentos de uma chamada.

Definir restrições de vídeo antes de iniciar uma chamada

Para fluxos de vídeo de entrada , um IncomingVideoConstraints precisa ser adicionado ao IncomingVideoOptions.

    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
    
    // ...
    
    let incomingVideoOptions = IncomingVideoOptions()
    incomingVideoOptions.constraints = incomingVideoConstraints

Para fluxos de vídeo de saída, um OutgoingVideoConstraints precisa ser adicionado ao OutgoingVideoOptions.

    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    
    // ...

    let outgoingVideoOptions = OutgoingVideoOptions()
    outgoingVideoOptions.constraints = outgoingVideoConstraints

Como as opções são usadas para iniciar/participar de uma chamada, as restrições podem ser aplicadas aos fluxos automaticamente. Por exemplo:

    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
    let incomingVideoOptions = IncomingVideoOptions()
    incomingVideoOptions.constraints = incomingVideoConstraints
    
    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    let outgoingVideoOptions = OutgoingVideoOptions()
    outgoingVideoOptions.constraints = outgoingVideoConstraints
    
    let joinCallOptions = new JoinCallOptions()
    joinCallOptions.incomingVideoOptions = incomingVideoOptions
    joinCallOptions.outgoingVideoOptions = outgoingVideoOptions

    callAgent.join(with: locator, joinCallOptions: joinCallOptions);

Definir restrições de vídeo durante uma chamada

Em vez de definir as restrições de vídeo antes de iniciar uma chamada, você também pode ajustar dinamicamente as restrições de vídeo durante uma chamada. Você precisa chamar set(videoConstraints) sua Call classe de tipo e fornecer as restrições.


    let outgoingVideoConstraints = OutgoingVideoConstraints()
    outgoingVideoConstraints.maxWidth = /*value*/ 
    outgoingVideoConstraints.maxHeight = /*value*/
    outgoingVideoConstraint.maxFrameRate = /*value*/ 
    
    let incomingVideoConstraints = IncomingVideoConstraints()
    incomingVideoConstraints.maxWidth = /*value*/ 
    incomingVideoConstraints.maxHeight = /*value*/ 
  
    let videoConstraints = VideoConstraints()
    videoConstraints.outgoingVideoConstraints = outgoingVideoConstraints
    videoConstraints.incomingVideoConstraints = incomingVideoConstraints
    
    call?.set(videoConstraints: videoConstraints)

Para redefinir / remover as restrições de vídeo que você definiu anteriormente, você tem que seguir o padrão acima e fornecer 0 como um valor de restrição. Fornecer null valores para ou IncomingVideoConstraintsOutgoingVideoConstraints não redefinir/remover as restrições e as restrições com um null valor será ignorado.

Limitações

Nota

Certifique-se de estar ciente dessas limitações ao usar a API de restrições de vídeo. Algumas das limitações serão removidas em versões futuras.

Existem algumas limitações conhecidas para a API de restrições de vídeo atual.

  • A restrição é uma restrição máxima , o que significa que o valor de restrição possível pode ser o valor especificado ou menor. Não há garantia de que o valor real permaneça o mesmo especificado pelo usuário.

  • Quando o usuário define um valor de restrição muito pequeno, o SDK usará o menor valor disponível suportado.

  • Para a configuração OutgoingVideoConstraints durante uma chamada, o fluxo de vídeo atual em curso não capta automaticamente as restrições especificadas. Para que as restrições entrem em vigor, você precisa parar e reiniciar o vídeo de saída.

  • IncomingVideoConstraints atualmente é uma restrição preferida pelo usuário em vez de uma restrição rígida, o que significa que, dependendo da sua rede e hardware, o valor real recebido ainda pode exceder a restrição definida.

Estatísticas da mídia

Para avaliar e comparar a qualidade do vídeo depois de aplicar as restrições de vídeo, você pode acessar a API MediaStats para obter a resolução de vídeo e informações de taxa de bits do fluxo. As estatísticas de mídia também incluem outras estatísticas granulares relacionadas aos fluxos, como desvios, perda de pacotes, tempo de ida e volta, etc.

Você pode definir restrições de vídeo em suas chamadas para controlar a qualidade do vídeo com base na resolução ou taxa de quadros ou taxa de bits em suas chamadas de vídeo. Neste guia de início rápido, ilustramos como definir restrições de vídeo no início de uma chamada e como usar nosso setConstraints método no objeto de chamada para definir restrições de vídeo dinamicamente durante a chamada.

Enviar restrições de vídeo

O SDK de Chamada Web dos Serviços de Comunicação do Azure dá suporte à definição da resolução máxima de vídeo, taxa de quadros ou taxa de bits que um cliente envia. As restrições de vídeo do remetente são suportadas em navegadores de desktop (Chrome, Edge, Firefox) e ao usar o navegador móvel iOS Safari ou o navegador móvel Android Chrome.

Restrições suportadas
Vídeo recebido: resolução
Vídeo de saída: resolução, framerate, bitrate

Definir restrições de vídeo no início de uma chamada - vídeo de saída (envio)

A configuração de restrições de vídeo é implementada Call na interface. Para usar as Restrições de vídeo, você pode especificar as restrições de dentro CallOptions quando fizer uma chamada, aceitar uma chamada ou participar de uma chamada. Você deve especificar localVideoStreams em videoOptions.
Observe que as restrições não funcionam se você participar de uma chamada com a opção somente áudio e ligar a câmera mais tarde. Nesse caso, você pode definir restrições de vídeo dinamicamente usando o setConstraintsCall método na interface.

const callOptions = {
    videoOptions: {
        localVideoStreams: [...],
        constraints: {
            send: {
                bitrate: {
                    max: 575000
                },
                frameHeight: {
                    max: 240
                },
                frameRate: {
                    max: 20
                }
            }
        }
    },
    audioOptions: {
        muted: false
    }
};
// make a call
this.callAgent.startCall(identitiesToCall, callOptions);
// join a group call
this.callAgent.join({ groupId }, callOptions);
// accept an incoming call
this.incomingCall.accept(callOptions)

Os tipos de restrições de vídeo são descritos da seguinte forma:

export declare interface VideoOptions {
    localVideoStreams?: LocalVideoStream[];
    //video constraint when call starts
    constraints?: VideoConstraints;
};

export declare type VideoConstraints = {
    send?: VideoSendConstraints;
};

export type VideoSendConstraints = {
    /**
     * Resolution constraint
     */
    frameHeight?: MediaConstraintRange;

    /**
     * FrameRate constraint
     */
    frameRate?: MediaConstraintRange;

    /**
     * Bitrate constraint
     */
    bitrate?: MediaConstraintRange;
};

export declare type MediaConstraintRange = {
    max?: number;
};

Ao definir restrições de vídeo, o SDK escolhe o valor mais próximo que se enquadra no conjunto de restrições para impedir que os valores de resolução, frameRate e bitrate não excedam os valores máximos de restrição definidos. Além disso, quando o valor da restrição de resolução é muito pequeno, o SDK escolhe a menor resolução disponível. Nesse caso, a altura da resolução escolhida pode ser maior do que o valor da restrição.

Nota

Para todos bitrate, frameHeight e frameRate, o valor de restrição é uma max restrição, o que significa que o valor real na chamada pode ser o valor especificado ou menor. Não há garantia de que a resolução de vídeo enviada permaneça na resolução especificada.

O frameHeight in VideoSendConstraints tem um significado diferente quando um dispositivo móvel está no modo retrato. No modo retrato, esse valor indica o lado mais curto do dispositivo. Por exemplo, especificando frameHeight.max o valor com 240 em um dispositivo 1080(W) x 1920(H) no modo retrato, a altura da restrição está no lado 1080(W). Quando o mesmo dispositivo está no modo paisagem (1920(W) x 1080(H)), a restrição está no lado 1080(H).

Se você usar a API MediaStats para rastrear a resolução de vídeo enviada, poderá descobrir que a resolução enviada pode mudar durante a chamada. Ele pode subir e descer, mas deve ser igual ou menor do que o valor de restrição fornecido. Esta alteração de resolução é um comportamento esperado. O navegador também tem alguma regra de degradação para ajustar a resolução enviada com base na CPU ou nas condições da rede.

Definindo restrições de vídeo durante a chamada - vídeo de saída (envio)

Você pode definir restrições de vídeo durante a chamada usando o setConstraints método no Call objeto.

// For eg, when you've started a call,
const currentCall = this.callAgent.startCall(identitiesToCall, callOptions);

// To set constraints during the call,
await currentCall.setConstraints({
    video: {
        send: {
            frameHeight: {
                max: 360
            },
            frameRate: {
                max: 15
            }
        }
    }
});

// To set only a particular constraint (the others will stay as what they were set before, if they were set)
await currentCall.setConstraints({
    video: {
        send: {
            bitrate: {
                max: 400000
            }
        }
    }
});

// To unset any constraint,
await currentCall.setConstraints({
    video: {
        send: {
            frameHeight: {
                max: 0
            }
        }
    }
});

Nota

Definir o valor da restrição como 0 desdefine quaisquer restrições definidas anteriormente. Você pode usar essa maneira para redefinir ou remover restrições.


Receber restrições de vídeo

O gerenciamento da qualidade de vídeo para fluxos de entrada envolve a compreensão da escada de resolução dos Serviços de Comunicação do Azure, que é uma lista predefinida de resoluções de vídeo com limites estimados de taxa de bits superior e inferior. Quando um cliente solicita uma resolução específica, o WebJS e o servidor back-end consultam a escada de resolução para alocar a taxa de bits de vídeo apropriada, considerando as condições de rede e os recursos do dispositivo.

Definir o tamanho da renderização de vídeo é uma etapa crucial para os desenvolvedores que pretendem controlar a taxa de bits e a taxa de quadros de um fluxo de vídeo recebido. A qualidade inicial e a resolução de um fluxo de vídeo são determinadas pelo tamanho do renderizador criado e colocado em uma página da Web. Por exemplo, se o renderizador for pequeno, o SDK WebJS solicitará uma resolução menor. Por outro lado, se o renderizador for grande, o SDK do ACS visa a melhor resolução possível do servidor. Este processo garante que a qualidade do vídeo é otimizada com base nos requisitos e capacidades do cliente. Quando um cliente solicita uma resolução específica, o servidor consulta a escada de resolução para alocar a taxa de bits de vídeo apropriada, considerando as condições de rede e os recursos do dispositivo.

A tabela de escada de resolução fornece o que a escada de resolução SDK de chamada WebJS consiste com as taxas de bits de vídeo de entrada estimadas para várias resoluções. Esses detalhes ajudam os desenvolvedores a entender a relação entre resolução, taxa de bits e taxa de quadros e a quantidade aproximada de largura de banda que um fluxo de vídeo de entrada específico usa. Por exemplo, uma resolução de 1280x720 transmite a 30 FPS com o cliente usando uma taxa de bits mínima aproximada de 1 MBPS e uma taxa de bits máxima aproximada de 2,5 MBPS.

O SDK de Chamada WebJS dos Serviços de Comunicação do Azure ajusta o tamanho do vídeo com base na largura de banda disponível para garantir uma experiência de comunicação consistente. O SDK de Chamada WebJS ajusta o tamanho do vídeo com base em algoritmos que monitoram as condições da rede. Quando a largura de banda da rede é suficiente, o SDK aumenta a resolução de vídeo para seu nível máximo com base no tamanho da renderização definido na página da Web. Por outro lado, quando a largura de banda é limitada, reduz a resolução de vídeo para evitar buffering e manter uma conexão estável.

A tabela a seguir fornece a escada de resolução e as taxas de bits estimadas para cada resolução e FPS associado que serão entregues nessa resolução.

Height Width FPS Bitrate mínimo (MBps) Bitrate máximo (MBps)
1080 1920 30 1,75 10
720 1280 30 1 2.5
540 960 30 0.5 1,125
360 640 30 0.4 0.57
240 426 15 0,125 0.5
240 320 15 0.2 0.175

Usando a estática de mídia para entender o impacto das restrições de vídeo

Para avaliar e comparar a qualidade do vídeo depois de aplicar as restrições de vídeo, você pode acessar a API MediaStats para obter a resolução de vídeo e informações de taxa de bits do fluxo de envio. As estatísticas de mídia também incluem outras estatísticas granulares relacionadas aos fluxos, como desvios, perda de pacotes, tempo de ida e volta, etc.

const mediaStatsFeature = call.feature(Features.MediaStats);
const mediaStatsCollector = mediaStatsFeature.createCollector();

mediaStatsCollector.on('sampleReported', (sample: SDK.MediaStatsReportSample) => {
    // process the stats for the call.
    console.log(sample);
});

Próximos passos

Para obter mais informações, consulte os seguintes artigos: