Atualizações de mídia no Chrome 70

François Beaufort
François Beaufort

Assistir vídeos usando o picture-in-picture

Com o recurso picture-in-picture (PiP), os usuários podem assistir vídeos em uma janela flutuante (sempre por cima de outras janelas) para ficar de olho no que estão assistindo enquanto interagem com outros sites ou aplicativos. Com a nova API Web Picture-in-Picture, você pode iniciar e controlar o recurso Picture-in-Picture para vídeos no seu site.

Leia nosso artigo para saber mais.

Decodificador AV1

O AV1 é um codec de última geração desenvolvido pela Alliance for Open Media (link em inglês). O AV1 melhorou a eficiência de compactação em mais de 30% em relação ao codec de vídeo mais avançado atualmente, o VP9. O Chrome 70 adiciona um decodificador AV1 ao Chrome Desktop x86-64 com base na especificação oficial de bitstream. No momento, o suporte é limitado ao perfil 0 "Principal" e não inclui recursos de codificação. O contêiner compatível é MP4 (ISO-BMFF). Consulte Contêineres e codecs para uma breve explicação sobre contêineres.

Para testar o AV1:

  1. Acesse a página do YouTube TestTube.
  2. Selecione "Dar preferência a AV1 para SD" ou "Sempre dar preferência a AV1" para receber a resolução AV1 desejada. Em resoluções mais altas, é mais provável que o AV1 tenha problemas de desempenho de reprodução em alguns dispositivos.
  3. Tente reproduzir clipes do YouTube na playlist de lançamento da versão Beta do AV1.
  4. Confirme o codec av01 em "Estatísticas para nerds".
Estatísticas para nerds com AV1 no YouTube
Estatísticas para nerds com AV1 no YouTube.

Suporte para a troca de codec e contêiner no MSE

O Chrome adicionou suporte para transições aprimoradas de codec ou de fluxo de bytes em reprodução de extensões de origem de mídia usando um novo método changeType() em SourceBuffer. Ele permite que o tipo de bytes de mídia anexados ao SourceBuffer seja alterado depois.

A versão atual do MSE oferece suporte à reprodução adaptativa de mídia. No entanto, a adaptação exige que qualquer mídia anexada a um SourceBuffer esteja em conformidade com o tipo MIME fornecido ao criar o SourceBuffer pela MediaSource.addSourceBuffer(type). Os codecs desse tipo e todos os segmentos de inicialização analisados anteriormente precisam permanecer os mesmos. Isso significa que o site precisa tomar medidas explícitas para alternar o codec ou o fluxo de bytes (usando vários elementos de mídia ou faixas SourceBuffer e alternando entre eles), aumentando a complexidade do aplicativo e a latência visível para o usuário. Essas transições exigem que o app da Web tome uma ação síncrona na linha de execução principal do renderizador. Essa latência de transição prejudica a fluidez da reprodução de mídia em transições.

Com o novo método changeType(), um SourceBuffer pode armazenar em buffer e oferecer suporte à reprodução em diferentes codecs e formatos de fluxo de bytes. Esse novo método retém a mídia armazenada em buffer anterior, modulo de remoção ou eviction de frames codificados MSE futuros e aproveita a lógica de emenda e armazenamento em buffer no algoritmo de processamento de frames codificados MSE atual.

Veja como usar o método changeType():

const sourceBuffer = myMediaSource.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
sourceBuffer.appendBuffer(someWebmOpusVP9Data);

// Later on...
if ('changeType' in sourceBuffer) {
  // Change source buffer type and append new data.
  sourceBuffer.changeType('video/mp4; codecs="mp4a.40.5, avc1.4d001e"');
  sourceBuffer.appendBuffer(someMp4AacAvcData);
}

Como esperado, se o tipo transmitido não tiver suporte do navegador, esse método gerará uma exceção NotSupportedError.

Confira o exemplo para brincar com o buffer de vários codecs e bytestreams e a reprodução de um elemento de áudio.

Intent to Ship | Rastreador do Chromestatus | Bug do Chromium

Opus em MP4 para EQM

O codec de áudio aberto e altamente versátil Opus tem suporte nos elementos <audio> e <video> desde o Chrome 33. O suporte a Opus no ISO-BMFF (também conhecido como Opus no MP4) foi adicionado depois. Agora, o Opus em MP4 está disponível no Chrome 70 para extensões de origem de mídia.

Veja como detectar se o Opus em MP4 tem suporte para MSE:

if (MediaSource.isTypeSupported('audio/mp4; codecs="opus"')) {
  // TODO: Fetch data and feed it to a media source.
}

Para conferir um exemplo completo, consulte nossa amostra oficial.

Devido à falta de ferramentas para mesclar Opus em MP4 com valores corretos de corte final e pré-pular, se essa precisão for importante para você, será necessário usar SourceBuffer.appendWindow{Start,End} e SourceBuffer.timestampOffset no Chrome para ter uma reprodução precisa.

Intent to Ship | Rastreador do Chromestatus | Bug do Chromium

Permitir a reprodução de conteúdo protegido por padrão no Android

No Chrome 70 para Android, o valor padrão da configuração de site "conteúdo protegido" muda de "Perguntar primeiro" para "Permitido", reduzindo o atrito associado à reprodução dessa mídia. Essa mudança é possível, em parte, devido a outras etapas tomadas para limpar licenças de mídia junto com cookies e dados do site, garantindo que as licenças de mídia não sejam usadas por sites para rastrear usuários que limparam os dados de navegação.

ALT_TEXT_HERE
Configuração de conteúdo protegido no Android.