Atualizações de mídia no Chrome 70

François Beaufort
François Beaufort

Assistir vídeo usando o picture-in-picture

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

Leia nosso artigo para saber tudo sobre isso.

Decodificador AV1

O AV1 é um codec de última geração desenvolvido pela Alliance for Open Media (link em inglês). O AV1 melhora a eficiência de compactação em mais de 30% em relação ao codec de vídeo de última geração, o VP9. O Chrome 70 adiciona um decodificador AV1 ao Chrome Desktop x86-64 com base na especificação oficial de bitstream (link em inglês). No momento, o suporte está 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 os contêineres.

Para testar o AV1:

  1. Acesse a página do YouTube TestTube.
  2. Selecione "Preferir AV1 para SD" ou "Sempre preferir AV1" para ter 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 da playlist de lançamento do AV1 Beta.
  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.

Compatibilidade com codec e alternância de contêineres no MSE.

O Chrome está adicionando suporte a transições aprimoradas de codec ou cross-bytestream na reprodução de extensões de origem de mídia usando um novo método changeType() no SourceBuffer. Ele permite que o tipo de bytes de mídia anexados ao SourceBuffer seja mudado depois disso.

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 precise estar em conformidade com o tipo MIME fornecido ao criar inicialmente o SourceBuffer via 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 seguir etapas explícitas para conseguir a alternância de codec ou de bytestream (usando vários elementos de mídia ou faixas de 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 realize uma ação síncrona na linha de execução principal do renderizador. Essa latência de transição prejudica a suavidade da reprodução de mídia entre as transições.

Com o novo método changeType(), um SourceBuffer pode armazenar em buffer e oferecer suporte à reprodução em diferentes formatos e codecs de bytecode. Esse novo método mantém mídia previamente armazenada em buffer, remoção ou remoção de frames codificados pelo MSE futuras e aproveita a lógica de mesclagem e armazenamento em buffer no algoritmo de processamento de frames codificado do MSE atual.

Confira 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 navegador não oferecer suporte ao tipo transmitido, esse método gerará uma exceção NotSupportedError.

Confira o exemplo (link em inglês) para reproduzir com buffer cruzado e cross-bytestream e reprodução de um elemento de áudio.

Intent de envio | Rastreador de status do Chrome | Bug do Chromium

Opus em MP4 para MSE

O codec de áudio aberto e altamente versátil Opus oferece suporte aos elementos <audio> e <video> desde o Chrome 33. O suporte à Opus em ISO-BMFF (também conhecido como Opus em MP4) foi adicionado depois. Agora, o Opus em MP4 está disponível no Chrome 70 para Media Source Extensions.

Veja como detectar se o Opus no MP4 é compatível com o MSE:

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

Se você quiser ver um exemplo completo, confira nossa amostra oficial.

Devido à falta de ferramentas para multiplicar o Opus em MP4 com valores de corte final e pré-pulsão corretos, 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 de amostra.

Intent de envio | Rastreador de status do Chrome | 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 do 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 medidas extras tomadas para limpar licenças de mídia com cookies e dados de sites, garantindo que as licenças de mídia não sejam usadas pelos sites para rastrear usuários que limparam os dados de navegação.

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