Atualizações de áudio/vídeo no Chrome 70

Francisco Beaufort
François Beaufort

Assistir ao 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 acima de outras janelas) para ficar de olho no que está assistindo enquanto interage com outros sites ou apps. Com a nova API Picture-in-Picture, você pode iniciar e controlar o Picture-in-Picture para vídeos no seu site.

Leia nosso artigo para saber tudo sobre o assunto.

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 (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 De vídeo bruto para pronto para a Web para uma breve explicação sobre contêineres.

Para testar o AV1:

  • Acesse a página do YouTube TestTube.
  • 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.
  • Tente reproduzir clipes do YouTube a partir da playlist de lançamento do AV1 Beta.
  • Confirme o codec av01 em "Estatísticas para nerds".
Estatísticas para nerds com o AV1 no YouTube.
Figura 1. Estatísticas para nerds com o AV1 no YouTube.

Suporte para codec e switch de contêiner no MSE.

O Chrome está adicionando suporte a transições aprimoradas entre codecs ou bytes na 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 sejam mudados posteriormente.

A versão atual do MSE oferece suporte à reprodução adaptável 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 realizar a alternância de codec ou 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 ao 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 de bytecode e codecs. Esse novo método mantém a mídia previamente armazenada em buffer, a remoção ou a remoção futura de frames codificados pelo MSE e aproveita a lógica de união e armazenamento em buffer no algoritmo de processamento de frames codificado por MSE existente.

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 oferece suporte ao tipo transmitido, esse método gera uma exceção NotSupportedError.

Confira a amostra para reproduzir com buffer entre codec e cross-bytestream e reprodução de um elemento de áudio.

Intent de envio | Rastreador do Chromestatus | 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 a 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 você pode detectar se o Opus em 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 modificar o Opus no MP4 com valores de corte final e pré-pular corretos, se essa precisão for importante para você, use SourceBuffer.appendWindow{Start,End} e SourceBuffer.timestampOffset no Chrome para conseguir uma reprodução precisa de amostra.

Intent de envio | 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 do site "Conteúdo protegido" muda de "Perguntar primeiro" para "Permitido", reduzindo o atrito associado à reprodução de tais mídias. Essa mudança é possível, em parte, devido a outras medidas tomadas para limpar licenças de mídia junto a cookies e dados de sites, garantindo que essas licenças não sejam usadas por sites para rastrear usuários que limparam os dados de navegação.

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