- A reprodução off-line com licenças persistentes e o Widevine L1 agora são compatíveis com o Android.
- O Chrome agora desativa faixas de vídeo quando um vídeo MSE é reproduzido em segundo plano para otimizar o desempenho.
- Os desenvolvedores da Web podem personalizar o intervalo pesquisável em transmissões ao vivo do MSE.
- O Chrome agora oferece suporte a FLAC em MP4 com MSE.
- O vídeo ficará em tela cheia quando o dispositivo for girado.
Licenças persistentes para Android
Licença persistente em Encrypted Media Extensions (EME) significa que ela pode ser mantida no dispositivo para que os aplicativos possam carregar a licença na memória sem enviar outra solicitação de licença ao servidor. É assim que o EME oferece suporte à reprodução off-line.
Até agora, o ChromeOS era a única plataforma compatível com licenças permanentes. Isso não é mais verdade. A reprodução de conteúdo protegido pelo EME enquanto o dispositivo está off-line também é possível no Android.
const config = [{
sessionTypes: ['persistent-license'],
videoCapabilities: [{
contentType: 'video/webm; codecs="vp09.00.10.08"',
robustness: 'SW_SECURE_DECODE' // Widevine L3
}]
}];
// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
// User will be able to watch encrypted content while being offline when
// license is stored locally on device and loaded later.
})
.catch(error => {
// Persistent licenses are not supported on this platform yet.
});
Você pode testar licenças persistentes por conta própria verificando o Sample Media PWA e seguindo estas etapas:
- Acesse https://biograf-155113.appspot.com/ttt/episode-2/
- Clique em "Tornar disponível off-line" e aguarde o download do vídeo.
- Ative o modo avião.
- Clique no botão "Reproduzir" e aproveite o vídeo!
Widevine L1 para Android
Como você já deve saber, todos os dispositivos Android precisam oferecer suporte ao nível 3 de segurança Widevine (Widevine L3). No entanto, há muitos dispositivos que também oferecem suporte ao mais alto nível de segurança: o Wirevine Security Level 1, em que todo o processamento, criptografia e controle de conteúdo são realizados no Ambiente de execução confiável (TEE).
Boas notícias! O Widevine L1 agora tem suporte no Chrome para Android para que a mídia possa ser reproduzida da maneira mais segura. Observe que ele já era compatível com o Chrome OS.
const config = [{
videoCapabilities: [{
contentType: 'video/webm; codecs="vp09.00.10.08"',
robustness: 'HW_SECURE_ALL' // Widevine L1
}]
}];
// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
// User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
// Widevine L1 is not supported on this platform yet.
});
O Shaka Player, a biblioteca JavaScript para formatos de mídia adaptáveis, como DASH e HLS, tem uma demonstração para você testar o Widevine L1:
- Acesse https://shaka-player-demo.appspot.com/demo/ e clique em "Permitir" quando solicitado.
- Selecione "Angel One (multicodec, multilíngue, Widevine)".
- Insira
HW_SECURE_ALL
no campo "Robustez de vídeo" da seção "Configuração". - Clique no botão "Carregar" e aproveite o vídeo!
Otimizações de faixa de vídeo em segundo plano (somente MSE)
A equipe do Chrome está sempre tentando encontrar novas maneiras de melhorar a duração da bateria, e o Chrome 62 não é exceção.
O Chrome agora desativa faixas de vídeo quando o vídeo é reproduzido em segundo plano (por exemplo, em uma guia não visível) se o vídeo usa Media Source Extensions (MSE). Confira nosso artigo anterior para saber mais.
Personalizar o intervalo pesquisável em transmissões ao vivo do MSE
Como você já deve saber, o atributo seekable
contém os intervalos
do recurso de mídia que o navegador pode buscar. Normalmente, ele contém um
único período que começa em 0 e termina na duração do recurso de mídia. Se
a duração não estiver disponível, como uma transmissão ao vivo, o período poderá
mudar continuamente.
A boa notícia é que agora é possível personalizar de forma mais eficaz a
lógica de intervalo seekable
com Media Source Extensions (MSE),
fornecendo ou removendo um único intervalo pesquisável que é unido aos intervalos
atuais em buffer. Isso resulta em um único intervalo pesquisável que se ajusta a ambos, quando
a duração da fonte de mídia é +Infinity
.
No código abaixo, a fonte de mídia já foi anexada a um elemento de mídia e contém apenas o segmento init:
const mediaSource = new MediaSource();
...
mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }
mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }
// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }
mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }
Há muitos casos que não foram abordados acima, então recomendo que você teste a amostra oficial para ver como os períodos em buffer e pesquisável reagem a diferentes eventos de MSE.
Intent de envio | Rastreador do Chromestatus | Bug do Chromium
FLAC em MP4 para MSE
O formato de codificação de áudio sem perda FLAC é compatível com a reprodução de mídia normal desde o Chrome 56. O FLAC no suporte a ISO-BMFF (também conhecido como FLAC em MP4) foi adicionado logo depois. Agora, o FLAC em MP4 está disponível no Chrome 62 para Media Source Extensions (MSE).
Para mais informações, o pessoal do Firefox é quem desenvolveu e implementou suporte para uma especificação de encapsulamento de MP4 (link em inglês), e a BBC está testando isso com o MSE. Para saber mais, leia a postagem "Delivering Radio 3 Concert Sound" da BBC.
Veja como detectar se o FLAC em MP4 é compatível com o MSE:
if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
// TODO: Fetch data and feed it to a media source.
}
Se você quiser ver um exemplo completo, confira nossa amostra oficial (link em inglês).
Intent de envio | Rastreador do Chromestatus | Bug do Chromium
O vídeo automático vai para tela cheia quando o dispositivo é girado
Se você girar um dispositivo para o modo paisagem enquanto um vídeo estiver sendo reproduzido na janela de visualização, a reprodução vai mudar automaticamente para o modo de tela cheia. Girar o dispositivo para retrato coloca o vídeo de volta no modo de janela. Confira nosso artigo anterior para mais detalhes.