- 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 as 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 de busca em transmissões MSE ao vivo.
- O Chrome agora oferece suporte a FLAC em MP4 com MSE.
- O vídeo vai para tela cheia quando o dispositivo é girado.
Licenças persistentes para Android
Uma licença persistente em Extensões de mídia criptografada (EME) significa que a licença 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 para o servidor. É assim que a reprodução off-line tem suporte no EME.
Até agora, o ChromeOS era a única plataforma com suporte a licenças persistentes. Isso não é mais verdade. Agora também é possível reproduzir conteúdo protegido pelo EME enquanto o dispositivo está off-line 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.
});
Para testar as licenças persistentes, confira a PWA de mídia de exemplo e siga 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 de segurança 3 do Widevine (Widevine L3). No entanto, há muitos dispositivos que também oferecem suporte ao nível de segurança mais alto: nível 1 de segurança do Widevine, em que todo o processamento de conteúdo, criptografia e controle é realizado 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. 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.
- Escolha "Angel One (multicodec, multilingual, Widevine)".
- Insira
HW_SECURE_ALL
no campo "Resistência do vídeo" da seção "Configuração". - Clique no botão "Carregar" e aproveite o vídeo.
Otimizações de faixas 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 é uma exceção.
O Chrome agora desativa as faixas de vídeo quando o conteúdo é reproduzido em segundo plano (por exemplo, em uma guia não visível) se o vídeo usa Extensões de origem de mídia (MSE). Confira nosso artigo anterior para saber mais.
Personalizar o intervalo de busca em transmissões MSE ao vivo
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. No entanto, se
a duração não estiver disponível, como em uma transmissão ao vivo, o período poderá
mudar continuamente.
A boa notícia é que agora você pode personalizar melhor a lógica de intervalo seekable
com as Extensões de origem de mídia (MSEs, na sigla em inglês), fornecendo ou removendo um único intervalo pesquisável que é unido aos intervalos em buffer atuais. Isso resulta em um único intervalo de busca que se encaixa em ambos, quando
a duração da fonte de mídia é +Infinity
.
No código abaixo, a origem de mídia já foi anexada a um elemento de mídia e contém apenas o segmento de inicialização:
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 abordamos acima. Por isso, sugerimos que você teste o exemplo oficial para ver como os períodos de tempo com buffer e pesquisáveis reagem a diferentes eventos de MSE.
Intent to Ship | Rastreador do Chromestatus | Bug do Chromium
FLAC em MP4 para MSE
O formato de codificação de áudio sem perdas FLAC tem suporte para reprodução de mídia regular desde o Chrome 56. O suporte ao FLAC no ISO-BMFF (também conhecido como FLAC no MP4) foi adicionado logo depois. Agora o FLAC em MP4 está disponível no Chrome 62 para extensões de fonte de mídia (MSE).
Para informações, as pessoas do Firefox são as que desenvolveram e implementaram o suporte para uma especificação de encapsulamento de FLAC em MP4, e a BBC tem experimentado usar isso com MSE. Leia a postagem "Delivering Radio 3 Concert Sound" da BBC para saber mais.
Veja como detectar se o FLAC em MP4 tem suporte para MSE:
if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
// TODO: Fetch data and feed it to a media source.
}
Para conferir um exemplo completo, consulte nosso exemplo oficial.
Intent to Ship | 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 está sendo reproduzido na janela de visualização, a reprodução vai mudar automaticamente para o modo de tela cheia. Girar o dispositivo para o modo retrato coloca o vídeo de volta no modo de janela. Confira nosso artigo anterior para mais detalhes.