Desde abril de 2017, o Chrome para Android O oferece suporte ao picture-in-picture.
Ele permite que os usuários reproduzam um elemento <video>
em uma pequena janela de sobreposição que não é
bloqueada por outras janelas, para que eles possam assistir enquanto fazem outras coisas.
Veja como funciona: abra o Chrome, acesse um site que tenha um vídeo e abra em tela cheia. Em seguida, pressione o botão "Início" para acessar a tela inicial do Android, e o vídeo em reprodução vai mudar automaticamente para o modo Picture-in-Picture. É isso. Legal, né?
Sim, mas e o computador? E se o site quiser controlar essa experiência?
A boa notícia é que uma especificação da API Web Picture-in-Picture está sendo redigida neste momento. O objetivo dessa especificação é permitir que os sites iniciem e controlem esse comportamento expondo o seguinte conjunto de propriedades à API:
- Notifique o site quando um vídeo entrar e sair do modo picture-in-picture.
- Permitir que o site acione o modo picture-in-picture em um elemento de vídeo por meio de um gesto do usuário.
- Permitir que o site saia do modo picture-in-picture.
- Permite que o site verifique se o picture-in-picture pode ser acionado.
E ficou assim:
<video id="video" src="https://example.com/file.mp4"></video>
<button id="pipButton"></button>
<script>
// Hide button if Picture-in-Picture is not supported.
pipButton.hidden = !document.pictureInPictureEnabled;
pipButton.addEventListener('click', function() {
// If there is no element in Picture-in-Picture yet, let's request Picture
// In Picture for the video, otherwise leave it.
if (!document.pictureInPictureElement) {
video.requestPictureInPicture()
.catch(error => {
// Video failed to enter Picture-in-Picture mode.
});
} else {
document.exitPictureInPicture()
.catch(error => {
// Video failed to leave Picture-in-Picture mode.
});
}
});
</script>
Feedback
O que você acha? Envie seu feedback e relate problemas no repositório do WICG de Picture-in-Picture. Queremos saber sua opinião.
Como evitar o comportamento padrão do PIP no Android
Atualmente, é possível impedir que o vídeo use o comportamento padrão do PiP do Android no Chrome respondendo a um evento de redimensionamento e detectando quando o tamanho da janela mudou significativamente (consulte o código abaixo). Isso não é recomendado como uma solução permanente, mas oferece uma opção temporária até que a API da Web seja implementada.
// See whether resize is small enough to be PiP. It's a hack, but it'll
// work for now.
window.addEventListener('resize', function() {
if (!document.fullscreenElement) {
return;
}
var minimumScreenSize = 0.33;
var screenArea = screen.width * screen.height;
var windowArea = window.outerHeight * window.outerWidth;
// If the size of the window relative to the screen is less than a third,
// let's assume we're in PiP and exit fullscreen to prevent Auto PiP.
if ((windowArea / screenArea) < minimumScreenSize) {
document.exitFullscreen();
}
});