Actualizaciones de audio y video en Chrome 70

François Beaufort
François Beaufort

Cómo mirar videos con la función pantalla en pantalla

La función de pantalla en pantalla (PIP) permite que los usuarios miren videos en una ventana flotante (siempre sobre otras ventanas) para que puedan estar al tanto de lo que están mirando mientras interactúan con otros sitios o aplicaciones. Con la nueva API de Picture-in-Picture Web, puedes iniciar y controlar el modo Picture-in-Picture para los videos de tu sitio web.

Lee nuestro artículo para obtener más información.

Decodificador AV1

AV1 es un códec de próxima generación desarrollado por la Alliance for Open Media. El códec AV1 mejora la eficiencia de compresión en más de un 30% en comparación con el códec de video de vanguardia actual, VP9. Chrome 70 agrega un decodificador AV1 a Chrome para computadoras de escritorio x86-64 basado en la especificación oficial de flujo de bits. Por el momento, la compatibilidad se limita al perfil 0 "Principal" y no incluye capacidades de codificación. El contenedor compatible es MP4 (ISO-BMFF) (consulta De video sin procesar a listo para la Web para obtener una breve explicación de los contenedores).

Para probar AV1, haz lo siguiente:

  • Ve a la página de YouTube TestTube.
  • Selecciona "Preferir AV1 para SD" o "Siempre preferir AV1" para obtener la resolución AV1 deseada. Ten en cuenta que, en resoluciones más altas, es más probable que AV1 experimente problemas de rendimiento de reproducción en algunos dispositivos.
  • Intenta reproducir clips de YouTube desde la playlist de lanzamiento de la versión beta de AV1.
  • Confirma el códec av01 en "Estadísticas".
Estadísticas con AV1 en YouTube
Figura 1: Estadísticas con AV1 en YouTube

Compatibilidad con el cambio de códec y contenedor en MSE

Chrome agregará compatibilidad para mejorar las transiciones entre códecs o entre flujos de bytes en la reproducción de extensiones de Media Source con un nuevo método changeType() en SourceBuffer. Permite cambiar el tipo de bytes de medios agregados a SourceBuffer posteriormente.

La versión actual de MSE admite la reproducción adaptable de contenido multimedia. Sin embargo, la adaptación requiere que todo el contenido multimedia agregado a un SourceBuffer cumpla con el tipo de MIME proporcionado cuando se creó inicialmente el SourceBuffer a través de MediaSource.addSourceBuffer(type). Los códecs de ese tipo y los segmentos de inicialización analizados previamente deben seguir siendo los mismos en todo momento. Esto significa que el sitio web debe tomar medidas explícitas para lograr el cambio de códec o de flujo de bytes (mediante el uso de varios elementos multimedia o pistas de SourceBuffer y el cambio entre ellos), lo que aumenta la complejidad de la aplicación y la latencia visible para el usuario. (Estas transiciones requieren que la app web realice una acción síncrona en el subproceso principal del renderizador). Esta latencia de transición afecta la fluidez de la reproducción de contenido multimedia durante las transiciones.

Con su nuevo método changeType(), un SourceBuffer puede almacenar en búfer y admitir la reproducción en diferentes formatos de flujo de bytes y códecs. Este nuevo método conserva el contenido multimedia almacenado en búfer anteriormente, salvo que se descarten o quiten fotogramas codificados en MSE en el futuro, y aprovecha la lógica de empalme y almacenamiento en búfer del algoritmo existente de procesamiento de fotogramas codificados en MSE.

Sigue estos pasos para usar el 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 se espera, si el tipo pasado no es compatible con el navegador, este método arroja una excepción NotSupportedError.

Consulta el ejemplo para experimentar con el almacenamiento en búfer y la reproducción entre códecs y entre flujos de bytes de un elemento de audio.

Intención de lanzamiento | Chromestatus Tracker | Error de Chromium

Opus en MP4 para MSE

El códec de audio abierto y muy versátil Opus es compatible con los elementos <audio> y <video> desde Chrome 33. Más adelante, se agregó la compatibilidad con Opus en ISO-BMFF (también conocido como Opus en MP4). Ahora, Opus en MP4 está disponible en Chrome 70 para las Extensiones de fuentes de medios.

Sigue estos pasos para detectar si Opus en MP4 es compatible con MSE:

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

Si quieres ver un ejemplo completo, consulta nuestra muestra oficial.

Debido a la falta de herramientas para multiplexar Opus en MP4 con los valores correctos de recorte final y omisión previa, si esa precisión es importante para ti, deberás usar SourceBuffer.appendWindow{Start,End} y SourceBuffer.timestampOffset en Chrome para obtener una reproducción precisa de la muestra.

Intención de lanzamiento | Chromestatus Tracker | Error de Chromium

Permite la reproducción de contenido protegido de forma predeterminada en Android

En Chrome 70 para Android, el valor predeterminado del parámetro de configuración del sitio de “contenido protegido” cambia de “Preguntar primero” a “Permitido”, lo que reduce la fricción asociada con la reproducción de este tipo de contenido multimedia. Este cambio es posible, en parte, gracias a los pasos adicionales que se tomaron para borrar las licencias de medios junto con las cookies y los datos del sitio, lo que garantiza que los sitios no usen las licencias de medios para hacer un seguimiento de los usuarios que borraron los datos de navegación.

Parámetro de configuración de contenido protegido en Android.
Figura 2: Parámetro de configuración de contenido protegido en Android.