Inscreva-se: Gestão e Eventos

Este guia aborda o gerenciamento do comportamento do Subscriber e a resposta a eventos em tempo de execução, tanto para a Web (JavaScript) quanto para o React Native.

Gerenciamento de fluxos de assinantes (React Native)

Como detectar quando as dimensões do vídeo de uma transmissão mudam

As dimensões do vídeo de uma transmissão podem mudar se uma transmissão publicada a partir de um dispositivo móvel for redimensionada (por exemplo, devido a mudanças na orientação do dispositivo) ou se a janela de origem do compartilhamento de tela for redimensionada. Quando as dimensões do vídeo de uma transmissão mudam, o objeto Session dispara um evento, com definido como .

Como definir a taxa de quadros e a resolução preferidas

Ao assinar um stream que utiliza o recurso de vídeo escalável, você pode definir para a fim de gerenciar automaticamente a resolução do vídeo do assinante e otimizar o uso da CPU e da rede. Para um controle mais avançado, defina a taxa de quadros e a resolução preferidas para o stream assinado:

  • — Os valores válidos são 30, 15, 7 e 1. Deixe em branco para usar a taxa de quadros mais alta disponível.
  • — Os valores válidos são , , e . Deixe em branco para usar a resolução mais alta disponível.

Como detectar quando os fluxos saem de uma sessão

Quando um stream remoto sai de uma sessão, o componente dispara um evento:

O evento inclui detalhes como , , , , , e .

Exibição personalizada de assinantes

Por padrão, o renderiza as visualizações secundárias dos vídeos dos assinantes. Você também pode definir uma função de renderização para controlar totalmente a renderização usando :

Definindo as propriedades do fluxo

Defina propriedades globais para todos os assinantes por meio da propriedade `prop on`, ou defina propriedades por fluxo por meio da propriedade `prop`.

Gerenciamento de fluxos de assinantes (iOS Swift)

Gerencie assinantes, organize eventos e ajuste preferências no iOS.

Como detectar quando o vídeo de um assinante está desativado

func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video disabled.")
}

Possíveis motivos

  • OTSubscriberVideoEventPublisherPropertyChanged
  • OTSubscriberVideoEventQualityChanged
  • OTSubscriberVideoEventSubscriberPropertyChanged

Quando o vídeo recomeçar:

func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video enabled.")
}

Como obter informações sobre um fluxo

O OTStream O objeto inclui:

  • connection — A conexão editorial
  • creationTime — Data e hora
  • hasAudio — Bool
  • hasVideo — Bool
  • name — Nome opcional do fluxo
  • session — Sessão associada
  • streamId — ID exclusivo
  • videoDimensions — CGSize
  • videoType — Câmera, tela ou personalizada

Você pode acompanhar as estatísticas usando OTSubscriberKitNetworkStatsDelegate.

Veja o guia de observabilidade do cliente para mais detalhes.

Como definir a taxa de quadros e a resolução preferidas

Para transmissões de vídeo com resolução adaptável, você pode definir:

  • SubscriberKit.preferredFrameRate
  • SubscriberKit.preferredResolution

Gerenciamento de fluxos de assinantes (somente JavaScript)

Restrição da taxa de quadros de uma transmissão assinada

Você também pode restringir a taxa de quadros do fluxo de vídeo de um assinante. Para restringir a taxa de quadros de um assinante, chame o método do objeto Subscriber, passando:

Passe e a taxa de quadros do fluxo de vídeo não será 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 (sessões com o modo de mídia definido como “routed”), e não em sessões com o modo de mídia definido como “relayed”. Em sessões com o modo de mídia definido como “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 a largura de banda da rede consumida pelo aplicativo.
  • 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.

Como detectar quando o áudio de um assinante está bloqueado ou desbloqueado

Alguns navegadores bloqueiam automaticamente a reprodução de áudio, exigindo um evento antes que a reprodução comece para os assinantes. Entre esses navegadores estão o Safari, o Firefox 66+ e o Chrome 71+.

O objeto Subscriber exibe um botão de reprodução de áudio caso a reprodução esteja bloqueada. É possível desativar o botão padrão de reprodução de áudio do Subscriber e exibir seu próprio elemento de interface do usuário, no qual o usuário clicará para iniciar a reprodução de áudio.

Veja Exibição de um elemento de interface do usuário personalizado quando o áudio do assinante estiver bloqueado.

Quando o áudio do assinante é bloqueado, o objeto `Subscriber` dispara um evento, e dispara um evento quando o áudio é desbloqueado:

Além disso, o Subscriber inclui um método que retorna se o áudio estiver bloqueado ou se não estiver.

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 evento (caso você tenha desativado o ícone padrão de reprodução de áudio)
  • O cliente local obtém acesso à câmera ou ao microfone (por exemplo, em resposta a uma chamada bem-sucedida para ).

Para obter mais informações, consulte este artigo da Mozilla sobre a reprodução automática no Firefox e este artigo do Google sobre a reprodução automática no Chrome.

Como detectar quando o vídeo de um assinante está desativado

Quando o vídeo do assinante é desativado, o objeto `Subscriber` dispara um evento:

Quando o Media Router desativa o vídeo de um assinante, talvez seja necessário ajustar a interface do usuário relacionada a esse assinante.

A propriedade do objeto de evento define o motivo pelo qual o vídeo foi desativado. Ela pode ser definida com um dos seguintes valores:

  • — A editora interrompeu a publicação do vídeo ligando para .
  • — O Media Router interrompeu o envio de vídeo ao assinante devido a alterações na qualidade da transmissão. Esse recurso do Media Router faz com que o assinante interrompa a transmissão de vídeo quando a conectividade se deteriora. (O assinante continua recebendo a transmissão de áudio, caso haja uma.)

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 dispara um evento.

Se a conectividade melhorar a ponto de permitir novamente a exibição de vídeo, o objeto Subscriber dispara um evento, e o Subscriber retoma a recepção do vídeo.

Por padrão, o Assinante exibe um indicador de vídeo desativado quando um evento com esse motivo é disparado e remove o indicador quando o evento ocorre.

Ao publicar uma transmissão, você pode evitar que o vídeo seja desativado devido à qualidade da transmissão. Defina como nas opções que você passa para .

Como obter estatísticas de assinantes (Web)

O método de um objeto Subscriber fornece informações sobre o fluxo do assinante, 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 recebidos
  • O número total de bytes de áudio e vídeo recebidos
  • A taxa média atual de quadros por segundo do vídeo

O código a seguir registra os índices de perda e as taxas de bits a cada segundo:

Para obter estatísticas de um fluxo publicado pelo cliente local, é necessário usar uma sessão roteada e definir a opção como ao se inscrever:

Para obter estatísticas mais detalhadas sobre a transmissão, use .

Como definir a taxa de quadros e a resolução preferidas (Web)

Ao se inscrever em um stream que utiliza o recurso de vídeo escalável, você pode definir como para gerenciar automaticamente a resolução de vídeo do assinante. Para um controle mais avançado, defina e nas opções que você passa para (ou use e após a inscrição).

Gerenciamento de fluxos de assinantes (Android)

Gerencie assinantes, organize eventos e ajuste preferências no Android.

Como detectar quando o vídeo de um assinante está desativado

Quando o vídeo está desativado:

override fun onVideoDisabled(subscriber: SubscriberKit, reason: String) {
    // Video disabled
}

Quando o vídeo recomeçar:

override fun onVideoEnabled(subscriber: SubscriberKit, reason: String) {
    // Video resumed
}

O reason Esse parâmetro explica por que a mudança ocorreu.

Como obter informações sobre um fluxo

O Stream O objeto oferece:

  • getConnection() — Objeto de conexão
  • getCreationTime() — Data e hora de criação
  • hasAudio() — Booleano
  • hasVideo() — Booleano
  • getName() — Nome do stream
  • getStreamId() — ID exclusivo
  • getVideoHeight() — Altura em pixels
  • getVideoWidth() — Largura em pixels
  • getVideoType() — Câmera, compartilhamento de tela ou personalização

Você também pode acompanhar as estatísticas:

  • setAudioStatsListener()
  • setVideoStatsListener()
  • setMediaLinkStatsListener()
  • getRtcStatsReport()

Como definir a taxa de quadros e a resolução preferidas

Para transmissões de vídeo com resolução adaptável, você pode definir preferências:

  • SubscriberKit.setPreferredFrameRate()
  • SubscriberKit.setPreferredResolution()

Gerenciamento de fluxos de assinantes (Windows)

Gerencie assinantes, organize eventos e defina preferências no Windows.

Como detectar quando o vídeo de um assinante está desativado

O OpenTok Media Router pode interromper o envio de vídeo caso as condições da rede se deteriorem.

O assinante continua recebendo o áudio, se houver.

Quando o vídeo está desativado, o Subscriber o objeto envia um VideoDisabled evento:

subscriber.VideoDisabled += Subscriber_VideoDisabled;

public void Subscriber_VideoDisabled(object sender)
{
    // Display a user interface notification.
}

Quando o vídeo recomeçar:

subscriber.VideoEnabled += Subscriber_VideoEnabled;

public void Subscriber_VideoEnabled(object sender)
{
    // Video resumes for the subscriber.
}

Talvez seja interessante ajustar a interface do usuário em resposta a esses eventos.

Como obter informações sobre um fluxo

O Stream O objeto expõe as seguintes propriedades:

  • Connection — A conexão editorial
  • CreationTime — Carimbo de data e hora da criação do stream
  • HasAudio — Se a transmissão tem áudio
  • HasVideo — Se a transmissão contém vídeo
  • Name — Nome do stream
  • Id — ID exclusivo da transmissão
  • Height — Altura do vídeo em pixels
  • Width — Largura do vídeo em pixels
  • VideoSourceType — Câmera, compartilhamento de tela ou tipo de fonte personalizado

Possível VideoSourceType valores:

  • VideoSourceType.StreamVideoTypeCamera
  • VideoSourceType.StreamVideoTypeScreen
  • VideoSourceType.StreamVideoTypeCustom

Estatísticas de monitoramento

Use esses eventos para monitorar as estatísticas do fluxo:

  • Subscriber.AudioStatsUpdated
  • Subscriber.VideoStatsUpdated
  • Subscriber.MediaLinkStatsUpdated

Para obter estatísticas de baixo nível do RTC:

subscriber.GetRtcStatsReport();

Como definir a taxa de quadros e a resolução preferidas

Para transmissões que utilizam o recurso de vídeo escalável, configure:

  • Subscriber.PreferredFramerate
  • Subscriber.PreferredResolution

Gerenciamento de fluxos de assinantes (Linux)

Gerencie assinantes, organize eventos e ajuste preferências no Linux.

Como detectar quando o vídeo de uma transmissão está desativado

O on_stream_has_video_changed função de retorno de chamada do otc_session_callbacks A função `struct` é chamada quando a disponibilidade do vídeo de uma transmissão muda.

O stream o parâmetro é um ponteiro para um otc_stream estrutura.

Uso:

otc_stream_get_id(stream)

para recuperar o ID do stream.

Como obter informações sobre um fluxo

Use as seguintes funções para recuperar informações sobre o fluxo:

  • otc_stream_get_connection() — Retorna a conexão de publicação
  • otc_stream_get_creation_time() — Retorna o carimbo de data e hora da criação do fluxo
  • otc_stream_has_audio() — Se a transmissão está reproduzindo áudio
  • otc_stream_has_video() — Se a transmissão está exibindo vídeo
  • otc_stream_has_audio_track() — Se a transmissão possui uma faixa de áudio
  • otc_stream_has_video_track() — Se a transmissão possui uma trilha de vídeo
  • otc_stream_get_name() — Retorna o nome do fluxo
  • otc_stream_get_id() — Retorna o ID exclusivo do fluxo
  • otc_stream_get_video_height() — Retorna a altura do vídeo em pixels
  • otc_stream_get_video_width() — Retorna a largura do vídeo em pixels
  • otc_stream_get_video_type() — Retorna o tipo de vídeo do stream

Tipos de vídeo possíveis:

  • OTC_STREAM_VIDEO_TYPE_CAMERA
  • OTC_STREAM_VIDEO_TYPE_SCREEN

Estatísticas de monitoramento

Utilize estas funções de retorno de chamada do assinante:

  • on_audio_stats()
  • on_video_stats()
  • on_media_link_stats()

Para obter estatísticas de baixo nível do RTC, use:

otc_subscriber_get_rtc_stats_report()

Como definir a taxa de quadros e a resolução preferidas

Para transmissões que utilizam o recurso de vídeo escalável, é possível definir a taxa de quadros e a resolução preferidas usando:

  • otc_subscriber_set_preferred_framerate()
  • otc_subscriber_set_preferred_resolution()