Introdução
Instalação
Guias
- Engine
- Perfil
- Navegador
- BrowserView
- Navegação
- Conteúdo
- Menu de contexto
- DOM
- JavaScript
- Pop-ups
- Diálogos
- Downloads
- Rede
- Cache
- Cookies
- Proxy
- Autenticação
- Permissões
- Plugins
- Impressão
- Senhas
- Perfis de dados do usuário
- Cartões de crédito
- Mídia
- Zoom
- Corretor ortográfico
- Implantação
- Chromium
Resolução de problemas
- Registro
- Exceções comuns
- A aplicação não termina
- O vídeo não é reproduzido
- Não é possível iniciar sessão na conta Google
- Os dados do usuário não são armazenados
- Esquema de cores
- Falha no início
- Início lento no Windows
- Aplicação .NET que não responde
- Encerramento inesperado do processo Chromium
- Comportamento inesperado
- Fim do suporte do Windows 7/8/8.1
Migração
Mídia
Este guia apresenta uma visão geral dos formatos de vídeo e áudio suportados, descreve como controlar o áudio, obter informações sobre as câmaras Web e microfones disponíveis e outras funcionalidades.
Codecs
O Google Chrome e o Chromium diferem em vários aspectos, incluindo os conjuntos de codecs de áudio e vídeo que suportam.
A tabela abaixo mostra quais os codecs suportados pela base de código dos navegadores correspondentes.
Chromium | Google Chrome | ||
---|---|---|---|
AAC | não | sim | |
AV1 | sim | sim | |
FLAC | sim | sim | |
H.264 | não | sim | |
HEVC | não | sim | |
MP3 | sim | sim | |
Opus | sim | sim | |
Theora | sim | sim | |
Vorbis | sim | sim | |
VP8 | sim | sim | |
VP9 | sim | sim | |
WAV | sim | sim |
Como pode ver na tabela acima, o Google Chrome suporta determinados codecs e o Chromium não. O motivo é porque estes codecs são proprietários e não podem ser utilizados num projeto de código aberto ou comercial sem a obtenção de licenças dos titulares das patentes correspondentes.
Diferentes codecs têm diferentes detentores de patentes. Por exemplo, para utilizar o H.264, as empresas devem adquirir a licença da empresa MPEG-LA. Você pode ler mais sobre os termos da licença no site Web MPEG-LA.
Codecs proprietários
Os detentores de patentes não licenciam codecs para o software que representa apenas uma parte do produto final implementado para os usuários finais, por exemplo, bibliotecas como o DotNetBrowser.
Para suportar H.264, HEVC e AAC nos seus produtos, é necessário adquirir as licenças adequadas e ativar as seguintes funcionalidades proprietárias:
engine = EngineFactory.Create(new EngineOptions.Builder
{
RenderingMode = RenderingMode.HardwareAccelerated,
ProprietaryFeatures = ProprietaryFeatures.H264 |
ProprietaryFeatures.Aac |
ProprietaryFeatures.Hevc
}.Build());
engine = EngineFactory.Create(New EngineOptions.Builder With
{
.RenderingMode = RenderingMode.HardwareAccelerated,
.ProprietaryFeatures = ProprietaryFeatures.H264 Or
ProprietaryFeatures.Aac Or
ProprietaryFeatures.Hevc
}.Build())
Depois de fornecer as informações da licença e ativar as funcionalidades proprietárias, você pode carregar páginas Web com os formatos AAC, H.264 e HEVC reproduzir arquivos de áudio e vídeo, tal como no Google Chrome. Por padrão, os codecs proprietários estão desativados.
Os codecs H.264, HEVC e AAC são os componentes proprietários. Ao ativar estes codecs, o usuário declara ter conhecimento de que o H.264, HEVC e o AAC são componentes proprietários e que você deve ter uma licença para os utilizar. Para mais informações, pode contatar os titulares das patentes: Via Licensing e MPEG LA. A TeamDev não será responsável pela sua utilização dos codecs H.264, HEVC e AAC.
Vídeo
O DotNetBrowser suporta totalmente o elemento HTML5 <video>
e pode reproduzir vídeo nos formatos suportados.
Se a biblioteca não puder reproduzir um vídeo, ou se um formato de vídeo não for suportado, o DotNetBrowser sugere o download do arquivo de vídeo. Para mais informações, consulte a seção Downloads que contém as instruções sobre como gerir os downloads.
Áudio
Controlando o áudio
Utilizando o IAudioController
é possível saber se o áudio está sendo reproduzido na página Web carregada:
bool audioPlaying = browser.Audio.IsPlaying;
Dim audioPlaying As Boolean = browser.Audio.IsPlaying
Se necessário, você pode mutar ou desmutar o áudio na página Web carregada:
browser.Audio.Muted = true;
browser.Audio.Muted = false;
browser.Audio.Muted = True
browser.Audio.Muted = False
Para verificar se o áudio está silenciado, utilize o seguinte código:
bool audioMuted = browser.Audio.Muted;
Dim audioMuted As Boolean = browser.Audio.Muted
Eventos de áudio
Para saber se o áudio começou/parou de ser reproduzido na página Web carregada, você pode se inscrever nos seguintes eventos:
browser.Audio.AudioPlaybackStarted += (s, e) => { };
browser.Audio.AudioPlaybackStopped += (s, e) => { };
AddHandler browser.Audio.AudioPlaybackStarted, Sub(s, e)
End Sub
AddHandler browser.Audio.AudioPlaybackStopped, Sub(s, e)
End Sub
DRM
Widevine
Os serviços Web como Netflix ou Amazon Prime utilizam Widevine para distribuir os seus conteúdos codificados por DRM. O Widevine é um componente proprietário da Google e está desativado por padrão. Para o ativar e reproduzir o conteúdo codificado por DRM, utilize o exemplo de código abaixo:
engine = EngineFactory.Create(new EngineOptions.Builder
{
RenderingMode = RenderingMode.HardwareAccelerated,
ProprietaryFeatures = ProprietaryFeatures.Widevine
}.Build());
engine = EngineFactory.Create(New EngineOptions.Builder With
{
.RenderingMode = RenderingMode.HardwareAccelerated,
.ProprietaryFeatures = ProprietaryFeatures.Widevine
}.Build())
O Widevine é um componente de propriedade da Google, regido pelos seus próprios termos de utilização. Para mais informações, consulte Widevine.
Câmara e microfone
O DotNetBrowser suporta uma câmara Web e um microfone. Você pode obter informações sobre todos os dispositivos de stream multimídia disponíveis utilizando o exemplo de código abaixo:
IMediaDevices mediaDevices = engine.MediaDevices;
// Obter todos os dispositivos de vídeo disponíveis, por exemplo, câmara web.
IEnumerable<MediaDevice> videoDevices = mediaDevices.VideoCaptureDevices;
// Obter todos os dispositivos de áudio disponíveis, por exemplo, o microfone.
IEnumerable<MediaDevice> audioDevices = mediaDevices.AudioCaptureDevices;
Dim mediaDevices As IMediaDevices = engine.MediaDevices
' Obter todos os dispositivos de vídeo disponíveis, por exemplo, câmara web.
Dim videoDevices As IEnumerable(Of MediaDevice) = mediaDevices.VideoCaptureDevices
' Obter todos os dispositivos de áudio disponíveis, por exemplo, o microfone.
Dim audioDevices As IEnumerable(Of MediaDevice) = mediaDevices.AudioCaptureDevices
É possível detectar quando a captura de mídia começa ou para utilizando estes eventos:
Browser.MediaStreamCaptureStarted += (sender, args) =>
{
Console.WriteLine($"Iniciou a captura {args.MediaStreamType}");
};
Browser.MediaStreamCaptureStopped += (sender, args) =>
{
Console.WriteLine($"Parou de capturar {args.MediaStreamType}");
};
AddHandler Browser.MediaStreamCaptureStarted, Sub(sender, args)
Console.WriteLine($"Iniciou a captura {args.MediaStreamType}")
End Sub
AddHandler Browser.MediaStreamCaptureStopped, Sub(sender, args)
Console.WriteLine($"Parou de capturar {args.MediaStreamType}")
End Sub
Selecionando um dispositivo multimídia
Você pode ter várias webcams e microfones no seu ambiente. Quando uma página Web pretende utilizar um deles, você pode utilizar SelectMediaDeviceHandler
para indicar à página Web qual o dispositivo utilizar.
O exemplo de código abaixo demonstra como selecionar o primeiro dispositivo da lista de dispositivos disponíveis:
mediaDevices.SelectMediaDeviceHandler =
new Handler<SelectMediaDeviceParameters, SelectMediaDeviceResponse>(p =>
{
return SelectMediaDeviceResponse.Select(p.Devices.FirstOrDefault());
});
mediaDevices.SelectMediaDeviceHandler =
New Handler(Of SelectMediaDeviceParameters, SelectMediaDeviceResponse)(Function(p)
Return SelectMediaDeviceResponse.Select(p.Devices.FirstOrDefault())
End Function)
O manipulador não será invocado se não existirem dispositivos de entrada multimídia do tipo solicitado.
Se pretender restringir o acesso ao microfone ou à Webcam para uma determinada página Web, você pode utilizar RequestPermissionHandler
, tal como mostrado no exemplo de código abaixo:
engine.Profiles.Default.Permissions.RequestPermissionHandler =
new Handler<RequestPermissionParameters, RequestPermissionResponse>(p =>
{
if (p.Type == PermissionType.AudioCapture || p.Type == PermissionType.VideoCapture)
{
return RequestPermissionResponse.Deny();
}
return RequestPermissionResponse.Grant();
});
engine.Profiles.Default.Permissions.RequestPermissionHandler =
New Handler(Of RequestPermissionParameters, RequestPermissionResponse)(Function(p)
Dim type = p.Type
If type = PermissionType.AudioCapture OrElse type = PermissionType.VideoCapture Then
Return RequestPermissionResponse.Deny()
End If
Return RequestPermissionResponse.Grant()
End Function)