Actualizaciones multimedia en Chrome 62

François Beaufort
François Beaufort

Licencias persistentes para Android

La licencia persistente en las Extensiones de contenido multimedia encriptado (EME) significa que la licencia se puede conservar en el dispositivo para que las aplicaciones puedan cargarla en la memoria sin enviar otra solicitud de licencia al servidor. De esta manera, se admite la reproducción sin conexión en EME.

Hasta ahora, ChromeOS era la única plataforma compatible con las licencias persistentes. Ya no es así. Ahora también es posible reproducir contenido protegido a través de EME mientras el dispositivo está sin conexión en 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 probar las licencias persistentes, consulta la PWA de Sample Media y sigue estos pasos:

  1. Ve a https://biograf-155113.appspot.com/ttt/episode-2/.
  2. Haz clic en “Permitir acceso sin conexión” y espera a que se descargue el video.
  3. Activa el modo de avión.
  4. Haz clic en el botón “Reproducir” y disfruta del video.

Widevine L1 para Android

Como ya sabes, todos los dispositivos Android deben admitir el nivel de seguridad 3 de Widevine (Widevine L3). Sin embargo, existen muchos dispositivos que también admiten el nivel de seguridad más alto: el nivel de seguridad de Widevine 1, en el que todo el procesamiento, la criptografía y el control del contenido se realiza dentro del entorno de ejecución confiable (TEE).

¡Buenas noticias! Widevine L1 ahora es compatible con Chrome para Android, de modo que el contenido multimedia se pueda reproducir de la forma más segura. Ten en cuenta que ya era compatible con el Sistema operativo Chrome.

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.
});

Shaka Player, la biblioteca de JavaScript para formatos multimedia adaptables (como DASH y HLS), tiene una demostración en la que puedes probar Widevine L1:

  1. Ve a https://shaka-player-demo.appspot.com/demo/ y haz clic en “Permitir” cuando se te solicite.
  2. Selecciona "Angel One (multicodec, multilingual, Widevine)".
  3. Ingresa HW_SECURE_ALL en el campo “Sólida de video” de la sección “Configuración”.
  4. Haz clic en el botón "Cargar" y disfruta del video.

Optimizaciones de pistas de video en segundo plano (solo MSE)

El equipo de Chrome siempre intenta encontrar nuevas formas de mejorar la duración de batería, y Chrome 62 no es la excepción.

Chrome ahora inhabilita las pistas de video cuando se reproducen en segundo plano (p.ej., en una pestaña no visible) si el video usa Extensiones de fuente de medios (MSE). Consulta nuestro artículo anterior para obtener más información.

Personaliza el rango de búsqueda en las transmisiones MSE en vivo

Como ya sabes, el atributo seekable contiene los rangos del recurso multimedia al que puede saltar el navegador. Por lo general, contiene un único intervalo de tiempo que comienza en 0 y finaliza en la duración del recurso multimedia. Sin embargo, si la duración no está disponible, como en una transmisión en vivo, el intervalo de tiempo puede cambiar continuamente.

La buena noticia es que ahora puedes personalizar de manera más eficaz la lógica del rango seekable con extensiones de fuente de medios (MSE), ya que proporciona o quita un solo rango que se puede buscar y que está unido a los rangos almacenados en búfer actuales. El resultado es un solo rango de búsqueda que se ajusta a ambos, cuando la duración de la fuente multimedia es +Infinity.

En el siguiente código, la fuente de medios ya se adjuntó a un elemento multimedia y solo contiene su segmento de inicialización:

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) }

Hay muchos casos que no vimos antes, por lo que te sugiero que pruebes la muestra oficial para ver cómo los intervalos de tiempo almacenados en búfer y los que se pueden buscar reaccionan a los diferentes eventos de ECM.

Intent to Ship | Chromestatus Tracker | Error de Chromium

FLAC en MP4 para ECM

El formato de codificación de audio sin pérdida FLAC es compatible con la reproducción de contenido multimedia normal desde Chrome 56. Poco después, se agregó FLAC compatible con ISO-BMFF (también conocido como FLAC en MP4). Además, FLAC en MP4 está disponible en Chrome 62 para las Extensiones de fuente de medios (MSE).

Para obtener información, los miembros de Firefox son quienes desarrollaron e implementaron la compatibilidad con especificaciones de encapsulamiento de FLAC en MP4, y la BBC ha estado experimentando con eso con ECM. Para obtener más información, lee la publicación "Delivering Radio 3 Concert Sound" de la BBC.

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

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

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

Intent to Ship | Chromestatus Tracker | Error de Chromium

El video automático pasa a pantalla completa cuando se rota el dispositivo

Si rota un dispositivo a la orientación horizontal mientras se reproduce un video en el viewport, la reproducción cambiará automáticamente al modo de pantalla completa. Cuando se rota el dispositivo a la orientación vertical, el video vuelve al modo de ventana. Consulta nuestro artículo anterior para obtener más detalles.