O objeto Publisher fornece o mecanismo por meio do qual se realiza o controle do fluxo publicado. Ao chamar o OT.initPublisher() método cria um objeto Publisher.

O código a seguir instancia uma sessão e publica um fluxo de áudio e vídeo ao se conectar à sessão:

 var apiKey = ''; // Replace with your API key. See https://tokbox.com/account
 var sessionID = ''; // Replace with your own session ID.
                     // See https://tokbox.com/developer/guides/create-session/.
 var token = ''; // Replace with a generated token that has been assigned the moderator role.
                 // See https://tokbox.com/developer/guides/create-token/.

 var session = OT.initSession(apiKey, sessionID);
 session.connect(token, function(error) {
   if (error) {
     console.log(error.message);
   } else {
     // This example assumes that a DOM element with the ID 'publisherElement' exists
     var publisherProperties = {width: 400, height:300, name:"Bob's stream"};
     publisher = OT.initPublisher('publisherElement', publisherProperties);
     session.publish(publisher);
   }
 });

Este exemplo cria um objeto Publisher e adiciona seu vídeo a um elemento DOM com o ID publisherElement chamando o OT.initPublisher() método. Em seguida, ele publica um fluxo na sessão chamando o publish() método do objeto Session.

Propriedades

Nome Tipo Descrição
accessAllowed Booleano Se o usuário concedeu acesso à câmera e ao microfone. O objeto Publisher dispara um accessAllowed evento quando o usuário concede acesso. O objeto Publisher dispara um accessDenied evento que ocorre quando o usuário nega o acesso.
element Elemento O elemento DOM HTML que contém o Publisher. (Observação: quando você define o insertDefaultUI opção de false na chamada para OT.initPublisher, o element a propriedade não está definida.)
id String O ID DOM do Editor.
stream Transmissão O Transmissão objeto correspondente ao fluxo do Publisher.
session Sessão O Sessão à qual a editora pertence.

Veja: : - OT.initPublisher - Session.publish()

Métodos

Nome Descrição
addEventListener(type, listener, context) Obsoleto.
applyAudioFilter(audioFilter) → {Promise} Aplica um filtro de áudio ao editor.
applyVideoFilter(videoFilter) → {Promise} Aplica um filtro de vídeo para o editor.
clearAudioFilter() → {Promise} Remove o filtro de áudio aplicado ao editor.
clearVideoFilter() → {Promise} Remove o filtro de vídeo aplicado ao editor.
cycleVideo() → {Promise} Alterna a fonte de entrada de vídeo utilizada pelo apresentador para a próxima na lista de dispositivos disponíveis.
destroy() → {Publisher} Exclui o objeto Publisher e o remove do DOM HTML.
getAudioFilter() → {Object} Retorna o filtro de áudio utilizado pelo editor (ou null, caso não haja filtro de áudio).
getAudioSource() → {MediaStreamTrack} Retorna o objeto `MediaStreamTrack` usado como fonte de entrada de áudio para o editor.
getImgData() → {String} Retorna a string codificada em base 64 dos dados PNG que representam o vídeo do Publisher.
getMaxVideoBitrate() → {Integer} Retorna a taxa de bits máxima personalizada definida para o Publisher.
getRtcStatsReport() → {Promise} Retorna uma promessa que, em caso de sucesso, é resolvida com um array de objetos que incluem as propriedades RTCStatsReport do stream publicado.
getStats(completionHandler) → {Promise.<PublisherStatsArr>} Retorna os detalhes sobre a qualidade do stream do editor, incluindo o seguinte: - O número total de pacotes de áudio e vídeo perdidos - O número total de pacotes de áudio e vídeo enviados - O número total de bytes de áudio e vídeo enviados - A taxa de quadros de vídeo média atual Você pode usar essas estatísticas para avaliar a qualidade do stream de áudio e vídeo do editor.
getStyle() → {Object} Retorna um objeto que possui as propriedades que definem os controles atuais da interface do usuário do Publisher.
`getTargetScalabilityMode() → {String undefined}` Retorna o modo de escalabilidade de destino que foi definido explicitamente por meio de Editora.
getVideoBitratePreset() → {String} Retorna a predefinição de taxa de bits para o Publisher.
getVideoContentHint() → {String} Retorna a sugestão de conteúdo para a trilha de vídeo.
getVideoFilter() → {Object} Retorna o filtro de vídeo aplicado pelo editor.
getVideoSource() → {VideoSource} Retorna um objeto que contém propriedades que definem a fonte de vídeo atual do editor.
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.
publishAudio(value) → {Publisher} Começa a publicar o áudio (caso ainda não esteja sendo publicado) quando o value é true; interrompe a publicação do áudio (caso esteja sendo publicado no momento) quando o value é false.
publishCaptions(value) → {Promise.<void>} Começa a publicar legendas (caso ainda não estejam sendo publicadas) quando o value é true; interrompe a publicação das legendas (caso estejam sendo publicadas no momento) quando o value é false.
publishVideo(value, callback) → {Publisher} Ativa ou desativa o vídeo para o editor.
removeEventListener(type, listener, context) Obsoleto.
setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise} Define um MediaProcessorConnector para a trilha de áudio do editor.
setAudioSource(audioSource) → {Promise} Alterna a fonte de entrada de áudio utilizada pelo editor.
setMaxVideoBitrate(bitrateBps) Define uma taxa de bits máxima personalizada para o vídeo do editor.
setPreferredFrameRate(frameRate) → {Promise} Define a taxa de quadros de vídeo preferencial.
setPreferredResolution(preferredResolution) → {Promise} Define a resolução de vídeo preferencial.
setStyle(style, value) → {Publisher} Define propriedades que determinam a aparência de alguns controles da interface do usuário do Publisher.
setTargetScalabilityMode(scalabilityMode) Define o modo de escalabilidade de destino (SVC – Scalable Video Coding) para este editor.
setVideoBitratePreset(preset) Define a taxa de bits máxima de vídeo para o editor como uma das seguintes predefinições: 'default', 'bw_saver' ou 'extra_bw_saver'.
setVideoContentHint(videoContentHint) → {Promise.<void>} Define a sugestão de conteúdo para a trilha de vídeo do stream do editor.
setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise} Define um MediaProcessorConnector para a trilha de vídeo do editor.
setVideoSource(videoSourceId) → {Promise} Este método define a fonte de vídeo para um editor que está usando uma câmera.
videoHeight() → {Number} Retorna a altura, em pixels, do vídeo local do editor, lida do arquivo local <video> elemento.
videoWidth() → {Number} Retorna a largura, em pixels, do vídeo local do editor, lida do arquivo local <video> elemento.

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

applyAudioFilter(audioFilter) → {Promise}

Aplica um filtro de áudio ao editor. Na versão atual, só é possível aplicar um filtro avançado de supressão de ruído. Um editor pode ter apenas um (ou nenhum) filtro aplicado por vez. Ao definir um novo filtro, qualquer filtro definido anteriormente é removido.

Esse método é incompatível com o Publisher.setAudioMediaProcessorConnector() método. Ao chamar esse método após Publisher.setAudioMediaProccessorConnector(connector) retorna uma promessa que é rejeitada com um erro, com o name propriedade do erro definida como 'OT_NOT_SUPPORTED'. Você pode remover o conector chamando Publisher.setAudioMediaProccessorConnector(null).

Observação: Os filtros de áudio 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.

Importante: Os filtros de áudio exigem suporte adequado do processador. Mesmo em navegadores compatíveis, os transformadores podem não funcionar de forma estável quando processos em segundo plano limitam os recursos de processamento disponíveis. Consulte Requisitos do cliente.

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

  • O navegador não suporta esse método.
  • Um filtro personalizado já está sendo utilizado por meio do Publisher.setAudioMediaProcessorConnector() método.
  • Ocorreu um erro ao aplicar o filtro de transformação.

Você também pode definir o filtro de áudio inicial configurando um audioFilter opção ao chamar OT.initPublisher().

Parâmetros:
Nome Tipo Descrição
audioFilter Objeto Um objeto que define o filtro de áudio a ser aplicado. São suportados os seguintes filtros: - Filtro avançado de supressão de ruído — Defina o type propriedade do objeto para "advancedNoiseSuppression".

Veja: : - OT.hasMediaProcessorSupport('áudio') - Publisher.getAudioFilter() - Publisher.clearAudioFilter()

Devoluções:

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

applyVideoFilter(videoFilter) → {Promise}

Aplica um filtro de vídeo ao editor. É possível aplicar um filtro de desfoque de fundo. Um editor pode ter apenas um (ou nenhum) filtro aplicado por vez. Ao definir um novo filtro, o filtro definido anteriormente é removido.

Esse método é incompatível com o Publisher.setVideoMediaProcessorConnector() método. Ao chamar esse método após Publisher.setVideoMediaProcessorConnector(connector) retorna uma promessa que é rejeitada com um erro, com o name propriedade do erro definida como 'OT_NOT_SUPPORTED'. Você pode remover o conector chamando Publisher.setVideoMediaProcessorConnector(null).

Observação: Os filtros de vídeo 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 (versão 26+) e do WebView do iOS (versão 26+). Você pode verificar se o cliente é compatível com esse recurso chamando o OT.hasMediaProcessorSupport('vídeo') método.

Importante: Os filtros de vídeo exigem suporte adequado do processador. Mesmo em navegadores compatíveis, os transformadores podem não funcionar de maneira estável quando processos em segundo plano limitam os recursos de processamento disponíveis. Consulte Requisitos do cliente.

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

  • O navegador não suporta esse método.
  • O editor não está usando uma fonte de vídeo compatível. (O videoSource opção do OT.initPublisher() O método foi definido como null, false, ou "screen").
  • Um filtro personalizado já está sendo utilizado por meio do Publisher.setVideoMediaProcessorConnector() método.
  • 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 aplicar o filtro de transformação.

Você também pode definir o filtro de vídeo inicial configurando um videoFilter opção ao chamar OT.initPublisher().

Parâmetros:
Nome Tipo Descrição
videoFilter Objeto Um objeto que define o filtro de vídeo a ser aplicado. São suportados os seguintes filtros: - Filtro de desfoque de fundo: — Defina o type propriedade do objeto para "backgroundBlur". Um objeto de filtro de desfoque de fundo inclui um blurStrength propriedade que define o raio de desfoque e é opcional. Defina esse valor como "low" ou "high" (padrão). - Filtro de substituição de plano de fundo — Defina o type propriedade do objeto para "backgroundReplacement". Um objeto de filtro de substituição de plano de fundo inclui um backgroundImgUrl propriedade, que define a URL da imagem de fundo a ser usada. Também são aceitos BLOBs de imagem (uma sequência de caracteres codificada em Base64 contendo os dados da imagem). São suportados os seguintes formatos de imagem: BMP, PNG, JPEG e GIF. A imagem de fundo é redimensionada para se adequar às dimensões do vídeo do editor. Para obter melhores resultados, use uma imagem com as mesmas dimensões (ou, pelo menos, a mesma proporção) do vídeo publicado. Defina o mirror opção para false ao chamar o OT.initPublisher() método para fazer com que a imagem de fundo apareça na orientação correta (sem estar invertida) na página do editor.

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

Devoluções:

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

clearAudioFilter() → {Promise}

Remove o filtro de áudio aplicado ao editor.

Isso resultará em um erro (a Promise retornada pelo método será rejeitada) se o filtro de áudio não puder ser interrompido.

Veja: : - OT.hasMediaProcessorSupport('áudio') - Publisher.applyAudioFilter() - Publisher.getAudioFilter()

Devoluções:

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

clearVideoFilter() → {Promise}

Remove o filtro de vídeo aplicado ao editor.

Isso resultará em um erro (a Promise retornada pelo método será rejeitada) se o filtro de vídeo não puder ser interrompido.

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

Devoluções:

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

cycleVideo() → {Promise}

Altera a fonte de entrada de vídeo utilizada pelo apresentador para a próxima da lista de dispositivos disponíveis.

Isso resultará em um erro (a Promise retornada pelo método será rejeitada) nas seguintes condições:

  • O usuário negou acesso ao dispositivo de entrada de vídeo.
  • O editor não está utilizando uma fonte de vídeo de câmera. (O videoSource opção do OT.initPublisher() O método foi definido como null, false, um objeto MediaStreamTrack ou "screen").
  • 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.

Veja: : - Publisher.setVideoSource()

Devoluções:

Uma promessa que é resolvida quando a operação é concluída com sucesso. A promessa é resolvida com um objeto que possui um deviceId propriedade definida como o ID do dispositivo da câmera utilizada:

  publisher.cycleVideo().then(console.log);
  // Output: {deviceId: "967a86e52..."}

Se ocorrer um erro, a promessa é rejeitada.

destroy() → {Editora}

Exclui o objeto Publisher e o remove do DOM HTML.

O objeto Publisher dispacha um destroyed evento que ocorre quando o elemento DOM é removido.

Devoluções:

A Editora.

getAudioFilter() → {Object}

Retorna o filtro de áudio utilizado pelo editor (ou null, caso não haja filtro de áudio).

Veja: : - OT.hasMediaProcessorSupport('áudio') - Publisher.applyAudioFilter() - Publisher.clearAudioFilter()

Devoluções:

O filtro de áudio utilizado pela editora. Verifique o type propriedade do objeto para verificar o tipo de filtro de áudio. Atualmente, apenas o filtro avançado de supressão de ruído é compatível, e o type a propriedade está definida como "advancedNoiseSuppression".

getAudioSource() → {MediaStreamTrack}

Retorna o objeto `MediaStreamTrack` usado como fonte de entrada de áudio para o editor. Se o editor não tiver uma fonte de áudio, este método retorna `null`.

Veja: : - Publisher.setAudioSource()

Devoluções:

A fonte de áudio da editora (ou nula, caso não haja nenhuma).

getImgData() → {String}

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

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 = publisher.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.

getMaxVideoBitrate() → {Integer}

Retorna a taxa de bits máxima personalizada definida para o Publisher.

Veja: : - Publisher.setMaxVideoBitrate() - Taxa de bits máxima do editor

Devoluções:

Um dos seguintes valores: 0 ou qualquer valor inteiro compreendido entre 5.000 e 10.000.000.

getRtcStatsReport() → {Promise}

Retorna uma promessa que, em caso de sucesso, é resolvida com um array de objetos que incluem as propriedades RTCStatsReport do stream publicado. (Consulte RTCStatsReport.)

Para um editor em uma sessão roteada (aquela que utiliza o Video API da Vonage Roteador de Mídia), essa matriz inclui um objeto, definindo as estatísticas do único fluxo de mídia de áudio enviado ao Media Router da Video API da Vonage. Em uma sessão retransmitida, a matriz inclui um objeto para cada assinante do fluxo publicado. Cada objeto na matriz contém um rtcStatsReport propriedade que é um objeto RTCStatsReport.

Além disso, para um editor em uma sessão retransmitida, cada objeto na matriz contém as duas propriedades a seguir:

  • connectionId (String) — O ID exclusivo da conexão do cliente, que corresponde ao id propriedade do connection propriedade do conexãoCriada caso em que o objeto Session tenha sido despachado para o cliente remoto.
  • subscriberId (String) — O ID exclusivo do assinante, que corresponde ao id propriedade do objeto Subscriber no aplicativo do cliente assinante.

Essas duas propriedades não estão definidas para um editor em uma sessão roteada.

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

Veja: : - Subscriber.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.<PublisherStatsArr>}

Retorna os detalhes sobre a qualidade do stream do editor, incluindo o seguinte:

  • O número total de pacotes de áudio e vídeo perdidos
  • O número total de pacotes de áudio e vídeo enviados
  • O número total de bytes de áudio e vídeo enviados
  • A taxa média atual de quadros por segundo do vídeo

Você pode usar essas estatísticas para avaliar a qualidade do fluxo de áudio e vídeo do provedor.

Parâmetros:
Nome Tipo Descrição
completionHandler função (Opcional) Uma função que recebe os seguintes parâmetros: - error (Erro) — Após a conclusão bem-sucedida do método, este valor é indefinido. Ocorre um erro se o emissor não estiver conectado a uma sessão ou se não estiver transmitindo áudio ou vídeo. - statsArray (Matriz) — Uma matriz de objetos que define as estatísticas atuais de áudio e vídeo do editor. Para um editor em uma sessão roteada (aquela que utiliza o Video API da Vonage Roteador de Mídia), esse array inclui um objeto, definindo as estatísticas do único fluxo de mídia de áudio enviado ao Media Router da Video API da Vonage. Em uma sessão retransmitida, o array inclui um objeto para cada assinante do fluxo publicado. Cada objeto no array contém um stats propriedade que inclui as seguintes propriedades: - audio.bytesSent (Número) — O número total de bytes de áudio enviados ao assinante (ou ao Roteador de Mídia da Video API da Vonage) - audio.packetsLost (Número) — O número total de pacotes de áudio que não chegaram ao assinante (ou ao Media Router da Video API da Vonage) - audio.packetsSent (Número) — O número total de pacotes de áudio enviados ao assinante (ou ao Roteador de Mídia da Video API da Vonage) - 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.bytesSent (Número) — O total de bytes de vídeo enviados ao assinante (ou ao Media Router da Video API da Vonage) - video.packetsLost (Número) — O número total de pacotes de vídeo que não chegaram ao assinante (ou ao Media Router da Video API da Vonage) - video.packetsSent (Número) — O número total de pacotes de vídeo enviados ao 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 encodedFrameRate propriedade nas diferentes camadas. - video.layers (Matriz) — Uma lista das camadas de codificação de vídeo ativas, ordenadas da resolução mais alta para a mais baixa. Cada objeto de camada inclui: - width (Número) — A largura da resolução do vídeo para esta camada, em pixels - height (Número) — A altura da resolução do vídeo para esta camada, em pixels - encodedFrameRate (Número) — A taxa de quadros dessa camada em quadros por segundo - bitrate (Número) — A taxa de bits utilizada por esta camada em bits por segundo - totalBitrate (Número) — A taxa de bits total utilizada por esta camada, em bits por segundo. Isso inclui cabeçalhos RTP, preenchimento e carga útil - scalabilityMode (Número) — Uma sequência de caracteres que descreve a configuração de escalabilidade (por exemplo, "L1T3" (para uma camada espacial e três camadas temporais). Isso reflete se é utilizada a transmissão simultânea ou o SVC - codec (Número) — O codec utilizado por esta camada - qualityLimitationReason (Número) — (Opcional) Uma sequência de caracteres que indica por que a qualidade do vídeo do editor pode ter sido prejudicada. Valores possíveis: - "bandwidth" — Deterioração da qualidade devido à largura de banda insuficiente da rede - "cpu" — Deterioração da qualidade causada por limitações da CPU no dispositivo cliente - "other" — Outros motivos não especificados - transportStats (Objeto) — Esta propriedade está obsoleta e será removida no futuro. Em vez disso, use mediaLink.transport. - mediaLink.transport.connectionEstimatedBandwidth (Número) — A largura de banda disponível estimada para a conexão, em bits por segundo (bps) - mediaLink.transport.networkCondition (String) — Condição atual da rede. Os valores possíveis são: unknown, critical, warning, fair, good e excellent. - mediaLink.transport.networkConditionReason (String) — Principal motivo que afeta as condições da rede. Os valores possíveis são: none, unknown, bandwidth e packetLoss. Além disso, para um editor em uma sessão retransmitida, cada objeto na matriz contém as duas propriedades a seguir: - connectionId (String) — O ID exclusivo da conexão do cliente, que corresponde ao id propriedade do connection propriedade do conexãoCriada evento que o objeto Session enviou para o cliente remoto. - subscriberId (String) — O ID exclusivo do assinante, que corresponde ao id propriedade do objeto Subscriber no aplicativo do cliente assinante. Essas duas propriedades são indefinidas para um editor em uma sessão roteada.

Veja: : - Subscriber.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 Publisher. É possível modificar as propriedades desse objeto e passá-lo para o setStyle() método do objeto Publisher. (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 Publisher.

getTargetScalabilityMode() → {String|undefined}

Retorna o modo de escalabilidade de destino que foi definido explicitamente por meio de Publisher.setTargetScalabilityMode(). Retorna o último valor passado ao setter, ou undefined se o setter nunca tiver sido chamado. Isso reflete a intenção do usuário, e não o modo efetivamente aplicado (que pode diferir devido ao recurso de fallback dependente do codec).

Este é um recurso em fase beta.

Veja: : - Publisher.setTargetScalabilityMode()

Devoluções:

O modo de escalabilidade alvo definido pelo chamador, ou undefined se não for definido explicitamente.

getVideoBitratePreset() → {String}

Retorna a predefinição de taxa de bits para o Publisher.

Veja: : - Publisher.setVideoBitratePreset() - Taxa de bits máxima do editor

Devoluções:

Um dos seguintes valores: 'custom', 'extra_bw_saver', 'bw_saver' ou 'default'

getVideoContentHint() → {String}

Retorna a sugestão de conteúdo para a trilha de vídeo.

Veja: : - Publisher.setVideoContentHint()

Devoluções:

Um dos seguintes valores: "", "motion", "detail, ou "text".

getVideoFilter() → {Object}

Retorna o filtro de vídeo aplicado pelo editor.

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

Devoluções:

O filtro de vídeo que está sendo aplicado à fonte de entrada de vídeo utilizada pelo editor. Verifique o type propriedade do objeto para verificar o tipo de filtro de vídeo. Os seguintes filtros são suportados:

  • Filtro de desfoque de fundo — O type a propriedade do objeto está definida como "backgroundBlur". Um objeto de filtro de desfoque de fundo inclui um blurStrength propriedade, que define o raio de desfoque, definida como "low" ou "high".
  • Filtro de substituição de plano de fundo — O type A propriedade `type` do objeto está definida como "backgroundReplacement". Um objeto de filtro de substituição de plano de fundo inclui um backgroundImgUrl propriedade que define a URL da imagem de fundo a ser usada.

getVideoSource() → {VideoSource}

Retorna um objeto que contém propriedades que definem a fonte de vídeo atual do editor.

Veja: : - Publisher.setVideoSource() - OT.initPublisher()

Devoluções:

O objeto de retorno possui as seguintes propriedades:

  • deviceId (String | null) — O ID do dispositivo.
  • type (String | null) — Esse parâmetro é definido como 'camera' (para um vídeo gravado pela câmera), 'screen' (para um vídeo de compartilhamento de tela) ou 'custom' (para um vídeo com fonte MediaStreamTrack).
  • track (MediaStreamTrack | null) — O MediaStreamTrack do vídeo.

Quaisquer propriedades não aplicáveis serão definidas como nulas.

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.

publishAudio(valor) → {Editora}

Inicia a publicação do áudio (caso ainda não esteja sendo publicado) quando o value é true; interrompe a publicação do áudio (caso esteja sendo publicado no momento) quando o value é false.

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

Veja: : - OT.initPublisher() - Stream.hasAudio - StreamPropertyChangedEvent

Devoluções:

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

Começa a publicar legendas (caso ainda não estejam sendo publicadas) quando o value é true; interrompe a publicação de legendas (caso esteja sendo publicada no momento) quando o value é false.

Observação: Nenhuma legenda será publicada se o editor não tiver uma fonte de áudio.

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

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

Veja: : - OT.initPublisher() - subscribeToCaptions() - isSubscribedToCaptions() - Stream.hasCaptions - StreamPropertyChangedEvent

Devoluções:

publishVideo(valor, callback) → {Editora}

Ativa ou desativa o vídeo para o editor. Isso faz com que o vídeo seja publicado (se ele não estiver sendo publicado no momento, o cliente estiver conectado e o editor estiver publicando) quando o value é true; ele interrompe a publicação do vídeo (caso esteja sendo publicado no momento) quando o value é false.

Observação: O comportamento de publishVideo varia dependendo se o editor está conectado no momento e publicando:

  • Chamando publishVideo(true) quando o editor não está conectado a uma sessão, isso faz com que o editor capture e reproduza o vídeo localmente, mas não transmita o vídeo.
  • Chamando publishVideo(false) quando o editor não está conectado a uma sessão, isso faz com que o editor pare de capturar vídeo localmente. Nenhum vídeo é transmitido.
  • Chamando publishVideo(true) Quando o editor está conectado a uma sessão, mas não está transmitindo no momento, ele captura e reproduz o vídeo localmente, mas não transmite o vídeo.
  • Chamando publishVideo(false) Quando o emissor está conectado a uma sessão, mas não está transmitindo no momento, isso faz com que ele pare de capturar vídeo localmente. Nenhum vídeo é transmitido.
  • Chamando publishVideo(true) quando o editor está conectado a uma sessão e, ao mesmo tempo, está transmitindo, isso faz com que ele capture e reproduza o vídeo localmente e transmita o vídeo.
  • Chamando publishVideo(false) Quando o editor está conectado a uma sessão e, ao mesmo tempo, está transmitindo, isso faz com que ele pare de capturar vídeo e transmita quadros de vídeo vazios.
Parâmetros:
Nome Tipo Descrição
value Booleano Se deve começar a publicar vídeos (true) ou não (false).
callback função (Opcional) Uma função que recebe um Error parâmetro. Após a conclusão bem-sucedida do método, este error O parâmetro não está definido. Ocorre um erro se o editor não tiver dispositivos para fornecer o fluxo de mídia ou se a solicitação de mídia do usuário não for compatível.

Veja: : - OT.initPublisher() - Stream.hasVideo - StreamPropertyChangedEvent

Devoluções:

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

setAudioMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Define um MediaProcessorConnector para a trilha de áudio do editor. Um editor 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 Android WebView. 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.

Importante: Os processadores de mídia exigem suporte adequado do processador. Mesmo em navegadores compatíveis, os transformadores podem não funcionar de maneira estável quando processos em segundo plano limitam os recursos de processamento disponíveis. Consulte Requisitos do cliente.

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 áudio (microfones) disponíveis.
  • Ocorreu um erro ao obter o áudio do dispositivo de entrada de áudio.
  • 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.

setAudioSource(audioSource) → {Promise}

Alterna a fonte de entrada de áudio utilizada pelo editor. Você pode definir a audioSource para um ID de dispositivo (string) ou um objeto MediaStreamTrack de áudio.

Isso resultará em um erro (a Promise retornada pelo método será rejeitada) nas seguintes condições:

  • O navegador não suporta esse método. Esse método não é suportado no Internet Explorer nem nas versões do Edge que não são baseadas no Chromium (anteriores à versão 79).
  • O editor não foi iniciado com uma fonte de áudio. (O audioSource opção do OT.initPublisher() O método foi definido como null ou false).
  • O usuário negou o acesso ao dispositivo de entrada de áudio.
  • Ocorreu um erro ao obter o áudio do dispositivo de entrada de áudio ou do objeto MediaStreamTrack .
  • O audioSource O valor não é uma string nem um objeto MediaStreamTrack.
  • O audioSource "string" não é um dispositivo de entrada de áudio válido disponível para o navegador.
Parâmetros:
Nome Tipo Descrição
audioSource Objeto O ID do dispositivo (string) de um dispositivo de entrada de áudio ou um objeto MediaStreamTrack de áudio.

Veja: : - Publisher.getAudioSource()

Devoluções:

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

setMaxVideoBitrate(bitrateBps)

Define uma taxa de bits máxima personalizada para o vídeo do editor. Defina esse valor entre 5.000 e 10.000.000. Ao definir o valor como 0, qualquer taxa de bits personalizada definida anteriormente é removida, revertendo para o comportamento padrão.

A configuração da taxa de bits máxima é compatível com as versões mais recentes de todos os navegadores compatíveis.

Parâmetros:
Nome Tipo Descrição
bitrateBps Inteiro O valor da taxa de bits do vídeo — entre 5.000 e 10.000.000. Defina como 0 para remover uma configuração personalizada de taxa de bits e voltar ao comportamento padrão.

Veja: : - Publisher.getMaxVideoBitrate() - Publisher.setVideoBitratePreset() - Taxa de bits máxima do editor

setPreferredFrameRate(frameRate) → {Promise}

Define a taxa de quadros preferencial do vídeo. Esta função define a taxa de quadros desejada para a publicação do vídeo. A taxa de quadros deve ser um número inteiro ≥ 1. Se for bem-sucedida, aplica os novos parâmetros de taxa de quadros à trilha de vídeo.

Parâmetros:
Nome Tipo Descrição
frameRate número A taxa de quadros de vídeo preferida.
Devoluções:

É resolvido quando as restrições de vídeo são aplicadas com sucesso. Caso contrário, gera um erro — por exemplo, se o editor não estiver publicando vídeo, a taxa de quadros for inválida ou se a aplicação das restrições falhar.

setPreferredResolution(preferredResolution) → {Promise}

Define a resolução preferencial do vídeo. Esta função define a resolução preferencial para o editor de vídeo. Ela verifica se a entrada é um objeto com propriedades de largura e altura definidas por números inteiros positivos, e confirma se a resolução não é maior do que a resolução inicial de publicação. Se for bem-sucedida, aplica as novas restrições à trilha de vídeo.

Parâmetros:
Nome Tipo Descrição
preferredResolution Objeto A resolução desejada. Propriedades Nome Tipo Descrição --- --- --- width número Largura preferencial do vídeo (pixels). height número Altura preferencial do vídeo (pixels).
Devoluções:

É resolvido quando as restrições de vídeo são aplicadas com sucesso. Caso contrário, gera um erro — por exemplo, se o editor não estiver publicando vídeo, as dimensões forem inválidas ou a resolução exceder a resolução inicial.

setStyle(style, value) → {Editora}

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

É 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:

  • 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).
  • archiveStatusDisplayMode (String) — Como exibir o indicador de status do arquivo. Os valores possíveis são: "auto" (o indicador é exibido quando a sessão está sendo gravada), "off" (o indicador não é exibido). Se você desativar o indicador de exibição do status de arquivamento, poderá exibir suas próprias notificações na interface do usuário com base no archiveStarted e archiveStopped eventos disparados pelo objeto Session.
  • 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 publishVideo(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 Publisher.getImgData() método (por exemplo, você poderia chamar myPublisher.setStyle("backgroundImageURI", myPublisher.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 microfone. 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).

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

myPublisher.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:

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

Você pode definir as configurações iniciais ao chamar a função Session.publish() ou OT.initPublisher() 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.publish() - OT.initPublisher()

Devoluções:

O objeto Publisher

setTargetScalabilityMode(scalabilityMode)

Define o modo de escalabilidade de destino (SVC – Scalable Video Coding) para este editor.

O modo de escalabilidade controla o número de camadas espaciais (resolução) e temporais (taxa de quadros) que o WebRTC codifica. O modo é aplicado ao caminho de mídia do Media Router.

Esse método pode ser chamado a qualquer momento — não é necessário que a negociação do caminho de mídia tenha sido concluída. O modo será aplicado assim que o caminho de mídia do Media Router for estabelecido.

Se um codec que não seja SVC (VP8, H.264) for negociado no caminho de mídia do Media Router, o modo aplicável mais próximo é utilizado: as camadas espaciais são forçadas a 1, preservando a dimensão temporal (por exemplo, L2T2L1T2 quando o VP8 for negociado).

Modos válidos:

  • L1T1, L1T2, L1T3, L2T1, L2T2, L2T3, L3T1, L3T2, L3T3

Este é um recurso em fase beta.

Parâmetros:
Nome Tipo Descrição
scalabilityMode String O identificador do modo de escalabilidade de destino (por exemplo, "L1T3", "L3T3").

Veja: : - Publisher.getTargetScalabilityMode()

Arremessos:

setVideoBitratePreset(preset)

Define a taxa de bits máxima de vídeo para o editor como uma das seguintes predefinições: 'default', 'bw_saver' ou 'extra_bw_saver'. Para mais detalhes, consulte o Taxa de bits máxima do editor guia do desenvolvedor.

A configuração da taxa de bits máxima é compatível com as versões mais recentes de todos os navegadores compatíveis.

Parâmetros:
Nome Tipo Descrição
preset String A predefinição a ser usada: “default”, “bw_saver” ou “extra_bw_saver”.

Veja: : - Publisher.getVideoBitratePreset() - Publisher.setMaxVideoBitrate()

setVideoContentHint(videoContentHint) → {Promise.<void>}

Define a dica de conteúdo para a trilha de vídeo do stream do editor. Isso permite que os navegadores utilizem métodos de codificação ou processamento mais adequados ao tipo de conteúdo.

Use este método para alterar dinamicamente o conteúdo de vídeo exibido. Defina o conteúdo de vídeo inicial a ser exibido configurando o videoContentHint propriedade das opções passadas para o OT.initPublisher() método.

O Chrome 60+, o Safari 12.1+, o Edge 79+, o Opera 47+, as versões mais recentes do Samsung Internet, o WebView no Android 70+ e o WebView no iOS 12.2+ oferecem suporte a dicas de conteúdo de vídeo.

Parâmetros:
Nome Tipo Descrição
videoContentHint String Você pode definir esse valor como um dos seguintes: - "" — Não há nenhuma dica. - "motion" — A trilha deve ser tratada como se contivesse vídeo, nos casos em que o movimento é importante. Por exemplo, você pode usar essa configuração para uma transmissão de compartilhamento de tela que contenha vídeo. - "detail" — A trilha deve ser tratada como se os detalhes do vídeo fossem extremamente importantes. Por exemplo, você pode usar essa configuração para uma transmissão de compartilhamento de tela que contenha conteúdo de texto, pinturas ou desenhos a linha. - "text" — A faixa deve ser tratada como se os detalhes do texto fossem extremamente importantes. Por exemplo, você pode usar essa configuração para uma transmissão de compartilhamento de tela que contenha conteúdo de texto.

Veja: : - Publisher.getVideoContentHint() - OT.initPublisher()

Devoluções:

setVideoMediaProcessorConnector(mediaProcessorConnector) → {Promise}

Define um MediaProcessorConnector para a trilha de vídeo do editor. Um editor 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.

Esse método é incompatível com o Publisher.applyVideoFilter() método. Ao chamar esse método após Publisher.applyVideoFilter(filter) retorna uma promessa rejeitada com um erro, com o name propriedade do conjunto de erros definida como 'OT_NOT_SUPPORTED'. Você pode limpar o filtro de vídeo chamando Publisher.clearVideoFilter().

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 (versão 26+) e do WebView do iOS (versão 26+). Você pode verificar se o cliente é compatível com esse recurso chamando o OT.hasMediaProcessorSupport('vídeo') método.

Importante: Os processadores de mídia exigem suporte adequado do processador. Mesmo em navegadores compatíveis, os transformadores podem não funcionar de maneira estável quando processos em segundo plano limitam os recursos de processamento disponíveis. Consulte Requisitos do cliente.

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.
  • Um filtro de vídeo já foi aplicado por meio do Publisher.applyVideoFilter() método.
  • 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.

setVideoSource(videoSourceId) → {Promise}

Este método define a fonte de vídeo para um editor que está usando uma câmera. Passe o ID do dispositivo da nova fonte de vídeo.

O seguinte resultará em erros:

  • Se o videoSourceId Se o parâmetro não for uma string ou o ID de um dispositivo de entrada de vídeo válido, a promessa será rejeitada com um erro com o name propriedade definida como 'OT_INVALID_VIDEO_SOURCE'.
  • Se o editor não estiver utilizando uma entrada de câmera no momento, a promessa será rejeitada com um erro com o name propriedade definida como 'OT_SET_VIDEO_SOURCE_FAILURE'.
Parâmetros:
Nome Tipo Descrição
videoSourceId String O ID do dispositivo de entrada de vídeo (câmera).

Veja: : - OT.getDevices() - Publisher.getVideoSource() - Publisher.cycleVideo()

Devoluções:

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

videoHeight() → {Number}

Retorna a altura, em pixels, do vídeo local do editor, lida do local <video> elemento. Esse valor é o mesmo que stream.videoDimensions.height.

Devoluções:

A altura, em pixels, do vídeo local do editor.

videoWidth() → {Number}

Retorna a largura, em pixels, do vídeo local do editor, lida do local <video> elemento. Esse valor é o mesmo que stream.videoDimensions.width

Devoluções:

A largura, em pixels, do vídeo local do editor.

Eventos

acessoPermitido

É disparado quando o usuário clica no botão “Permitir”, concedendo ao aplicativo acesso à câmera e ao microfone. O objeto Publisher possui um accessAllowed propriedade que indica se o usuário concedeu acesso à câmera e ao microfone.

Veja: : - Evento

acesso negado

É disparado quando o usuário clica no botão “Negar”, impedindo que o aplicativo tenha acesso à câmera e ao microfone.

Esse evento também é disparado se o usuário revogar as permissões após tê-las concedido anteriormente.

Observação: No macOS 10.15 ou superior (Catalina), para publicar uma transmissão de compartilhamento de tela, o usuário deve conceder ao navegador acesso à tela nas Preferências do Sistema do macOS > Segurança e Privacidade > Privacidade > Gravação de tela. Caso contrário, o Publisher enviará um accessDenied evento.

Veja: : - Evento

accessDialogClosed

É enviado quando a caixa de diálogo “Permitir/Negar” é fechada. (Essa é a caixa de diálogo na qual o usuário pode conceder ao aplicativo acesso à câmera e ao microfone.)

Veja: : - Evento

accessDialogOpened

É enviado quando a caixa de diálogo “Permitir/Negar” é aberta. (Essa é a caixa de diálogo na qual o usuário pode conceder ao aplicativo acesso à câmera e ao microfone.)

Veja: : - Evento

audioInputDeviceChanged

É disparado quando o dispositivo de entrada de áudio é alterado.

Veja: : - Evento - Evento de alteração do dispositivo de entrada de áudio

audioLevelUpdated

É disparado periodicamente para indicar o nível de áudio do editor. 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 emissor. Observe que o nível de áudio é ajustado logaritmicamente e que é aplicada uma média móvel:

var movingAvg = null;
publisher.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('publisherMeter').value = logLevel;
});

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

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

destruído

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

mediaStopped

O usuário que está transmitindo interrompeu o compartilhamento de um ou de todos os tipos de mídia (vídeo, áudio e/ou tela). Isso pode ocorrer quando um usuário desconecta uma câmera ou um microfone usado como fonte de mídia para o Publisher. Ou pode ocorrer quando um usuário fecha uma janela, caso as fontes de vídeo e áudio da transmissão sejam elementos `MediaStreamTrack` e as faixas sejam interrompidas ou destruídas.

Veja: : - MediaStoppedEvent

mediaStreamAvailable

Enviado quando o MediaStream estiver disponível.

Veja: : - Evento

silenciarForçado

Um moderador forçou esse usuário a silenciar o áudio.

Veja: : - Evento - Session.forceMuteAll() - Session.forceMuteStream() - Silenciar o áudio das transmissões em uma sessão

networkConditionChanged

É disparado quando é detectada uma alteração nas condições de rede do editor.

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 editor. As aplicações 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"
  • statsContainer — 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. Observe que, para um editor em uma sessão retransmitida, o objeto de estatísticas contém um connectionId e um subscriberId, já que o provedor envia um fluxo separado para cada assinante e as estatísticas são relatadas por assinante. Isso permite que o usuário identifique qual assinante pode estar enfrentando problemas de desempenho na rede. Em sessões retransmitidas, apenas as estatísticas correspondentes ao assinante afetado são incluídas no evento.

Veja: : - Evento

streamCreado

O editor iniciou a transmissão para a sessão.

Veja: : - StreamEvent - Session.publish()

streamDestruído

O publisher interrompeu a transmissão para a sessão. O comportamento padrão é que o objeto Publisher seja removido do DOM HTML. O objeto Publisher dispara um destroyed evento que ocorre quando o elemento é removido do DOM HTML. Se você chamar o preventDefault() método do objeto de evento no ouvinte de eventos, o comportamento padrão é impedido, e você pode, opcionalmente, reter o Publisher para reutilização ou liberá-lo usando seu próprio código.

Veja: : - StreamEvent

videoDimensionsChanged

Enviado quando o local do editor <video> O elemento detecta uma alteração na dimensão. Quando o editor está publicando ativamente, isso também atualiza o stream.videoDimensions propriedade. Exemplos do que pode fazer com que o elemento de vídeo local mude de tamanho:

  • 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.

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

vídeo desativado

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

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

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

Por padrão, o Publisher 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 definindo o videoDisabledDisplayMode com o Publisher.setStyle() método ou definindo o videoDisabledDisplayMode style propriedade ao inicializar o Publisher com o OT.initPublisher() método.

Você pode ativar esse recurso de alternativa apenas de áudio definindo o publisher propriedade para true no audioFallback opção passada para o OT.initPublisher() método para o cliente de publicação. (Veja OT.initPublisher().)

Veja: : - Evento - videoDesativarAviso evento - videoEnabled evento

videoDesativarAviso

Enviado quando o Editor determina que a qualidade da transmissão se deteriorou e o vídeo será desativado caso a qualidade se deteriore ainda mais. Se a qualidade se deteriorar ainda mais, o Editor desativa o vídeo e envia um videoDisabled evento.

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

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

videoDisableWarningLifted

É disparado quando o Publisher determina que a qualidade da transmissão melhorou a ponto de o vídeo que está sendo desativado não representar mais um risco imediato. Esse evento é disparado após o objeto Publisher disparar um videoDisableWarning evento.

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

videoElementCreated

É disparado quando o elemento de vídeo do Publisher é criado. Adicione um ouvinte para este evento ao definir o insertDefaultUI opção de false na chamada para o OT.initPublisher() método. O element A propriedade do objeto de evento é uma referência ao Publisher's 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 Publisher seja destruído.

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

videoEnabled

É disparado quando o Publisher retoma o envio de vídeo ao Publisher após o vídeo ter sido desativado anteriormente.

Veja: : - Evento - vídeo desativado evento

alteração na qualidade do vídeo

É enviado quando o Publisher detecta uma alteração significativa na qualidade do vídeo, como quedas na resolução ou degradação da qualidade devido à largura de banda ou à CPU.

Este evento difere de videoDisabled e videoEnabled Eventos do Publisher, na medida em que relatam alterações relevantes na qualidade do vídeo. videoDisabled e videoEnabled indica apenas que a trilha de vídeo do assinante foi ativada ou desativada (por exemplo, devido a uma atualização de propriedade do stream ou ao recurso de fallback de áudio). Em contrapartida, esse evento fornece informações de diagnóstico sobre as causas da degradação da qualidade — tais como limitações de CPU ou largura de banda — e também pode ser acionado mesmo quando o vídeo permanece ativado.

O objetivo principal deste evento é indicar os motivos de limitação de qualidade. É possível que a resolução ou a camada de vídeo sejam alteradas mesmo quando o motivo não for explicitamente uma mudança de resolução — por exemplo, como consequência de limitações da CPU. Consulte as estatísticas atualizadas fornecidas no evento para obter o contexto completo. Quando um motivo de degradação da qualidade anteriormente ativo for resolvido, o evento será acionado novamente com "none" como motivo.

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

  • "bandwidth" — Deterioração da qualidade devido à largura de banda insuficiente da rede
  • "cpu" — Deterioração da qualidade causada por limitações da CPU no dispositivo do cliente
  • "other" — Outros motivos não especificados
  • "codecChange" — Indica que o codec de vídeo foi alterado
  • "resolutionChange" — Isso pode ocorrer devido a restrições de taxa de bits, adaptação do codificador, alterações na fonte da câmera (por exemplo, troca de câmera ou alteração da resolução de entrada) ou alterações na configuração, e nem sempre implica em perda de qualidade
  • "none" — Quando um motivo de degradação da qualidade que estava ativo anteriormente é cancelado

O statsContainer 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. Observe que, para um editor em uma sessão retransmitida, o objeto de estatísticas contém um connectionId e um subscriberId, já que o emissor envia um fluxo separado para cada assinante e as estatísticas são relatadas por assinante. Isso permite que o usuário distinga qual assinante pode estar enfrentando uma degradação na qualidade. Em sessões retransmitidas, apenas as estatísticas correspondentes ao assinante afetado são incluídas no evento.

Veja: : - Evento