HTML : El Elemento Track
El Elemento Track se encarga de añadir "Subtitulos" o "Pistas" a los Elementos de Video y Audio dependiendo de su uso.
La forma de añadirlos es muy facil, se puede hacer directamente con HTML o añadirlo a un video con Javascript.
<video width="600" height="400" controls>
<source src="video.mp4" type="video/mp4">
<track src="subtitulos1.vtt" kind="subtitles" srclang="es" label="Español">
<track src="subtitulos2.vtt" kind="subtitles" srclang="en" label="English">
</video>
Como ven el Elemento Track va dentro de un Video, ademas se pueden añadir multiples "Tracks" dentro de un mismo Video.
<track src="subtitulos1.vtt" kind="subtitles" srclang="es" label="Español" default>
Atributos:
src | Url donde se encuentra el archivo Track (debe estar en el mismo servidor). Solo acepta los formatos WebVTT y TTML. |
kind | Especifica de que tipo es el Track: "captions", "chapters", "descriptions", "metadata", "subtitles". |
srclang | Señala el lenguaje del Track. |
label | Especifica el nombre del Track. |
default | Especifica si este Track sera el que se muestre por defecto. |
Formato WebVTT
El formato WebVTT es muy facil de entender:
WEBVTT //La palabra WEBVTT obligatoria.
Cue1 //Una Etiqueta (no es obligatoria).
00:00:01.000 --> 00:00:10.000 //Del tiempo que inicia al tiempo que acaba en formato hh:mm:ss.sss
Este es el primer subtitulo. //El Texto que va a mostrarse
Veamos un Ejemplo
WEBVTT
00:00:01.000 --> 00:00:10.000
Este es el primer subtitulo.
00:00:15.000 --> 00:00:20.000
Este es el segundo subtitulo.
Tambien soporta varias lineas.
Hasta Aqui seria lo basico. Ahora veremos el Objeto TextTrack.
El Objeto TextTrack
El Objeto TextTrack nos permite acceder a las propiedades de un Track mediante javascript.
Podemos acceder a los Tracks existentes de un video de la siguiente forma:
<video id="video" src="video.mp4" controls>
<track src="subtitulos1.vtt" kind="subtitles" srclang="es" label="Español">
</video>
<script>
//Primero accedemos al Elemento con id "video" y luego llamamos la propiedad "textTracks".
var TextTracks = document.getElementById("video").textTracks;
//Nos devolvera una lista con los TextTracks del Video.
var TextTrack = TextTracks[0];//Seleccionamos el primer TextTrack.
</script>
La propiedad "textTracks" nos devuelve una lista con los Objetos TextTrack del video, luego seleccionamos el primer TextTrack de la lista, asi podemos trabajar con el.
Eventos de la propiedad textTracks:
onaddtrack | Se ejecuta cuando se añade un nuevo TextTrack. |
|
onremovetrack | Se ejecuta cuando quitamos TextTrack. |
|
Tambien podemos acceder al Objeto TextTrack mediante la propiedad "track".
<video src="video.mp4" controls>
<track id='track' src="subtitulos1.vtt" kind="subtitles" srclang="es" label="Español">
</video>
<script>
//Esta ves accedemos al Elemento con id "track" y llamamos a la propiedad "track".
var TextTrack = document.getElementById("track").track;
//Nos devuelve un unico objeto TextTrack.
</script>
Tambien es posible crear nuevos Tracks con el metodo "addTextTrack()"
<video id="video" src="video.mp4" controls>
</video>
<script>
var video = document.getElementById("video");//Accedemos al elemento con id "video".
video.addTextTrack("subtitles", "NuevoSubtitulo", "es");//Añadimos al video un nuevo TextTrack vacio.
var TextTrack = video.textTracks[0];
//Seleccionamos el primer TextTrack, en este caso el unico.
</script>
El metodo "addTextTrack()" usa 3 argumentos: kind, label y srclang. En ese orden.
"kind" especifica el tipo del TextTrack, "label" el nombre y "srclang" es el lenguaje.
El objeto Track tambien tiene propiedades a las que podemos acceder:
cues | Devuelve una lista de todos los cues del TextTrack. Cada cue contiene datos del texto que se muestra en el subtitulo. |
activeCues | Devuelve una lista de los cues activos en ese momento. |
kind | Devuelve el tipo del Track. |
label | Especifica el nombre del Track. |
language | Devuelve el lenguaje del Track. |
mode | Especifica el modo del Track: "showing" Habilitado, "hidden" oculto y "disabled" desactivado. |
Eventos del Objeto textTrack:
oncuechange | Se ejecuta cuando un Cue aparece o desaparece. |
|
Bueno ahora veremos de que tratan los cues:
Un cue contiene informacion del texto que se va a mostrar, en que momento se mostrara, cuando finalizara, posicion y alineacion.
Podemos acceder a ellos de la siguiente forma:
var video = document.getElementById("video");//Accedemos al elemento con id "video".
var TextTrack = video.textTracks[0];//Seleccionamos el primer TextTrack.
var Cues = TextTrack.cues;//Nos devuelve una lista de todos los cues.
var Cue = Cues[0];//Seleccionamos el primer cue;
Tambien podemos añadir nuevos cues:
var video = document.getElementById("video");//Accedemos al elemento con id "video".
var TextTrack = video.textTracks[0];//Seleccionamos el primer TextTrack.
//Aqui empiezan los problemas de compatibilidad.
//Para Internet Explorer
TextTrack.addCue(new TextTrackCue(0, 10, "Mi nuevo subtitulo"));
//Para Chrome, Firefox, etc
TextTrack.addCue(new VTTCue(0, 10, "Mi nuevo subtitulo"));
//Inicia en el segundo 0, termina en el segundo 10 y muestra el texto "Mi nuevo subtitulo"
Como vemos para la mayoria de navegadores se usa el constructor VTTCue, pero para IE se usa TextTrackCue.
El constructor consta de 3 argumentos: el tiempo en segundos cuando se inicia, cuando termina y el Texto que se va a mostrar.
Propiedades del Objeto Cue
startTime | Tiempo en segundos en el que se muestra. |
endTime | Tiempo en segundos en el que desaparece. |
text | Texto que muestra. |
align | Alineacion horizontal del cue: "start", "middle", "end", "left" y "right". |
line | Linea en la que se encuentra. |
position | Posicion horizontal del Cue. |
size | Tamaño del texto, va de 0 a 100. |
snapToLines | Especifica si esta fijo a una linea, puede ser true o false. |
vertical | Especifica si esta en vertical y en que direccion, puede ser "" no vertical, "lr" y "rl". |
pauseOnExit | Especifica si el video se va a pausar cuando el cue termine de mostrarse. |
Eventos del Objeto Cue:
onenter | Se ejecuta cuando el cue aparece. |
|
onexit | Se ejecuta cuando el cue desaparece. |
|
Bueno gracias por leer esta Entrada, todo esto lo recopile de distintas fuentes de las cuales la mayoria estaba en ingles por eso quise hacer una documentacion en español.