Entonces, esto es... En realidad, solo es el elemento de video HTML5. Y luego adjuntamos algo de JavaScript adicional para darle capacidades HLS. Y luego, cuando se dispara el evento de reproducción, ese evento de reproducción es cuando comienza la reproducción en el video, y vamos a llamar a esta función onPlayCallback.
Entonces, volvamos al componente que está renderizando esta página. Ampliemos un poco aquí. Asegurémonos de que puedas ver eso. Entonces, aquí mismo, tenemos el reproductor, onPlayCallback. Y cuando eso se dispara, veamos qué sucede. Lo que vemos es que este video se reproduce en el elemento de video. Y luego se duplica en este elemento de lienzo justo debajo.
Veamos un poco de este código. Entonces, cuando se llama a onPlay, obtenemos el elemento de video, y creamos este contexto, esta referencia de contexto. Lo que esto es, es una especie de controlador para el elemento de lienzo. Y luego podemos llamar a funciones en ese contexto que nos permite manipular ese elemento de lienzo, cambiar cómo se muestra, y eso es como nuestro gancho para manipular el lienzo real en sí. Entonces, en onPlay, llamamos a requestAnimationFrame, llamamos a updateCanvas. Y lo que eso va a hacer es simplemente llamar a esta línea, drawImage, le pasamos ese elemento de video. Y esto le dice al lienzo que simplemente dibuje esta imagen en el lienzo. Y estas son las dimensiones. Estas son las coordenadas donde comenzar y estas son las dimensiones para dibujar. Y esto se llama recursivamente en realidad. Entonces, cada vez que se ejecuta esto, solicitamosAnimationFrame nuevamente, y luego la función de devolución de llamada llama a updateCanvas nuevamente. Entonces puedes ver lo que está sucediendo. Simplemente estamos dibujando eso, básicamente estamos copiando ese elemento de video en el lienzo y justo debajo. Así es como funciona eso. Una rápida demostración de lo que hicimos allí. Elemento de video, copiar cada fotograma, dibujarlos en el lienzo, bastante simple, ¿verdad?
Entonces, ahora vamos a dar un paso más. Vamos a ver este ejemplo de filtro. Entonces, lo que hace el filtro, podría reproducir, está bien, algo similar, pero puedes ver que algo más está sucediendo aquí. Lo que estamos haciendo es lo mismo, la función de devolución de llamada updateCanvas.
Comments