Actualizaciones multimedia en Chrome 62

Francisco Beaufort
François Beaufort

Licencias persistentes para Android

Una licencia persistente en Extensiones de medios encriptados (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. Así es como se admite la reproducción sin conexión en EME.

Hasta ahora, ChromeOS era la única plataforma compatible con licencias persistentes. Ya no es así. Ahora también se puede 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 por tu cuenta, consulta la AWP de medios de muestra 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 sabrás, todos los dispositivos Android deben ser compatibles con el nivel de seguridad 3 de Widevine (Widevine L3). Sin embargo, hay muchos dispositivos que también admiten el nivel de seguridad más alto: el nivel de seguridad 1 de Widevine, en el que todo el procesamiento, la criptografía y el control del contenido se realizan 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 puede reproducir de la manera más segura. Ten en cuenta que ya se admitía en Chrome OS.

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 para que pruebes Widevine L1:

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

Optimizaciones de la pista de video en segundo plano (solo para ECM)

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

Chrome ahora inhabilita las pistas de video cuando se reproduce 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 de MSE en vivo

Como ya debes saber, el atributo seekable contiene los rangos del recurso multimedia que el navegador puede buscar. Por lo general, contiene un solo 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 una transmisión en vivo, el intervalo de tiempo puede cambiar de forma continua.

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). Para ello, proporciona o quita un solo rango con búsqueda que se une con los rangos almacenados en búfer actuales. Como resultado, se genera un único rango que admite búsquedas y se ajusta a ambos casos cuando la duración de la fuente multimedia es +Infinity.

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

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 cubrí anteriormente, por lo que te sugiero que pruebes la muestra oficial para ver cómo los intervalos de tiempo de búsqueda y almacenamiento en búfer reaccionan a diferentes eventos de ECM.

Intent de enviar | Seguimiento de Chromestatus | Error de Chromium

FLAC en MP4 para ECM

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

Para obtener más información, Firefox desarrollaron y también implementaron la compatibilidad con un FLAC en especificación de encapsulamiento MP4, y la BBC ha estado experimentando con ese uso con MSE. Para obtener más información, lee la publicación "Delivering Radio 3 Concert Sound" de la BBC.

A continuación, te mostramos cómo puedes detectar si FLAC en MP4 es compatible con ECM:

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 de enviar | Seguimiento de Chromestatus | Error de Chromium

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

Si rotas un dispositivo a la posició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 al modo vertical, el video vuelve al modo de ventana. Consulta nuestro artículo anterior para obtener más detalles.