HTML5 video element request stay pending forever (on chrome) HTML5 video element request stay pending forever (on chrome) google-chrome google-chrome

HTML5 video element request stay pending forever (on chrome)


(This bug still exists in Chrome 38.0.2125.111, OS X 10.10)

This may be a Chrome bug & you may solve it without any dummy ?time-suffix trick, just helping Chrome releasing sockets faster:

I had the same bug on a RevealJs HTML presentation, with 20+ videos (one per slide, autoplayed on slide focus). As a side effect, this unreleased socket problem also affected other ajax-lazy-loaded medias following immediately the first pending/blocked video, in the same HTML DOM.

Following Walter's answer (see bug report), I fixed the issue following the next steps:

1- Set video preload attribute to none:

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

2 - Use a canplaythrough event handler to play and/or pause the video once it is loaded & ready. This helps Chrome releasing the socket used to load that video :

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


Apparently that's a bug from Chrome. And there's nothing to do about it ATM.

I reported the issue a while ago on the Chromium project and it's been assigned. So hopefully it'll be fixed in near future.

Bug report: https://code.google.com/p/chromium/issues/detail?id=234779


I don't know if it will be functional right now, but I remember solving this issue by adding a parameter to the video URL, just like "video.mp4?t=2123". Of course, everytime you load the video, the parameter should be different. I'd use

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

to get it, and add it.

With this, at least a few months ago, I was able to play the same video multiple times without Chrome waiting forever the response.

Hope it helps.