Ajustando o áudio e o vídeo — Linux
Você pode fazer ajustes de áudio e vídeo em publicado e inscrito fluxos:
- Publicação apenas de áudio ou vídeo
- Publicação em uma sessão apenas de voz
- Utilizando um capturador de vídeo personalizado
- Reproduzir a exibição local do vídeo de um editor
- Utilização de um driver de áudio personalizado
- Como ajustar o volume do áudio para um assinante
- Inscrever-se apenas para áudio ou vídeo
- Como verificar se um stream contém áudio ou vídeo
- Ajuste da qualidade do áudio
- Definição da preferência de redução da qualidade de vídeo do editor
Publicação apenas de áudio ou vídeo
Você pode ativar ou desativar o áudio e o vídeo chamando a função otc_publisher_set_publish_audio() e otc_publisher_set_publish_video() funções, passando OTC_FALSE ou OTC_FALSE como o publish_audio e publish_audio parâmetros. Por exemplo, o código a seguir desativa o áudio:
otc_publisher_set_publish_audio(publisher, OTC_FALSE);
Publicação em uma sessão apenas de voz
Para configurar um somente voz sessão, instanciar um otc_publisher_settings struct, chame a otc_publisher_settings_set_video_track() função, passando OTC_FALSE como o enabled parâmetro. Em seguida, use o otc_publisher_new_with_settings() função a ser criada. Por exemplo, o código a seguir cria um editor para uma sessão apenas de voz:
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_video_track(publisher_settings, OTC_FALSE);
otc_publisher_callbacks publisher_callbacks = {0};
// Set callbacks for the publisher. Then:
otc_publisher publisher = otc_publisher_new_with_settings(publisher_callbacks, publisher_settings);
Utilizando um capturador de vídeo personalizado
O otc_publisher_new() A função inclui um capturer parâmetro. Se você definir isso como NULL, o SDK utiliza a câmera padrão do sistema como fonte para o fluxo de vídeo publicado. No entanto, é possível usar um capturador de vídeo personalizado para o publicador, definindo um otc_video_capturer_callbacks struct e passando-a como o capturer parâmetro do otc_publisher_new() função. A otc_video_capturer_callbacks A estrutura inclui ponteiros para funções de retorno de chamada que são acionadas em eventos relacionados ao vídeo do editor, como quando o capturador de vídeo precisa de um novo quadro de vídeo.
Para ver um exemplo, consulte o exemplo “Custom Video Capturer” do exemplos-do-SDK-do-Vonage-para-Linux repo.
Reproduzir a exibição local do vídeo de um editor
Por padrão, o renderizador local do vídeo publicado exibe o vídeo em espelho. Você pode definir o mirror_on_local_render propriedade do otc_video_capturer_settings instância obtida ao chamar a get_capture_settings(capturer, settings) função. Defina-a como true para que o vídeo seja espelhado no renderizador local do editor. Defina-o como false para que não seja espelhado.
Essa configuração afeta apenas o vídeo renderizado no aplicativo cliente do editor. Ela não tem efeito sobre o vídeo nos clientes assinantes.
Utilização de um driver de áudio personalizado
É possível definir um dispositivo de áudio personalizado para fornecer áudio a todos os emissores no cliente e para processar o fluxo de áudio combinado de todos os fluxos aos quais o cliente está inscrito.
Um dispositivo de áudio personalizado é representado por um otc_audio_device struct. E um otc_audio_device_callbacks A estrutura inclui ponteiros para funções que atuam como callbacks relacionados ao áudio, os quais são invocados pelo SDK do OpenTok para Linux.
Para ver um exemplo, consulte o exemplo “Dispositivo de áudio personalizado” no exemplos-do-SDK-do-Vonage-para-Linux repo.
Como ajustar o volume do áudio para um assinante
Você pode ajustar individualmente o volume do áudio para cada assinante ligando para o otc_subscriber_set_audio_volume() função.
Inscrever-se apenas para áudio ou vídeo
Por padrão, um assinante é configurado para receber áudio e vídeo, caso estejam disponíveis. Você pode ativar ou desativar o áudio chamando a função otc_subscriber_set_subscribe_to_audio(otc_subscriber *subscriber, otc_bool subscribe_to_audio) :
// audio off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// audio on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Você pode ativar ou desativar o vídeo chamando a função otc_subscriber_set_subscribe_to_video(otc_subscriber *subscriber, otc_bool subscribe_to_video) :
// video off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// video on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Como verificar se um stream contém áudio ou vídeo
Você pode ligar para o otc_stream_has_audio() e otc_stream_has_audio() funções-membro de um otc_stream verificar se há áudio ou vídeo.
Ajuste da qualidade do áudio
Para ajustar a qualidade do áudio de uma transmissão de editor, podem ser utilizados os seguintes métodos:
Taxa de bits de áudio
otc_publisher_set_max_audio_bitrate(otc_publisher* publisher, uint32_t bitrate);
A taxa de bits desejada para o áudio transmitido, em bits por segundo. O intervalo de valores suportado é de 6.000 a 510.000. (Valores inválidos são ignorados.) Defina esse valor para ativar o áudio de alta qualidade (ou para reduzir o uso de largura de banda com áudio de qualidade inferior). Se você não definir essa opção, o OpenTok atribui automaticamente uma taxa de bits de áudio para a transmissão.
A seguir, apresentamos as configurações recomendadas:
- 8.000 – 12.000 para voz em banda estreita (NB)
- 16.000 – 20.000 para fala em banda larga (WB)
- 28.000 – 40.000 para fala em banda completa (FB)
- 48.000 a 64.000 para música com banda completa (FB)
Desativar o processamento de áudio
otc_publisher_settings_set_disable_audio_processing (otc_publisher_settings* settings, otc_bool disabled);
Se deseja desativar o cancelamento de eco, o controle automático de ganho e a supressão de ruído para o áudio transmitido. Talvez seja interessante definir essa opção como true ao publicar áudio de alta qualidade. O valor padrão é false.
Controle Automático de Ganho
otc_publisher_settings_set_auto_gain_control(otc_publisher_settings* settings, otc_bool enabled);
Se deseja ativar o controle automático de ganho para o áudio publicado. Talvez seja interessante definir essa opção como false ao publicar áudio de alta qualidade. O valor padrão é true. Essa configuração é ignorada se você desativar o processamento de áudio.
Cancelamento de eco
otc_publisher_settings_set_echo_cancellation(otc_publisher_settings* settings, otc_bool enabled);
Se deseja ativar o cancelamento de eco para o áudio transmitido. Você pode definir essa opção como false ao publicar áudio de alta qualidade. O valor padrão é true. Essa configuração será ignorada se você desativar o processamento de áudio
Supressão de ruído
otc_publisher_settings_set_noise_suppression(otc_publisher_settings* settings, otc_bool enabled);
Se deseja ativar a supressão de ruído para o áudio publicado. Talvez seja interessante definir essa opção como false ao publicar áudio de alta qualidade. O valor padrão é true. Essa configuração será ignorada se você desativar o processamento de áudio.
Estéreo
otc_publisher_settings_set_stereo(otc_publisher_settings* settings, otc_bool enabled);
Se o áudio estéreo deve ser publicado. O valor padrão é false.
Definição da preferência de redução da qualidade de vídeo do editor
Quando a largura de banda ou a CPU estão limitadas, o mecanismo de vídeo pode reduzir a taxa de quadros e/ou a resolução do vídeo do editor para se adaptar a essas limitações.
A preferência de degradação é uma configuração que permite ajustar esse comportamento.
Os desenvolvedores são responsáveis por definir e aplicar as preferências de degradação de acordo com seu caso de uso e requisitos.
Isso funciona como uma preferência, o que significa que o mecanismo de vídeo tentará seguir a preferência selecionada, mas não há garantias quanto ao resultado.
Essa preferência pode se comportar de maneira diferente ao usar vídeo escalável, onde o mecanismo de vídeo pode optar por remover camadas em vez de reduzir a resolução.
Dica de conteúdo e a preferência de degradação têm finalidades diferentes, mas relacionadas: a dica de conteúdo descreve o tipo de conteúdo que está sendo transmitido, enquanto a preferência de degradação controla a estratégia de codificação. Ao definir uma dica de conteúdo, o mecanismo de vídeo determina automaticamente a preferência de degradação adequada (por exemplo, “texto” seleciona automaticamente a manutenção da resolução). Uma preferência de degradação definida explicitamente substituirá essa seleção automática.
Você pode definir esse valor usando qualquer uma das opções fornecidas otc_degradation_preference valores:
Não definido
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_NOT_SET);
O valor padrão. O mecanismo de vídeo determinará a preferência ideal de redução de qualidade.
Manter a taxa de quadros e a resolução
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE_AND_RESOLUTION);
O motor de vídeo tentará manter a taxa de quadros estável e não reduzir a resolução.
Manter a taxa de quadros
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE);
O motor de vídeo tentará manter a taxa de quadros estável, mas poderá reduzir a resolução, se necessário.
Manter a resolução
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_RESOLUTION);
O motor de vídeo não reduzirá a resolução, mas poderá reduzir a taxa de quadros, se necessário.
Equilibrado
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_BALANCED);
O motor de vídeo tentará encontrar um equilíbrio entre a redução da resolução e da taxa de quadros, quando necessário.