De acuerdo con la sección de especificaciones HTML sobre elementos multimedia :
Los elementos multimedia que se están reproduciendo potencialmente mientras no están en un documento no deben reproducir ningún video, pero deben reproducir cualquier componente de audio. Los elementos multimedia no deben dejar de reproducirse solo porque se hayan eliminado todas las referencias a ellos; solo una vez que un elemento multimedia se encuentra en un estado en el que ese elemento no puede reproducir más audio, se puede recolectar basura.
Sin embargo, probé la creación de elementos de video en js y los reproduje en Chrome, Safari y Firefox y todos funcionaron sin que se agregaran al documento. ¿Estos navegadores no siguen las especificaciones? ¿O estoy interpretando mal la especificación?
Pregunto porque quiero extraer cuadros de un video buscándolo y pintando los cuadros en un lienzo. Idealmente, todo esto se haría en js sin tener que agregar el video al DOM. Sin embargo, no quiero hacer esto si va en contra de la especificación, ya que podría cambiar en el futuro y mi implementación podría romperse.
Estoy de acuerdo en que esta redacción es un poco confusa, y toda la sección parece un poco desactualizada de todos modos, pero después de una inspección más detallada, eso no parece causar un error.
Si bien el término "jugar" no está definido con precisión, esta parte en realidad no importa. Los consumidores definirán su propia forma de capturar los datos de video, por ejemplo, las especificaciones de captura de medios desde elementos especifican que
El hecho de que un elemento multimedia esté representando contenido de forma activa (por ejemplo, en una pantalla o en un dispositivo de audio) no tiene ningún efecto sobre el contenido de los flujos capturados.
De hecho, las implementaciones se enganchan a VideoTracks antes de que lleguen al renderizador del elemento <video>.
De manera similar, cuando <video> se usa como CanvasImageSource , las especificaciones solicitan que
Cuando un objeto CanvasImageSource representa un HTMLVideoElement, entonces el cuadro en la posición de reproducción actual cuando se invoca el método con el argumento debe usarse como la imagen de origen al representar la imagen para las API CanvasRenderingContext2D
Así que una vez más, lo que representa el elemento <video> no importa, lo que importa aquí es su posición de reproducción actual, que no deja de incrementarse cuando se desconecta el elemento.
Entonces, sí, es seguro usar elementos <video> desconectados para capturar fotogramas, la mayoría de las pruebas de plataforma web que dibujan un <video> esperan este comportamiento ( por ejemplo ), por lo que puede considerarse como "estándar".