Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
Transmisión Adaptativa DASH para Video en HTML 5
La Transmisión Adaptativa Dinámica sobre HTTP (DASH, por sus siglas en Inglés) es un protocolo de transmisión adaptativa. Esto significa que permite a una transmisión de video cambiar las tasas de bits con base al rendimiento de la red, para mantener un video reproduciendo.
In this article
Soporte de navegadores
Firefox 21 incluye un implementación deDASH para videos HTML WebM la cual está deshabilitada por defecto. Puede ser habilitada a través de "about:config" y la preferencia "media.dash.enabled".
Firefox 23 removió el soporte paraDASH para videos HTML WebM. Será reemplazado por una implementación deMedia Source Extensions API la cual permitirá el soporte paraDASH a través de librerías de Javascript como dash.js. Véase el error778617 para más detalles.
UsandoDASH - Desde el servidor
Primero tendrás que convertir tu video WebM a un manifiestoDASH acompañado de los archivos de video en varias tasas de bits. Para empezar solo necesitarás el programa ffmpeg deffmpeg.org, con soporte para libvpx and libvorbis para video y audio WebM, al menos en versión 2.5 (probablemente; esto fue probado con 3.2.5).
1. Usa tu archivo WebM para crear un archivo de audio y múltiples archivos de video
Por ejemplo:
El archivoin.video puede ser cualquier contenedor con al menos un flujo de datos de audio y uno de video que pueden ser decodificados por ffmpeg.
Crea el audio usando:
ffmpeg -i in.video -vn -acodec libvorbis -ab 128k -dash 1 my_audio.webmCrea cada variante de video.
ffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=160:90 -b:v 250k -dash 1 video_160x90_250k.webmffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=320:180 -b:v 500k -dash 1 video_320x180_500k.webmffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=640:360 -b:v 750k -dash 1 video_640x360_750k.webmffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=640:360 -b:v 1000k -dash 1 video_640x360_1000k.webmffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=1280:720 -b:v 1500k -dash 1 video_1280x720_1500k.webmO hazlo todo en un solo comando.
ffmpeg -i in.video -c:v libvpx-vp9 -keyint_min 150 \-g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 \-an -vf scale=160:90 -b:v 250k -dash 1 video_160x90_250k.webm \-an -vf scale=320:180 -b:v 500k -dash 1 video_320x180_500k.webm \-an -vf scale=640:360 -b:v 750k -dash 1 video_640x360_750k.webm \-an -vf scale=640:360 -b:v 1000k -dash 1 video_640x360_1000k.webm \-an -vf scale=1280:720 -b:v 1500k -dash 1 video_1280x720_1500k.webm2. Crea el archivo manifiesto
ffmpeg \ -f webm_dash_manifest -i video_160x90_250k.webm \ -f webm_dash_manifest -i video_320x180_500k.webm \ -f webm_dash_manifest -i video_640x360_750k.webm \ -f webm_dash_manifest -i video_1280x720_1500k.webm \ -f webm_dash_manifest -i my_audio.webm \ -c copy \ -map 0 -map 1 -map 2 -map 3 -map 4 \ -f webm_dash_manifest \ -adaptation_sets "id=0,streams=0,1,2,3 id=1,streams=4" \ my_video_manifest.mpdEl parámetro-map corresponde a los archivos de entrada en la secuencia que fueron dados; debes tener uno por cada archivo. El parámetro-adaptation_sets los asigna en conjuntos de adaptación; por ejemplo, esto crea un conjunto (0) que contiene los flujos de datos 0, 1, 2 y 3 (los videos), y otro conjunto (1) que contiene solo el flujo de datos 4, el flujo de datos de audio.
Pon el manifiesto y los archivos de video asociados en tu servidor web o CDN.DASH trabaja via HTTP, siempre y cuando tu servidor HTTP soporte peticiones de rangos de bytes, y esté configurado para servir archivos.mpd conmimetype="application/dash+xml", entonces tendrás todo listo.
UsandoDASH - Desde el cliente
Querrás modificar tu página web para apuntar al manifiestoDASH primero, en lugar de a un video en particular directamente:
<video> <source src="movie.mpd" /> <source src="movie.webm" /> Tu navegador no soporta la etiqueta video.</video>¡Eso es todo! SiDASH es soportado por tu navegador, tu video ahora tendrá una transmisión adaptativa.
Enlaces
Especificación WebM DASH en El Proyecto WebM
Descripción del proyecto WebM de cómo crear archivos DASH con FFMPEG