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:
- O navegador não suporta esse método (por exemplo, no Chrome versão 57 e anteriores, que não suportam o RTCPeerConnection.getStats() (padrão).
- O PeerConnection pois o assinante não está conectado.
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.
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 umclickevento, 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ê chamarsubscribeToVideo(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 odataEsquema 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 chamarmySubscriber.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
clickevento (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 umgetStats()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.videoTypeestá 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á umvideoDisabledevento com oreasonpropriedade 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çãopublishVideo(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
streamPropertyChangedevento 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 umstreamPropertyChangedevento 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
videoDisableWarningevento.Se a conectividade melhorar a ponto de permitir novamente a exibição de vídeo, o objeto Subscriber dispara um
videoEnabledevento, e o assinante volta a receber o vídeo.Por padrão, o Subscriber exibe um indicador de vídeo desativado quando um
videoDisabledO evento com esse motivo é acionado e remove o indicador quando ovideoEnabledO evento com esse motivo é acionado. Você pode controlar a exibição desse ícone chamando osetStyle()método do Assinante, definindo ovideoDisabledDisplayModepropriedade (ou você pode definir o estilo ao chamar oSession.subscribe()método, definindo ostylepropriedade dopropertiesparâmetro).É possível controlar o comportamento de fallback apenas de áudio definindo o
audioFallbackpropriedade no objeto passado paraOT.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, definaaudioFallback.subscriberparafalsepara desativar o fallback do assinante, ou definiraudioFallback.publisherparatruepara habilitar o recurso de fallback do editor. (Veja OT.initPublisher().) -
"subscribeToVideo"— O assinante iniciou ou cancelou a assinatura do vídeo, ligando parasubscribeToVideo(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çãopublishVideo(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 parasubscribeToVideo(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