O objeto `Subscriber` é uma representação do elemento de vídeo local que está reproduzindo um fluxo remoto. O objeto `Subscriber` inclui métodos que permitem desativar e ativar a reprodução de áudio local para o fluxo assinado. O subscribe() método do Sessão O objeto retorna um objeto Subscriber.

Propriedades

Nome Tipo Descrição
element Elemento O elemento DOM HTML que contém o Assinante.
id String O ID DOM do assinante.
stream Transmissão O canal que você está assinando.

Métodos

Nome Descrição
addEventListener(type, listener, context) Obsoleto.
getAudioVolume() → {Number} Retorna o volume de áudio, entre 0 e 100, do Assinante.
`getCaptionsTranslationLanguage() → {CaptionsLanguageCode null}` Retorna o código do idioma de tradução das legendas atual para este assinante.
getImgData() → {String} Retorna a string codificada em base 64 dos dados PNG que representam o vídeo do Assinante.
getRtcStatsReport() → {Promise} Retorna uma promessa que, em caso de sucesso, é resolvida com um objeto RtcStatsReport para o fluxo assinado.
getStats(completionHandler) → {Promise.<SubscriberStats>} Retorna os detalhes sobre a qualidade do fluxo do assinante, incluindo o seguinte: - Total de pacotes de áudio e vídeo perdidos - Total de pacotes de áudio e vídeo recebidos - Total de bytes de áudio e vídeo recebidos - Resolução real do vídeo recebido (por meio de videoWidth() e videoHeight()) - Taxa de quadros real do vídeo decodificado (por meio de video.
getStyle() → {Object} Retorna um objeto que possui as propriedades que definem os controles atuais da interface do usuário do Assinante.
isAudioBlocked() Indica se o áudio do assinante está bloqueado devido à política de reprodução automática de áudio do navegador.
isSubscribedToCaptions() Se o assinante está recebendo legendas.
off(type, handler, context) → {Object} Remove um ou mais manipuladores de eventos.
on(type, handler, context) → {EventDispatcher} Adiciona uma função de manipulador de eventos para um ou mais eventos.
once(type, handler, context) → {Object} Adiciona uma função de manipulador de eventos para um ou mais eventos.
removeEventListener(type, listener, context) Obsoleto.
restrictFrameRate(value) → {Subscriber} Restringe a taxa de quadros do fluxo de vídeo do Assinante, quando você passa true.
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise} Define um MediaProcessorConnector para a trilha de áudio do assinante.
setAudioVolume(value) → {Subscriber} Define o volume do áudio do Assinante, em um intervalo entre 0 e 100.
setCaptionsTranslationLanguage(langCode) Define o idioma preferencial para a tradução das legendas para este assinante.
setPreferredFrameRate(frameRate) → {Promise.<void>} Define a taxa de quadros preferencial do vídeo do assinante.
setPreferredResolution(resolution) → {Promise.<void>} Define a resolução preferencial do vídeo do assinante.
setStyle(style, value) → {Subscriber} Define as propriedades que determinam a aparência de alguns controles da interface do usuário do Assinante.
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise} Define um MediaProcessorConnector para a trilha de vídeo do assinante.
subscribeToAudio(value) → {Subscriber} Ativa e desativa o áudio.
subscribeToCaptions(value) → {Promise.<void>} Ativa e desativa as legendas.
subscribeToVideo(value) → {Subscriber} Ativa e desativa o vídeo.
videoHeight() → {Number} Retorna a altura real recebida, em pixels, do vídeo do Assinante.
videoWidth() → {Number} Retorna a largura real recebida, em pixels, do vídeo do Assinante.

addEventListener(tipo, ouvinte, contexto)

Parâmetros:
Nome Tipo Descrição
type String A sequência de caracteres que identifica o tipo de evento.
listener função A função a ser chamada quando o objeto disparar o evento.
context Objeto (Opcional) Define o valor de this na função do manipulador de eventos.

Obsoleto — uso on() ou uma vez() em vez disso.

Este método registra um método como um ouvinte de evento para um evento específico.

Se um manipulador não estiver registrado para um evento, o evento é ignorado localmente. Se a função de escuta de eventos não existir, o evento é ignorado localmente.

Gera uma exceção se o listener O nome é inválido.

Veja: : - on() - uma vez() - Eventos

getAudioVolume() → {Number}

Retorna o volume de áudio, entre 0 e 100, do Assinante.

Geralmente, esse método é usado em conjunto com o setAudioVolume() método.

Veja: : - setAudioVolume()

Devoluções:

O volume do áudio, entre 0 e 100, do assinante.

getCaptionsTranslationLanguage() → {CaptionsLanguageCode|null}

Retorna o código do idioma de tradução das legendas atual para este assinante. Se nenhum idioma de tradução estiver definido, retorna null para indicar que o idioma padrão está sendo usado.

Este é um recurso em versão beta privada.

Devoluções:

O código de idioma definido atualmente para a tradução das legendas, ou null se for o padrão.

getImgData() → {String}

Retorna a string codificada em base 64 dos dados PNG que representam o vídeo do Assinante.

Você pode usar a string como valor para um esquema de URL de dados passado ao parâmetro src de um arquivo de imagem, conforme mostrado a seguir:

 var imgData = subscriber.getImgData();

 var img = document.createElement("img");
 img.setAttribute("src", "data:image/png;base64," + imgData);
 var imgWin = window.open("about:blank", "Screenshot");
 imgWin.document.write("<body></body>");
 imgWin.document.body.appendChild(img);
Devoluções:

A string codificada em base-64. Retorna uma string vazia se não houver vídeo.

getRtcStatsReport() → {Promise}

Retorna uma promessa que, em caso de sucesso, é resolvida com um objeto RtcStatsReport para o fluxo assinado. (Consulte RTCStatsReport.)

A Promessa será rejeitada nas seguintes condições:

Veja: : - Publisher.getRtcStatsReport()

Devoluções:

Uma promessa que é resolvida quando a operação é concluída com sucesso. Se ocorrer um erro, a promessa é rejeitada.

getStats(completionHandler) → {Promise.<SubscriberStats>}

Retorna os detalhes sobre a qualidade do fluxo do assinante, incluindo o seguinte:

  • Total de pacotes de áudio e vídeo perdidos
  • Total de pacotes de áudio e vídeo recebidos
  • Total de bytes de áudio e vídeo recebidos
  • Resolução real do vídeo recebido (via videoWidth() e videoHeight())
  • Taxa de quadros real do vídeo decodificado (via video.decodedFrameRate)

Você pode publicar um stream de teste, assinar esse stream (no cliente de publicação) e usar esse método para verificar sua qualidade. Com base na qualidade do stream, é possível determinar qual resolução de vídeo é suportada e se as condições permitem a transmissão de vídeo ou áudio. Em seguida, você pode publicar um fluxo adequado, com base nos resultados. Ao usar esse método para testar um fluxo publicado pelo seu próprio cliente, defina o testNetwork propriedade para true nas opções que você passa para o Session.subscribe() método. Por exemplo, consulte o teste-da-rede-opentok projeto no GitHub.

Você também pode usar essas estatísticas para fazer com que um assinante passe a receber apenas áudio caso a perda de pacotes de áudio atinga um determinado limite. Se optar por fazer isso, você deve definir o subscriber propriedade do audioFallback opor-se a false ao inicializar objetos do Publisher para a sessão. Isso impede que o Vonage Video Media Router utilize sua própria implementação de alternância para modo somente áudio. (Consulte a documentação do OT.initPublisher() método.)

Parâmetros:
Nome Tipo Descrição
completionHandler função Uma função opcional que recebe os seguintes parâmetros: - error (Erro) — A propriedade `error` é definida caso o cliente não esteja conectado. Após a conclusão bem-sucedida de uma chamada ao método, essa propriedade fica indefinida. - stats (Objeto) — Um objeto com as seguintes propriedades: - audio.bytesReceived (Número) — O número total de bytes de áudio recebidos pelo assinante - audio.packetsLost (Número) — Total de pacotes de áudio que não chegaram ao assinante - audio.packetsReceived (Número) — O número total de pacotes de áudio recebidos pelo assinante - timestamp (Número) — O carimbo de data/hora, em milissegundos desde a época Unix, correspondente ao momento em que essas estatísticas foram coletadas - video.bytesReceived (Número) — O total de bytes de vídeo recebidos pelo assinante - video.packetsLost (Número) — O número total de pacotes de vídeo que não chegaram ao assinante - video.packetsReceived (Número) — O número total de pacotes de vídeo recebidos pelo assinante - video.frameRate (Número) — A taxa média atual de quadros do vídeo. Essa propriedade está obsoleta e será removida no futuro. Em vez disso, use a video.decodedFrameRate propriedade. - video.decodedFrameRate (Número) — A taxa de quadros do vídeo decodificado (em quadros por segundo) - video.codec (String) — O codec de vídeo utilizado por este assinante - video.pauseCount (Número) — Número de vezes que a reprodução do vídeo do assinante foi pausada. Uma pausa é detectada se nenhum quadro for renderizado por mais de 5 segundos - video.totalPausesDuration (Número) — Duração acumulada (em milissegundos) de todas as pausas detectadas na reprodução do vídeo - video.freezeCount (Número) — Número de vezes que o vídeo do assinante travou. Um travamento é definido com base no Especificação de estatísticas do WebRTC - video.totalFreezesDuration (Número) — Duração acumulada (em milissegundos) de todos os travamentos detectados na reprodução de vídeo do assinante - senderStats.connectionMaxAllocatedBitrate (Número) — A taxa de bits máxima que pode ser estimada para a conexão do remetente, em bps (bits por segundo) - senderStats.connectionEstimatedBandwidth (Número) — A estimativa atual da largura de banda da conexão do remetente, em bps (bits por segundo) - transport.connectionEstimatedBandwidth (Número) — A largura de banda disponível estimada para a conexão local, em bits por segundo (bps) - transport.networkCondition (String) — Estado atual da conexão local. Os valores possíveis são: unknown, critical, warning, fair, good e excellent. - transport.networkConditionReason (String) — Principal motivo que afeta as condições da rede local. Os valores possíveis são: none, unknown, bandwidth e packetLoss. - remotePublisherTransport.connectionEstimatedBandwidth (Número) — A largura de banda disponível estimada para a conexão do editor remoto, em bits por segundo (bps) - remotePublisherTransport.networkCondition (String) — Estado atual da conexão com o editor remoto. Os valores possíveis são: unknown, critical, warning, fair, good e excellent. - remotePublisherTransport.networkConditionReason (String) — Principal motivo que afeta as condições da rede do editor remoto. Os valores possíveis são: none, unknown, bandwidth e packetLoss. - networkDegradationSource (String) — Em caso de degradação da rede, indica qual lado causou o problema. Os valores possíveis são: none, bothOrUnclear, local e remote.

Veja: : - Publisher.getStats() - Publisher.getRtcStatsReport()

Devoluções:

getStyle() → {Object}

Retorna um objeto que possui as propriedades que definem os controles atuais da interface do usuário do Assinante. É possível modificar as propriedades desse objeto e passar o objeto para o setStyle() método do objeto Subscriber. (Consulte a documentação de setStyle() (para ver os estilos que definem esse objeto.)

Veja: : - setStyle()

Devoluções:

O objeto que define os estilos do Assinante.

isAudioBlocked()

Indica se o áudio do assinante está bloqueado devido à política de reprodução automática de áudio do navegador.

Veja: : - OT.unblockAudio() - O audioBlocked e audioUnblocked Eventos para assinantes - O style.audioBlockedDisplayMode propriedade do options parâmetro do Session.subscribe() método

isSubscribedToCaptions()

Se o assinante está recebendo legendas. Essa propriedade pode mudar se o assinante ativar ou desativar as legendas (chamando a função Subscriber.subscribeToCaptions() método). O valor padrão é o hasCaptions propriedade do editor do fluxo no momento da inicialização do assinante (consulte o Propriedade Stream.hasCaptions).

Você pode definir o valor inicial dessa propriedade configurando o subscribeToCaptions propriedade do options parâmetro do Session.subscribe() método.

Veja: : - Subscriber.subscribeToCaptions() - Session.subscribe()

off(tipo, manipulador, contexto) → {Object}

Remove um ou mais manipuladores de eventos.

Se você passar o nome de um evento e um método manipulador, o manipulador será removido para esse evento:

obj.off("eventName", eventHandler);

Se você passar vários nomes de eventos e um método manipulador, o manipulador será removido para esses eventos:

obj.off("eventName1 eventName2", eventHandler);

Se você passar um nome de evento (ou nomes) e não método de manipulador, todos os manipuladores são removidos para esses eventos:

obj.off("event1Name event2Name");

Se você não passar nenhum argumento, todos os manipuladores de eventos são removidos para todos os eventos desencadeados pelo objeto:

obj.off();

O método também suporta uma sintaxe alternativa, na qual o primeiro parâmetro é um objeto que é um mapa de nomes de eventos e funções de tratamento, e o segundo parâmetro (opcional) é o contexto para isso em cada função de tratamento:

obj.off(
   {
      eventName1: event1Handler,
      eventName2: event2Handler
   });
Parâmetros:
Nome Tipo Descrição
type String (Opcional) A sequência de caracteres que identifica o tipo de evento. É possível usar um espaço para especificar vários eventos, como em “accessAllowed accessDenied accessDialogClosed”. Se você não passar nenhum type valor (ou outros argumentos), todos os manipuladores de eventos são removidos do objeto.
handler função (Opcional) A função manipuladora de eventos a ser removida. A manipuladora deve ser o mesmo objeto de função que foi passado para on(). Tenha cuidado com auxiliares como bind() que retornam uma nova função quando chamadas. Se você não passar nenhum handler, todos os manipuladores de evento são removidos para o evento especificado type.
context Objeto (Opcional) Se você especificar um context, o manipulador de eventos é removido para todos os eventos especificados e manipuladores que utilizam o contexto especificado. (O contexto deve corresponder ao contexto passado para on().)

Veja: : - on() - uma vez() - Eventos

Devoluções:

O objeto que disparou o evento.

on(tipo, manipulador, contexto) → {EventDispatcher}

Adiciona uma função de manipulador de eventos para um ou mais eventos.

O código a seguir adiciona um manipulador de eventos para um evento:

obj.on("eventName", function (event) {
    // This is the event handler.
});

Se você passar vários nomes de eventos e um método manipulador, o manipulador será registrado para cada um desses eventos:

obj.on("eventName1 eventName2",
       function (event) {
           // This is the event handler.
       });

Você também pode passar um terceiro context parâmetro (que é opcional) para definir o valor de this no método do manipulador:

obj.on("eventName",
       function (event) {
           // This is the event handler.
       },
       obj);

O método também suporta uma sintaxe alternativa, na qual o primeiro parâmetro é um objeto que representa um mapa de nomes de eventos e funções de tratamento, e o segundo parâmetro (opcional) é o contexto para isso em cada função de tratamento:

obj.on(
   {
      eventName1: function (event) {
              // This is the handler for eventName1.
          },
      eventName2:  function (event) {
              // This is the handler for eventName2.
          }
   },
   obj);

Se você não adicionar um manipulador para um evento, o evento será ignorado localmente.

Parâmetros:
Nome Tipo Descrição
type String A string que identifica o tipo de evento. É possível especificar vários nomes de eventos nessa string, separando-os por um espaço. O manipulador de eventos processará cada um desses eventos.
handler função A função de tratamento responsável por processar o evento. Essa função recebe o objeto do evento como parâmetro.
context Objeto (Opcional) Define o valor de this na função do manipulador de eventos.

Veja: : - off() - uma vez() - Eventos

Devoluções:

O objeto EventDispatcher.

once(tipo, manipulador, contexto) → {Object}

Adiciona uma função de manipulador de eventos para um ou mais eventos. Assim que o manipulador for chamado, o método de manipulador especificado é removido como manipulador desse evento. (Quando você usa o on() método para adicionar um manipulador de eventos; o manipulador é não é removido quando é chamado.) O once() O método é equivalente a chamar o on() método e chamada off() na primeira vez que o manipulador for chamado.

O código a seguir adiciona um manipulador de evento único para um evento:

obj.once("eventName", function (event) {
   // This is the event handler.
});

Se você passar vários nomes de eventos e um método de tratamento, o tratamento será registrado para cada um desses eventos:

obj.once("eventName1 eventName2"
         function (event) {
             // This is the event handler.
         });

Você também pode passar um terceiro context parâmetro (que é opcional) para definir o valor de this no método do manipulador:

obj.once("eventName",
         function (event) {
             // This is the event handler.
         },
         obj);

O método também suporta uma sintaxe alternativa, na qual o primeiro parâmetro é um objeto que é um mapa de nomes de eventos e funções de tratamento, e o segundo parâmetro (opcional) é o contexto para isso em cada função de tratamento:

obj.once(
   {
      eventName1: function (event) {
                 // This is the event handler for eventName1.
          },
      eventName2:  function (event) {
                 // This is the event handler for eventName1.
          }
   },
   obj);
Parâmetros:
Nome Tipo Descrição
type String A string que identifica o tipo de evento. É possível especificar vários nomes de eventos nessa string, separando-os por um espaço. O manipulador de eventos processará a primeira ocorrência desses eventos. Após o primeiro evento, o manipulador é removido (para todos os eventos especificados).
handler função A função de tratamento responsável por processar o evento. Essa função recebe o objeto do evento como parâmetro.
context Objeto (Opcional) Define o valor de this na função do manipulador de eventos.

Veja: : - on() - off() - Eventos

Devoluções:

O objeto que disparou o evento.

removeEventListener(tipo, ouvinte, contexto)

Parâmetros:
Nome Tipo Descrição
type String A sequência de caracteres que identifica o tipo de evento.
listener função A função do ouvinte de evento a ser removida.
context Objeto (Opcional) Se você especificar um context, o manipulador de eventos é removido para todos os eventos especificados e para todos os ouvintes de eventos que utilizam o contexto especificado. (O contexto deve corresponder ao contexto passado para addEventListener().)

Obsoleto — uso off() em vez disso.

Remove um ouvinte de evento para um evento específico.

Gera uma exceção se o listener O nome é inválido.

Veja: : - off() - Eventos

restrictFrameRate(valor) → {Assinante}

Restringe a taxa de quadros do fluxo de vídeo do Assinante, quando você passa true. Ao passar false, a taxa de quadros do fluxo de vídeo não é limitada.

Quando a taxa de quadros é limitada, o quadro de vídeo do Assinante será atualizado uma vez ou menos por segundo.

Esse recurso está disponível apenas em sessões que utilizam o Media Router da Video API da Vonage (sessões com o modo de mídia (definido como “routed”), e não em sessões cujo modo de mídia esteja definido como “relayed”. Em sessões “relayed”, a chamada a este método não produz nenhum efeito.

A restrição da taxa de quadros do assinante traz os seguintes benefícios:

  • Isso reduz o uso da CPU.
  • Isso reduz o consumo de largura de banda da rede.
  • Isso permite que você assine mais canais simultaneamente.

A redução da taxa de quadros de um assinante não afeta a taxa de quadros do vídeo em outros clientes.

Parâmetros:
Nome Tipo Descrição
value Booleano Se deve restringir a taxa de quadros do vídeo do assinante (true) ou não (false).
Devoluções:

O objeto `Subscriber`. Isso permite encadear chamadas de métodos, como no exemplo a seguir:

mySubscriber.restrictFrameRate(false).subscribeToAudio(true);

setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Define um MediaProcessorConnector para a trilha de áudio do assinante. Um assinante pode ter apenas uma trilha de áudio MediaProcessorConnector aplicado de uma só vez. Ao definir um novo conector, o conector de áudio definido anteriormente é removido.

Observação: Os MediaProcessors são compatíveis apenas com as versões mais recentes do Chrome, Electron, Opera, Edge, Samsung Internet e WebView para Android. Eles não são compatíveis com outros navegadores (que não sejam baseados no Chromium) nem no iOS. Você pode verificar se o cliente suporta esse recurso chamando o OT.hasMediaProcessorSupport('áudio') método.

A chamada a este método resulta em um erro (a Promise retornada pelo método é rejeitada) nas seguintes condições:

  • Ocorreu um erro ao obter a faixa processada do MediaProcessorConnector.

Você pode limpar o conector atual chamando este método com null.

Para obter mais informações, consulte o Utilizando a biblioteca do Vonage Media Processor guia do desenvolvedor.

Parâmetros:
Nome Tipo Descrição
mediaProcessorConnector MediaProcessorConnector Uma instância de MediaProcessorConnector. Consulte o Documentação da biblioteca do Vonage Media Processor.

Veja: : - OT.hasMediaProcessorSupport('áudio')

Devoluções:

Uma promessa que é resolvida quando a operação é concluída com sucesso. Se ocorrer um erro, a promessa é rejeitada e nenhum conector é definido.

setAudioVolume(valor) → {Assinante}

Define o volume do áudio do Assinante, em um intervalo entre 0 e 100.

Você pode definir o volume inicial ao chamar a função Session.subscribe() método. Passe um audioVolume propriedade do properties parâmetro do método.

Parâmetros:
Nome Tipo Descrição
value Número O volume do áudio, entre 0 e 100.

Veja: : - getAudioVolume() - Session.subscribe()

Devoluções:

O objeto `Subscriber`. Isso permite encadear chamadas de métodos, como no exemplo a seguir:

mySubscriber.setAudioVolume(50).setStyle(newStyle);

setCaptionsTranslationLanguage(langCode)

Define o idioma preferencial para a tradução das legendas para este assinante.

Este é um recurso em versão beta privada.

Parâmetros:
Nome Tipo Descrição
langCode Código de idioma das legendas null O código do idioma para o qual as legendas devem ser traduzidas. Passar null usar o idioma padrão da sessão (sem tradução).

setPreferredFrameRate(frameRate) → {Promise.<void>}

Define a taxa de quadros preferencial do vídeo do assinante.

Reduzir a taxa de quadros preferencial diminui a qualidade do vídeo no cliente assinante, mas também reduz o uso da rede e da CPU. Pode ser interessante usar uma taxa de quadros mais baixa para um assinante de uma transmissão que seja menos importante do que outras transmissões.

Esse método só se aplica ao assinar um fluxo que utilize o recurso de vídeo escalável. O vídeo escalável está disponível:

  • Apenas nas sessões que utilizam o Media Router da Video API da Vonage (sessões com o mídia modo (definido como “roteado”).
  • Apenas para transmissões publicadas por clientes que oferecem suporte a vídeo escalável: clientes que utilizam o SDK para iOS da Video API da Vonage (em determinados dispositivos), o SDK para Android da Video API da Vonage (em determinados dispositivos) ou o OpenTok.js no Chrome e no Safari.

Em transmissões que não utilizam vídeo escalável, a chamada a este método não produz nenhum efeito.

Observação: A taxa de quadros para transmissões de vídeo escaláveis se ajusta automaticamente para cada assinante, com base nas condições da rede e no uso da CPU, mesmo que você não chame este método. Chame este método se desejar definir uma taxa de quadros máxima para este assinante.

Nem todas as taxas de quadros estão disponíveis para um assinante. Ao definir a taxa de quadros preferencial para o assinante, o OpenTok.js seleciona a melhor taxa de quadros disponível que corresponda à sua configuração. As taxas de quadros disponíveis dependem do valor da propriedade do objeto Assinante stream.frameRate propriedade, que representa o valor máximo disponível para o fluxo. As taxas de quadros efetivamente disponíveis dependem, dinamicamente, dos recursos de rede e da CPU disponíveis para o emissor e o assinante.

Você pode definir a taxa de quadros inicial preferencial a ser usada configurando o preferredFrameRate propriedade do options objeto que você passa para o Session.subscribe() método.

Parâmetros:
Nome Tipo Descrição
frameRate Número Defina este valor para a taxa de quadros desejada (em quadros por segundo). Defina este valor para null para remover a taxa de quadros preferencial, e o cliente utilizará a taxa de quadros mais alta disponível.

Veja: : - Subscriber.setPreferredResolution() - Session.subscribe()

Devoluções:

Uma promessa que é resolvida quando a taxa de quadros preferencial é aplicada com sucesso, ou é rejeitada com um Error nas seguintes condições:

  • O assinante foi excluído ou ainda não está conectado a um editor.
  • A sessão utiliza o modo de mídia ponto a ponto, que não oferece suporte a esse recurso.
  • A atualização do fluxo subjacente falha.

setPreferredResolution(resolução) → {Promise.<void>}

Define a resolução preferencial do vídeo do assinante.

Reduzir a resolução preferencial diminui a qualidade do vídeo no cliente assinante, mas também reduz o uso da rede e da CPU. Você pode optar por usar uma resolução mais baixa com base nas dimensões do vídeo do assinante na página da web. Você pode optar por usar uma resolução menor para um assinante de uma transmissão que seja menos importante (e menor) do que outras transmissões.

Esse método só se aplica ao assinar um fluxo que utilize o recurso de vídeo escalável. O vídeo escalável está disponível:

  • Apenas nas sessões que utilizam o Media Router da Video API da Vonage (sessões com o mídia modo (definido como “roteado”).
  • Apenas para transmissões publicadas por clientes que oferecem suporte a vídeo escalável: clientes que utilizam o SDK para iOS da Video API da Vonage (em determinados dispositivos), o SDK para Android da Video API da Vonage (em determinados dispositivos) ou o OpenTok.js no Chrome e no Safari.

Em transmissões que não utilizam vídeo escalável, a chamada a este método não produz nenhum efeito.

Observação: A resolução das transmissões de vídeo escaláveis é ajustada automaticamente para cada assinante, com base nas condições da rede e no uso da CPU, mesmo que você não chame este método. Chame este método se desejar definir uma resolução máxima para este assinante.

Em transmissões que não utilizam vídeo escalável, a chamada a este método não produz nenhum efeito.

Nem todas as taxas de quadros estão disponíveis para um assinante. Ao definir a resolução preferencial para o assinante, o OpenTok.js seleciona a melhor resolução disponível que corresponda à sua configuração. As resoluções disponíveis dependem do valor da propriedade do objeto Assinante stream.resolution propriedade, que representa a resolução máxima disponível para o stream. As resoluções efetivamente disponíveis dependem, dinamicamente, dos recursos de rede e da CPU disponíveis para o emissor e o assinante.

Você pode definir a resolução preferencial inicial a ser usada configurando o preferredResolution propriedade do options objeto que você passa para o Session.subscribe() método.

Observação: Se você definir a resolução preferencial inicial como "auto" ao ligar Session.subscribe(), ligando para setPreferredResolution() falha sem exibir nenhuma mensagem, e você receberá um aviso.

Parâmetros:
Nome Tipo Descrição
resolution Objeto Defina isso como um objeto com duas propriedades: width e height (ambos os números), como, por exemplo, {width: 320, height: 240}. Defina isso como null para remover a resolução preferencial, e o cliente utilizará a resolução mais alta disponível.

Veja: : - Subscriber.setPreferredFrameRate() - Session.subscribe()

Devoluções:

Uma promessa que é resolvida quando a resolução preferencial for aplicada com sucesso, ou que é rejeitada com um Error nas seguintes condições:

  • O assinante foi inicializado com preferredResolution: 'auto'.
  • O valor 'auto' é passado diretamente para esse método.
  • O assinante foi excluído ou ainda não está conectado a um editor.
  • A sessão utiliza o modo de mídia ponto a ponto, que não oferece suporte a esse recurso.

setStyle(style, value) → {Assinante}

Define as propriedades que determinam a aparência de alguns controles da interface do usuário do Assinante.

É possível passar um ou dois parâmetros para esse método.

Se você passar um parâmetro, style, trata-se de um objeto que possui as seguintes propriedades:

  • audioBlockedDisplayMode (String) — Se deve ser exibido o ícone padrão de áudio bloqueado na seção “Assinantes” (em navegadores nos quais a reprodução automática de áudio está bloqueada). Os valores possíveis são: "auto" (por padrão, o ícone é exibido quando o áudio está desativado) e "off" (o ícone não é exibido). Defina isso como "off" se você quiser exibir seu próprio elemento de interface do usuário indicando que o áudio está bloqueado. Em resposta a um elemento HTML que dispara um click evento, você pode chamar o OT.unblockAudio() método para iniciar a reprodução de áudio neste e em todos os outros assinantes bloqueados.
  • audioLevelDisplayMode (String) — Como exibir o indicador de nível de áudio. Os valores possíveis são: "auto" (o indicador é exibido quando o vídeo está desativado), "off" (o indicador não é exibido), e "on" (o indicador fica sempre visível).
  • backgroundImageURI (String) — Um URI de uma imagem a ser exibida como imagem de fundo quando um vídeo não estiver sendo exibido. (Um vídeo pode não ser exibido se você chamar subscribeToVideo(false) no objeto Publisher). É possível passar um URI http ou https para o caminho de um arquivo PNG, JPEG ou GIF não animado. Também é possível usar o data Esquema URI (em vez de http ou https) e passar dados PNG criptografados em base-64, como os obtidos a partir do Subscriber.getImgData() método (por exemplo, você poderia chamar mySubscriber.setStyle("backgroundImageURI", mySubscriber.getImgData())). Se a URL ou os dados da imagem forem inválidos, a propriedade será ignorada (a tentativa de definir a imagem falhará sem exibir nenhuma mensagem). O plano de fundo atual será removido se nenhuma imagem for passada e as iniciais serão exibidas, caso tenham sido definidas anteriormente.
  • buttonDisplayMode (String) — Como exibir os controles do alto-falante. Os valores possíveis são: "auto" (os controles são exibidos quando a transmissão é exibida pela primeira vez e quando o usuário passa o mouse sobre a tela), "off" (os controles não são exibidos), e "on" (os controles são sempre exibidos).
  • nameDisplayMode (String) — Se o nome do stream deve ser exibido. Os valores possíveis são: "auto" (o nome é exibido quando o stream é exibido pela primeira vez e quando o usuário passa o mouse sobre a exibição), "off" (o nome não é exibido), e "on" (o nome é sempre exibido).
  • videoDisabledDisplayMode (String) — Se deve exibir o indicador de vídeo desativado e os ícones de aviso de vídeo desativado para um Assinante. Esses ícones indicam que o vídeo foi desativado (ou corre o risco de ser desativado, no caso do ícone de aviso) devido à baixa qualidade da transmissão. Os valores possíveis são: "auto" (os ícones aparecem automaticamente quando o vídeo exibido é desativado ou corre o risco de ser desativado devido à baixa qualidade da transmissão), "off" (não exibir os ícones), e "on" (exibir os ícones).

Por exemplo, o código a seguir passa um parâmetro para o método:

mySubscriber.setStyle({nameDisplayMode: "off"});

Se você passar dois parâmetros, style e value, são pares chave-valor que definem uma propriedade do estilo de exibição. Por exemplo, o código a seguir passa dois valores de parâmetro para o método:

mySubscriber.setStyle("nameDisplayMode", "off");

Você pode definir as configurações iniciais ao chamar a função Session.subscribe() método. Passe um style propriedade como parte do properties parâmetro do método.

O objeto OT despacha um exception mesmo que você passe um estilo inválido para o método. O code A propriedade do objeto ExceptionEvent está definida como 1011.

Parâmetros:
Nome Tipo Descrição
style Objeto Pode ser um objeto contendo propriedades que definem o estilo ou uma String que defina essa única propriedade de estilo a ser definida.
value String O valor a ser definido para o style foi passado. Passe um valor para este parâmetro somente se o valor do style O parâmetro é uma String.

Veja: : - getStyle() - setStyle() - Session.subscribe()

Devoluções:

O objeto Subscriber.

setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Define um MediaProcessorConnector para a trilha de vídeo do assinante. Um assinante pode ter apenas uma trilha de vídeo MediaProcessorConnector aplicado de uma só vez. Ao definir um novo conector, o conector de vídeo definido anteriormente é removido.

Observação: Os MediaProcessors são compatíveis apenas com as versões mais recentes do Chrome, Firefox, Electron, Opera, Edge, Samsung Internet, WebView do Android e as versões mais recentes do Safari e do WebView do iOS. Você pode verificar se o cliente é compatível com esse recurso chamando o OT.hasMediaProcessorSupport('vídeo') método.

A chamada a este método resulta em um erro (a Promise retornada pelo método é rejeitada) nas seguintes condições:

  • Não há dispositivos de entrada de vídeo (câmeras) disponíveis.
  • Ocorreu um erro ao obter o vídeo do dispositivo de entrada de vídeo.
  • Ocorreu um erro ao obter a faixa processada do MediaProcessorConnector.

Você pode limpar o conector atual chamando este método com null.

Para obter mais informações, consulte o Utilizando a biblioteca do Vonage Media Processor guia do desenvolvedor.

Parâmetros:
Nome Tipo Descrição
mediaProcessorConnector MediaProcessorConnector Uma instância de MediaProcessorConnector. Consulte o Documentação da biblioteca do Vonage Media Processor.

Veja: : - OT.hasMediaProcessorSupport('vídeo')

Devoluções:

Uma promessa que é resolvida quando a operação é concluída com sucesso. Se ocorrer um erro, a promessa é rejeitada e nenhum conector é definido.

subscribeToAudio(valor) → {Assinante}

Ativa e desativa o áudio. Inicia a assinatura do áudio (se estiver disponível e, no momento, não estiver sendo assinado) quando o value é true; interrompe a assinatura do áudio (caso esteja sendo assinado no momento) quando o value é false.

Observação: Esse método afeta apenas a reprodução local do áudio. Ele não tem impacto sobre o áudio de outras conexões inscritas no mesmo fluxo. Se o Editor não estiver publicando áudio, ativar o áudio do Assinante não terá efeito prático algum.

Parâmetros:
Nome Tipo Descrição
value Booleano Se deve começar a se inscrever no canal de áudio (true) ou não (false).

Veja: : - subscribeToVideo() - Session.subscribe() - StreamPropertyChangedEvent

Devoluções:

O objeto `Subscriber`. Isso permite encadear chamadas de métodos, como no exemplo a seguir:

mySubscriber.subscribeToAudio(true).subscribeToVideo(false);

subscribeToCaptions(valor) → {Promise.<void>}

Ativa e desativa as legendas. Inicia a assinatura das legendas (se estiverem disponíveis e, no momento, não estiverem sendo assinadas) quando o value é true; interrompe a assinatura das legendas (caso já esteja assinada) quando o value é false.

O valor inicial pode ser definido configurando o subscribeToCaptions propriedade do options parâmetro do Session.subscribe() método. O valor padrão é o hasCaptions propriedade do editor do fluxo no momento da inicialização do assinante (consulte o Propriedade Stream.hasCaptions).

Para obter mais informações, consulte o Legendas em tempo real guia do desenvolvedor.

Parâmetros:
Nome Tipo Descrição
value Booleano Se deseja começar a receber legendas (true) ou não (false).

Veja: : - isSubscribedToCaptions() - legendaRecebido evento - StreamPropertyChangedEvent - Session.subscribe()

Devoluções:

Uma promessa que é resolvida quando o servidor confirma a atualização do canal de legenda. A promessa é rejeitada se ocorrer um erro durante o envio da atualização.

subscribeToVideo(value) → {Assinante}

Ativa e desativa o vídeo. Inicia a assinatura do vídeo (se estiver disponível e ainda não estiver sendo assistido) quando o value é true; cancela a inscrição no vídeo (caso já esteja inscrito) quando o value é false.

Observação: Esse método afeta apenas a reprodução local do vídeo. Ele não tem impacto sobre o vídeo para outras conexões que estejam assinando o mesmo fluxo. Se o Editor não estiver publicando o vídeo, ativar o vídeo do Assinante não terá efeito prático algum.

Parâmetros:
Nome Tipo Descrição
value Booleano Se devo começar a me inscrever no canal de vídeo (true) ou não (false).

Veja: : - subscribeToAudio() - Session.subscribe() - StreamPropertyChangedEvent

Devoluções:

O objeto `Subscriber`. Isso permite encadear chamadas de métodos, como no exemplo a seguir:

mySubscriber.subscribeToVideo(true).subscribeToAudio(false);

videoHeight() → {Number}

Retorna a altura real recebida, em pixels, do vídeo do assinante. Isso reflete a resolução decodificada do fluxo de vídeo recebido, que pode diferir da resolução de captura do editor devido à adaptação da rede ou da CPU, ou à seleção da camada de vídeo escalável. Use este método para observar a resolução real que está sendo renderizada para este assinante.

Para obter mais informações sobre o monitoramento da qualidade dos cursos d’água, consulte o Observabilidade do cliente guia do desenvolvedor.

Veja: : - Subscriber.getStats()

Devoluções:

A altura real recebida, em pixels, do vídeo do Assinante.

videoWidth() → {Number}

Retorna a largura real recebida, em pixels, do vídeo do assinante. Isso reflete a resolução decodificada do fluxo de vídeo recebido, que pode diferir da resolução de captura do editor devido à adaptação de rede/CPU ou à seleção da camada de vídeo escalável. Use este método para observar a resolução real que está sendo renderizada para este assinante.

Para obter mais informações sobre o monitoramento da qualidade dos cursos d’água, consulte o Observabilidade do cliente guia do desenvolvedor.

Veja: : - Subscriber.getStats()

Devoluções:

A largura real recebida, em pixels, do vídeo do assinante.

Eventos

audioBlocked

É disparado quando o áudio do assinante é bloqueado devido à política de reprodução automática do navegador.

Veja: : - OT.unblockAudio() - Subscriber.isAudioBlocked() - O audioUnblocked evento - O style.audioBlockedDisplayMode propriedade do options parâmetro do Session.subscribe() (método)

audioLevelUpdated

É disparado periodicamente para indicar o nível de áudio do assinante. O evento é disparado até 60 vezes por segundo, dependendo do navegador. O audioLevel A propriedade do evento é o nível de áudio, que varia de 0 a 1,0. Consulte Evento de atualização do nível de áudio para mais informações.

O exemplo a seguir ajusta o valor de um elemento de medidor que exibe o volume do assinante. Observe que o nível de áudio é ajustado logaritmicamente e que é aplicada uma média móvel:

var movingAvg = null;
subscriber.on('audioLevelUpdated', function(event) {
  if (movingAvg === null || movingAvg <= event.audioLevel) {
    movingAvg = event.audioLevel;
  } else {
    movingAvg = 0.7 * movingAvg + 0.3 * event.audioLevel;
  }

  // 1.5 scaling to map the -30 - 0 dBm range to [0,1]
  var logLevel = (Math.log(movingAvg) / Math.LN10) / 1.5 + 1;
  logLevel = Math.min(Math.max(logLevel, 0), 1);
  document.getElementById('subscriberMeter').value = logLevel;
});

Este exemplo mostra o algoritmo utilizado pelo indicador de nível de áudio padrão exibido em um Assinante apenas de áudio.

Veja: : - Evento de atualização do nível de áudio

audioUnblocked

É disparado quando o áudio do assinante é desbloqueado após ter sido pausado devido à política de reprodução automática do navegador.

O áudio do assinante é desbloqueado quando ocorre qualquer uma das seguintes situações:

  • O usuário clica no ícone padrão de reprodução de áudio do assinante
  • O OT.unblockAudio() O método é chamado em resposta a um elemento HTML que dispara um click evento (caso você tenha desativado o ícone padrão de reprodução de áudio)
  • O cliente local obtém acesso à câmera ou ao microfone (por exemplo, em resposta a uma chamada bem-sucedida para OT.initPublisher()).

Veja: : - OT.unblockAudio() - O audioBlocked evento - O style.audioBlockedDisplayMode propriedade do options parâmetro do Session#subscribe() (método)

legendaRecebido

É enviado quando o assinante recebe uma legenda do serviço de transcrição. Primeiro, você deve ligar para o Subscriber.subscribeToCaptions() método (e o emissor do stream deve estar transmitindo legendas) antes de você receber captionReceived eventos.

Veja: : - CaptionReceivedEvent - Legendas em tempo real

conectado

Enviado quando o fluxo do assinante é retomado, após o assinante enviar um disconnected evento.

Veja: : - evento isolado - Evento

destruído

É disparado quando o elemento “Subscriber” é removido do DOM HTML. Quando esse evento é disparado, você pode optar por ajustar ou remover elementos do DOM HTML relacionados ao assinante.

Para evitar que o Subscriber seja removido do DOM quando o stream for destruído, fique atento ao Evento streamDestroyed enviado pelo objeto Session. O streamDestroyed O evento disparado pelo objeto Session é cancelável, e chamar o preventDefault() O método do objeto de evento impede que os assinantes do fluxo sejam removidos do DOM HTML.

Veja: : - Evento

desconectado

Enviado quando a transmissão do assinante é interrompida.

Em resposta a esse evento, talvez seja interessante exibir uma notificação na interface do usuário, para informar ao usuário que o fluxo de áudio e vídeo está temporariamente desconectado e que o aplicativo está tentando se reconectar a ele.

Se o cliente se reconectar ao fluxo, o objeto Subscriber dispara um connected evento. Caso contrário, se o cliente não conseguir se reconectar ao fluxo, o objeto Subscriber dispara um destroyed evento.

Veja: : - evento relacionado - Evento

encryptionSecretMatch

É enviado quando a mídia de um assinante pode ser descriptografada porque os segredos de criptografia coincidem. Isso só ocorre quando houve, anteriormente, uma incompatibilidade de segredos.

Veja: : - Evento - encryptionSecretMismatch evento - OT.initSession - session.setEncryptionSecret

encryptionSecretMismatch

Enviado quando a mídia de um assinante não pode ser descriptografada porque os segredos de criptografia não coincidem. Nesse cenário, o usuário continuará assinando o stream, mas o vídeo ficará preto e o áudio ficará mudo. Considera-se uma boa prática informar ao usuário o motivo pelo qual a mídia não pode ser visualizada.

Veja: : - Evento - encryptionSecretMatch evento - OT.initSession - session.setEncryptionSecret

mediaStreamAvailable

Enviado quando o MediaStream estiver disponível.

Veja: : - Evento

networkConditionChanged

É enviado quando é detectada uma alteração nas condições de rede do assinante ou do editor remoto.

A implementação atual aciona esse evento somente quando a condição da rede muda para qualquer um dos lados.

Este evento difere de videoDisabled e videoEnabled eventos, na medida em que relata alterações na integridade da rede, em vez de alterações no estado da trilha de vídeo do assinante. As Applications podem usar esse evento para responder a problemas de rede, como atualizar a interface do usuário, registrar dados de telemetria ou acionar um comportamento adaptativo.

As propriedades desse evento são:

  • reason — Indica a causa do evento. Atualmente, será sempre "networkConditionChanged"
  • stats — Objeto que contém um instantâneo completo das estatísticas atuais, estruturado de forma idêntica ao objeto retornado por um getStats() chamada, incluindo as condições da rede e o motivo do problema no transporte/rede local e remoto, bem como a origem da degradação da rede.

Veja: : - Evento

qualityScoreChanged

Enviado quando a pontuação de qualidade de áudio ou vídeo sofre alteração. As pontuações são um valor heurístico que representa a experiência esperada do assinante. Os valores variam de 5 a 1, sendo que os valores inteiros correspondem a Excelente | Bom | Razoável | Ruim | Péssimo.

Veja: : - Evento de alteração do Quality Score

videoDimensionsChanged

Enviado quando o stream.videoDimensions A propriedade é atualizada pelo emissor. Isso ocorre quando o elemento de vídeo local do emissor detecta uma alteração nas dimensões e sinaliza a atualização a todos os participantes da sessão. Exemplos do que pode causar isso:

  • Quando stream.videoType está definido como "screen" (compartilhamento de tela) e o usuário redimensiona a janela capturada.
  • Quando o vídeo está sendo publicado a partir de um dispositivo móvel e o usuário gira o dispositivo, fazendo com que a orientação da câmera mude.
  • Quando a editora ligar Editor#definirResoluçãoPreferida, alterando a resolução de captura do alvo.

Este objeto de evento possui um newValue propriedade e um oldValue propriedade, que representa as dimensões nova e antiga do vídeo. Cada uma delas possui uma height propriedade e um width propriedade que representa a altura e a largura, em pixels.

Observação: essas dimensões correspondem às indicadas pela editora captura resolução (o que o emissor está codificando e enviando), e não a resolução efetivamente decodificada por esse assinante. A resolução decodificada pode diferir devido à adaptação de rede ou à codificação de vídeo escalável. Use Assinante#largura do vídeo e Número do assinante#altura do vídeo para a resolução efetivamente recebida.

Veja: : - Evento de alteração das dimensões do vídeo

vídeo desativado

Enviado quando o vídeo do assinante está desativado.

O reason A propriedade define o motivo pelo qual o vídeo foi desativado. Ela pode ser definida como um dos seguintes valores:

  • "codecNotSupported" — O navegador do cliente não é compatível com o codec de vídeo usado pela transmissão. Por exemplo, no Safari, se você acessar um sessão encaminhada em um Video API da Vonage (exceto Safari) projeto, e se você tentar se inscrever em um stream que inclua vídeo, o Subscriber enviará um videoDisabled evento com o reason propriedade definida como "codecNotSupported". (Em sessões roteadas em um projeto que não seja do Safari, os streams utilizam o codec de vídeo VP8, que não é compatível com o Safari.) O elemento subscriber também exibirá a mensagem “Formato de vídeo não compatível”. (Consulte OT.getSupportedCodecs().)

  • "publishVideo" — A editora interrompeu a publicação de vídeos por meio de uma ligação publishVideo(false).

  • "quality" — O Vonage Video Media Router ou o cliente de publicação deixou de enviar vídeo ao assinante devido a alterações na qualidade da transmissão causadas pela degradação da conectividade.

    Em sessões roteadas, a origem desse evento pode ser o Vonage Video Media Router (Fallback de áudio do assinante) ou o cliente de publicação (Fallback de áudio do editor). Em ambos os casos, o fluxo de vídeo é interrompido especificamente para o assinante afetado, enquanto o fluxo de áudio (se houver) continua ininterruptamente. Quando a origem é o cliente de publicação, o evento é seguido por um streamPropertyChanged evento disparado pelo objeto de sessão, indicando que o canal de vídeo assinado não está mais ativo. Em geral, esse evento adicional indica uma degradação da rede no lado do editor; no entanto, as métricas relatadas pelo assinante podem influenciar as decisões de fallback do editor, o que pode complicar a determinação da origem exata da degradação.

    Em sessões retransmitidas, o "quality" O evento é acionado exclusivamente devido à lógica interna de fallback de áudio do editor (Publisher Audio Fallback). Esse evento não é seguido por um streamPropertyChanged evento que indica que o vídeo está inativo, já que a transmissão ainda pode ser recebida por outros assinantes com melhores condições de rede. Observe que, em sessões retransmitidas, embora os eventos de fallback de áudio tenham origem no emissor, pode estar ocorrendo uma degradação da rede tanto no lado do emissor quanto no lado do assinante.

    Antes de enviar esse evento, quando a qualidade do stream do Assinante se deteriora a um nível tão baixo que o stream de vídeo corre o risco de ser desativado, o Assinante envia um videoDisableWarning evento.

    Se a conectividade melhorar a ponto de permitir novamente a exibição de vídeo, o objeto Subscriber dispara um videoEnabled evento, e o assinante volta a receber o vídeo.

    Por padrão, o Subscriber exibe um indicador de vídeo desativado quando um videoDisabled O evento com esse motivo é acionado e remove o indicador quando o videoEnabled O evento com esse motivo é acionado. Você pode controlar a exibição desse ícone chamando o setStyle() método do Assinante, definindo o videoDisabledDisplayMode propriedade (ou você pode definir o estilo ao chamar o Session.subscribe() método, definindo o style propriedade do properties parâmetro).

    É possível controlar o comportamento de fallback apenas de áudio definindo o audioFallback propriedade no objeto passado para OT.initPublisher() no cliente de publicação. Por padrão, o recurso de fallback de áudio do assinante está ativado (exceto ao usar o compartilhamento de tela, onde fica desativado por padrão) e o recurso de fallback de áudio do editor está desativado. Para alterar isso, defina audioFallback.subscriber para false para desativar o fallback do assinante, ou definir audioFallback.publisher para true para habilitar o recurso de fallback do editor. (Veja OT.initPublisher().)

  • "subscribeToVideo" — O assinante iniciou ou cancelou a assinatura do vídeo, ligando para subscribeToVideo(false).

Veja: : - Evento de alteração da ativação de vídeo - videoDesativarAviso evento - videoEnabled evento

videoDesativarAviso

Enviado quando o Media Router da Video API da Vonage determina que a qualidade do stream se deteriorou e que 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 envia um videoDisabled evento.

Por padrão, o Assinante exibe um indicador de aviso de vídeo desativado quando esse evento é disparado (e o vídeo está desativado). Você pode controlar a exibição desse ícone chamando o método setStyle() método e definindo o videoDisabledDisplayMode propriedade (ou você pode definir o estilo ao chamar o Session.subscribe() método e definindo o style propriedade do properties parâmetro).

Esse recurso está disponível apenas em sessões que utilizam o Media Router da Video API da Vonage (sessões com o modo de mídia (configurado como “routed”), e não em sessões com o modo de mídia configurado como “relayed”.

Veja: : - Evento - vídeo desativado evento - videoDisableWarningLifted evento

videoDisableWarningLifted

É disparado quando o Media Router da Video API da Vonage determina que a qualidade do stream melhorou a ponto de a desativação do vídeo não representar um risco imediato. Esse evento é disparado após o objeto Assinante disparar um videoDisableWarning evento.

Esse recurso está disponível apenas em sessões que utilizam o Media Router da Video API da Vonage (sessões com o modo de mídia (configurado como “routed”), e não em sessões com o modo de mídia configurado como “relayed”.

Veja: : - Evento - videoDesativarAviso evento - vídeo desativado evento

videoElementCreated

É disparado quando o elemento de vídeo do Assinante é criado. Adicione um ouvinte para este evento ao definir o insertDefaultUI opção de false na chamada para o Session.subscribe() método. O element A propriedade do objeto do evento é uma referência ao Subscriber do video elemento (ou, no Internet Explorer, o object elemento que contém o vídeo). Adicione-o ao DOM HTML para exibir o vídeo. Ao definir o insertDefaultUI opção para false, o video (ou object) não é inserido automaticamente no DOM.

Adicione um ouvinte para este evento somente se você tiver definido o insertDefaultUI opção para false. Se você ainda não tiver definido insertDefaultUI opção para false, não mova o video (ou object) no DOM HTML. Isso faz com que o objeto Subscriber seja destruído.

Veja: : - Evento de criação do elemento de vídeo

videoEnabled

É disparado quando o Media Router da Video API da Vonage retoma o envio de vídeo ao assinante após o vídeo ter sido desativado anteriormente.

O reason A propriedade define o motivo pelo qual o vídeo foi ativado. Ela pode ser definida como um dos seguintes valores:

  • "codecChanged" — O vídeo do assinante foi habilitado após uma mudança de codec, em substituição a um codec incompatível.

  • "publishVideo" — A editora começou a publicar vídeos por meio de uma ligação publishVideo(true).

  • "quality" — O Media Router da Video API da Vonage retomou o envio de vídeo ao assinante com base nas mudanças na qualidade do stream. Esse recurso do Media Router da Video API da Vonage faz com que o assinante interrompa o stream de vídeo quando a conectividade se deteriora e, em seguida, retome o stream de vídeo caso a qualidade do stream melhore.

    Esse recurso está disponível apenas em sessões que utilizam o Media Router da Video API da Vonage (sessões com o modo de mídia (configurado como “routed”), e não em sessões com o modo de mídia configurado como “relayed”.

  • "subscribeToVideo" — O assinante iniciou ou cancelou a assinatura do vídeo, ligando para subscribeToVideo(false).

Veja: : - Evento de alteração da ativação de vídeo - vídeo desativado evento

alteração na qualidade do vídeo

Enviado quando é detectada uma interrupção na qualidade do vídeo — uma pausa — ou uma mudança de codec.

Os congelamentos são monitorados internamente e apresentados por meio de estatísticas, mas nenhum evento é acionado para cada congelamento devido à sua curta duração e à alta frequência potencial.

Um evento é acionado somente quando é detectada uma pausa (por exemplo, quando nenhum quadro é renderizado por mais de 5 segundos), pois isso representa uma interrupção mais significativa na reprodução de mídia.

Este evento difere de videoDisabled e videoEnabled Eventos do assinante, na medida em que relatam alterações relevantes na qualidade do vídeo. videoDisabled e videoEnabled “only” indica que a trilha de vídeo do assinante foi ativada ou desativada (por exemplo, devido a uma atualização de propriedade da transmissão ou a um fallback de áudio). Em contrapartida, este evento fornece informações de diagnóstico sobre as causas da degradação da qualidade, tais como contagens de congelamentos e pausas, além de estatísticas atualizadas.

Este evento considera todos os tipos de interrupções de vídeo com duração de 5 segundos ou mais. Isso significa que, no caso específico de fallback de áudio ou alterações nas propriedades do stream (como a desativação do vídeo), além de acionar o videoEnabled e videoDisabled Nesses casos, a interrupção também é registrada como uma pausa nas estatísticas do vídeo, e um evento correspondente de alteração na qualidade do vídeo devido à interrupção será acionado assim que o vídeo for restabelecido.

O reason A propriedade define o motivo da alteração na qualidade do vídeo. Ela pode ser definida como um dos seguintes valores:

  • "videoInterruption" — Indica que foi detectado um novo evento de pausa
  • "codecChange" — Indica que o codec de vídeo foi alterado

O stats A propriedade define um objeto que contém um instantâneo completo das estatísticas atuais, estruturado de forma idêntica ao objeto retornado por um getStats() invocação, incluindo pausas e congelamentos, se houver.

Veja: : - Evento