tamaƱo reproducir quitar para ocultar etiqueta controles codigo automaticamente html5 google-chrome html5-video mediaelement.js video.js

reproducir - La solicitud de elemento de video HTML5 permanece pendiente para siempre(en Chrome)



reproducir video mkv en html (6)

Tengo un problema extraño en Chrome.

Cada vez que cargo un elemento <video> , cromo iniciará dos solicitudes HTTP.

El primero permanecerá pendiente para siempre (supongo que esta es la solicitud de "metadatos", "contenido parcial". Pero el punto es que permanece pendiente)

El segundo en el mismo archivo está bien y se enciende y se cierra después de que la carga ha terminado.

El problema aquí es que la primera solicitud permanece pendiente hasta que cierre la página del navegador. Entonces, en algún momento, si cargo varios videos, Chrome se interrumpirá y dejará de descargar cualquier cosa porque cada solicitud disponible está ocupada por estas solicitudes pendientes.

Creé un caso de prueba reducido aquí: http://jsbin.com/ixifiq/3

Compruebo para reproducir el problema y está sucediendo en las Video.js y Video.js . Abra su pestaña de red al cargar la página, verá la primera solicitud pendiente. A continuación, presione reproducir en el video y verá que la segunda solicitud está funcionando, pero la primera permanecerá pendiente por siempre.

¿Alguien sabe una solución a este error?


(Esta falla aún existe en Chrome 38.0.2125.111, OS X 10.10)

Esto puede ser un error de Chrome y puedes resolverlo sin ningún truco de ?time-suffix , solo para ayudar a Chrome a liberar tomas más rápido :

Tenía el mismo error en una presentación HTML de RevealJs, con más de 20 videos (uno por diapositiva, reproducido automáticamente en el foco de diapositivas). Como efecto colateral, este problema inédito del zócalo también afectó a otros medios ajax-cargados de carga inmediatamente después del primer video pendiente / bloqueado, en el mismo HTML DOM.

Siguiendo la respuesta de Walter (ver informe de errores ), solucioné el problema siguiendo los siguientes pasos:

1- Establecer el atributo de preload video en none :

<video preload="none"> <source src="video.webM" type="video/webM"> </video>

2 - Use un canplaythrough eventos canplaythrough para reproducir y / o pausar el video una vez que esté cargado y listo. Esto ayuda a Chrome a liberar el socket utilizado para cargar ese video:

function loadVideos(){ $("video").each(function(index){ $(this).get(0).load(); $(this).get(0).addEventListener("canplaythrough", function(){ this.play(); this.pause(); }); }); }


Aparentemente es un error de Chrome. Y no hay nada que hacer al respecto ATM.

Informé sobre el problema hace un tiempo en el proyecto Chromium y se lo asignaron. Así que con suerte se solucionará en un futuro próximo.

Informe de error: https://code.google.com/p/chromium/issues/detail?id=234779


Encontré este problema cuando uso video html5 dentro de contenido dinámico como carruseles, para liberar los enchufes bloqueados que tiene que descargar la fuente de video:

var video = $(''#video''); video[0].pause(); video.prop(''src'',''''); video.find(''source'').remove(); video.remove();

El error asegura que se corrigió, pero aún tenía que hacer esto en Chrome 42. Al menos aún podía establecer preload = "auto".


Este error todavía existe. Estoy usando un reproductor de video HTML5 en una aplicación de una sola página. Después de cargar unos 7 jugadores con almacenamiento previo en memoria intermedia, alcanzo el límite y no se cargan más videos. Encontré otra respuesta que tiene que ver con imágenes y me sorprendió descubrir que esta respuesta resuelve este problema.

if(window.stop !== undefined) { window.stop(); } else if(document.execCommand !== undefined) { document.execCommand("Stop", false); }

referencia: Javascript: cancelar / detener solicitudes de imágenes


No sé si funcionará en este momento, pero recuerdo haber resuelto este problema agregando un parámetro a la URL del video, al igual que "video.mp4? T = 2123". Por supuesto, cada vez que cargues el video, el parámetro debería ser diferente. Yo usaría

var parameter = new Date().getMilliseconds();

para obtenerlo, y agregarlo.

Con esto, al menos hace unos meses, pude reproducir el mismo video varias veces sin que Chrome esperara la respuesta para siempre.

Espero eso ayude.


Tuvimos los mismos síntomas, pero el problema fue que estábamos llamando a load() en el mismo video dos veces seguidas: el mismo control de video, la misma fuente de video (MP4). Dos solicitudes 206 idénticas aparecieron en las herramientas de desarrollo, y luego, después de cambiar el video varias veces, Chrome cancelaba la primera solicitud, desactivaba la reproducción progresiva y esperaba a que finalizara la segunda solicitud.

También tenga en cuenta que si está utilizando una fuente MP4 y no está formateada para la reproducción progresiva (lo que significa que el átomo MOOV está al principio del archivo), entonces tendrá 1-2 solicitudes adicionales para el archivo, lo que lo hace aún más confuso.