Use a API de fallback de áudio para priorizar dinamicamente o áudio de acordo com a qualidade da rede.

Observação: O audioFallbackEnabled propriedade das opções passadas para o OT.initPublisher() O método será descontinuado. Por favor, use o audioFallback.subscriber propriedade do objeto de opções, em vez disso.

Enabling and disabling audio-only fallback

Ao inicializar o objeto Publisher, defina o audioFallback propriedade da opção que você passa para o OT.initPublisher() método:

// Enable publisher audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
  }
});

// Enable publisher audio fallback and disable subscriber audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
    subscriber: false,
  }
});

// Enable subscriber audio fallback and disable publisher audio fallback
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: false,
    subscriber: true,
  }
});

O audioFallback propriedade das opções que você passa para o OT.initPublisher() O método inclui duas propriedades booleanas:

  • publisher — Se deve ser ativado (true) ou desativar (false) opção alternativa de áudio do editor. O padrão é false (o recurso de substituição de áudio da editora está desativado).

  • subscriber — Se deve ser ativado (true) ou desativar (false) alternância de áudio do assinante. Essa configuração se aplica apenas a sessões roteadas (sessões que utilizam o Roteador de mídia de vídeo da Vonage). O recurso de fallback de áudio do assinante não é compatível com sessões retransmitidas. O padrão é true (o recurso de fallback de áudio para assinantes está ativado). Essa configuração substitui a audioFallbackEnabled propriedade, que será descontinuada.

Audio fallback events and UI indications

Quando o recurso de fallback de áudio do Publisher está ativado, o objeto Publisher dispara esses eventos em resposta a mudanças nas condições de qualidade:

  • videoDisableWarning — Enviado quando o editor constata que a qualidade da transmissão se deteriorou; o vídeo será desativado caso a qualidade se deteriore ainda mais.

  • videoDisableWarningLifted — Enviado quando o editor determinar que a qualidade da transmissão melhorou a ponto de o vídeo que está sendo desativado não representar mais um risco imediato.

  • videoDisabled — Enviado quando o Editor determina que a qualidade da transmissão se deteriorou e o transporte de vídeo de saída foi desativado. Observação: enquanto o vídeo estiver desativado, o Editor continua exibindo o vídeo do editor (como a imagem da câmera) na interface do usuário do cliente de publicação.

  • videoEnabled — Enviado com a justificativa: “qualidade” quando o Editor determina que a qualidade da transmissão melhorou e o transporte de vídeo de saída foi reativado.

Por padrão, o Publisher exibe ícones quando o videoDisableWarning e videoDisabled ocorrem eventos.

O style propriedade do options parâmetro para OT.initPublisher() agora inclui um videoDisabledDisplayMode propriedade. Você pode definir a videoDisabledDisplayMode A atribuição dessa propriedade a um dos seguintes valores de string controla a forma como os elementos padrão da interface do usuário são exibidos:

  • auto (padrão) — Os ícones são exibidos automaticamente quando o vídeo está desativado ou corre o risco de ser desativado devido à baixa qualidade da transmissão.

  • off — Os ícones não são exibidos. Você pode exibir suas próprias notificações na interface do usuário com base nos eventos descritos acima.

  • on — Os ícones são exibidos automaticamente quando o vídeo é desativado ou corre o risco de ser desativado devido à baixa qualidade da transmissão.

Por exemplo, o código a seguir desativa os elementos padrão da interface de usuário relacionados ao vídeo desativado e lida com os eventos associados (para que você possa fornecer suas próprias notificações na interface de usuário):

// Enabled
const publisher = OT.initPublisher('target', {
  audioFallback: {
    publisher: true,
  },
  style: {
    videoDisabledDisplayMode: 'off',
  }
});

publisher.on({
  videoDisableWarning: () => {
    // Custom action — for example, add custom UI notification
  },
  videoDisableWarningLifted: () => {
    // Custom action — for example, remove custom UI notification
  },
  videoDisabled: () => {
    // Custom action — for example, add custom UI notification
  },
  videoEnabled: () => {
    // Custom action — for example, remove custom UI notification
  },
});

Você também pode definir o videoDisabledDisplayMode estilizar dinamicamente chamando a função Publisher.setStyle() método:

publisher.setStyle('videoDisabledDisplayMode', 'off');

// Alternately:

publisher.setStyle({
  videoDisabledDisplayMode: 'off',
  // other styles ...
});

Do ponto de vista do assinante, os eventos a seguir indicam que ocorreu um fallback de áudio. Embora esses eventos estejam vinculados ao assinante, eles podem ocorrer tanto devido ao fallback de áudio do assinante quanto como consequência do fallback de áudio do editor. Em outras palavras, a diferença entre o fallback de áudio do editor e do assinante é que, no caso do editor, o cliente editor pode acionar o fallback de áudio com base na degradação de seu próprio fluxo, razão pela qual eventos adicionais do lado do editor são disparados. Para o fallback de áudio do assinante, o Vonage Video Media Router avalia a degradação da rede que afeta o assinante. Em ambos os casos, após o fallback de áudio do editor ou do assinante, eventos do assinante são sempre enviados para indicar que ocorreu um fallback de áudio para o receptor.

Um objeto Subscriber dispara os seguintes eventos relacionados à ativação ou desativação do vídeo na transmissão do assinante:

  • videoEnabled — Enviado quando o vídeo é ativado após ter sido desativado anteriormente.

  • videoDisabled — Enviado quando o vídeo for desativado. O reason A propriedade do objeto de evento indica o motivo pelo qual o vídeo foi desativado. (Esse objeto de evento é um Evento de alteração da ativação de vídeo objeto.)

  • videoDisableWarning — É disparado quando se constata que a qualidade da transmissão se deteriorou e o vídeo será desativado caso a qualidade se deteriore ainda mais. Se a qualidade se deteriorar ainda mais, o Assinante desativa o vídeo e dispara um evento `videoDisabled`. Esse evento também pode ser disparado ao usar o recurso beta de fallback de áudio do editor, caso a qualidade da transmissão do editor tenha se deteriorado.

  • videoDisableWarningLifted — O vídeo foi ativado depois de ter sido desativado anteriormente.

Por padrão, o Assinante exibe um indicador de aviso de vídeo desativado e um indicador de vídeo desativado quando o videoDisableWarning e videoDisableWarningLifted os eventos são acionados. É possível desativar a exibição padrão do indicador configurando o videoDisabledDisplayMode configuração de estilo do objeto Subscriber.

O exemplo a seguir utiliza o videoDisabledDisplayMode configuração de estilo para que o indicador de aviso de vídeo desativado e o indicador de vídeo desativado pisquem a cada segundo quando o videoDisableWarning e videoDisableWarningLifted os eventos são acionados:

const indicatorBlinker = new IndicatorBlinker(subscriber);

const IndicatorBlinker = function(subscriber) {
  const timer;
  const indicatorOn = false;
  subscriber.on({
    videoDisabled: function(event) {
      start();
    },
    videoDisableWarning: function(event) {
      start();
    },
    videoDisableWarningLifted: function(event) {
      stop();
    },
    videoEnabled: function(event) {
      stop();
    }
  });
  const start = function() {
    subscriber.setStyle('videoDisabledDisplayMode', 'on');
    if (timer) {
      clearInterval(timer);
    }
    timer = setInterval(function() {
      if (indicatorOn) {
        subscriber.setStyle('videoDisabledDisplayMode', 'off');
      } else {
        subscriber.setStyle('videoDisabledDisplayMode', 'on');
      }
      indicatorOn = !indicatorOn;
    }, 1000);
    indicatorOn = true;
  };
  const stop = function() {
    if (timer) {
      clearInterval(timer);
    }
  };
}

Você também pode definir o videoDisabledDisplayMode estilo para 'off' e adicione seus próprios elementos de interface de usuário com base no videoDisableWarning, videoDisabled, videoDisableWarningLifted, e videoEnabled eventos.