[html5] Autoplay and preload insufficient for proper video playback

Ian Hickson ian at hixie.ch
Fri Dec 10 12:27:47 PST 2010


On Thu, 26 Aug 2010, Herman Hassel wrote:
>  On 24.08.2010 01:17, Ian Hickson wrote:
> > On Wed, 30 Jun 2010, Herman Hassel wrote:
> > >
> > > I keep finding the media attributes "preload" and "autoplay" 
> > > insufficient for video playback.
> >
> > Before considering proposed alternatives, could you elaborate on how 
> > "preload" is insufficient? (It's impossible for me to evaluate how the 
> > proposed alternatives are better without knowing how the existing 
> > solutions are bad!)
>
> Sure! At the moment I need to set preload to "none" or "metadata". Often 
> we do use more than one video or audio element on the same page, and we 
> do want the initial load of each page to be as low as possible. We do 
> have some visitors with low bandwidth, or people who use their phones 
> and are charged by their ISP by the MB. If we had only high bandwidth 
> users and few elements on a page, we'd just use auto. We don't limit our 
> media files to ranges or anything like that, we just want our users to 
> have the best possible experience viewing the videos provided on the 
> websites we make.

In theory, the browsers of your users with low bandwidth, when faced with 
preload=auto, should not preload. But it's early days yet and it isn't 
surprising that they don't yet discriminate.


> Whenever an end user starts a video or audio element that hasn't been 
> preloaded, and the end user doesn't have good enough bandwidth to match 
> the progressive download of the video file, we tend to get very 
> stuttered and broken video for the first seconds, until either the speed 
> of the stream picks up or the end users pause the playback themselves 
> and wait for it to buffer up a bit. Now with audio this isn't such a big 
> issue since the KB/s rate of audio files is so much smaller, but it's 
> very noticeable with video.

You can work around this with a custom interface that uses the 
oncanplaythrough event handler to decide when to start playing, and 
buffers until then.


> It's in the few starting seconds of cases like this that the end user 
> experience would be enhanced by us having a buffer attribute in our 
> toolbox. We need to make sure a few seconds of a media file always gets 
> loaded before any actual playback begins. The buffer attribute wouldn't 
> break anything already in place, it would only enhance the attributes 
> already existing. :)

The browser should be doing this for you anyway when it's showing its own 
controls; when you have your own controls, the API already provides you 
with the tools to do this.


On Thu, 26 Aug 2010, Herman Hassel wrote:
> On 26.08.2010 06:58, Eric Carlson wrote:
> > A static attribute that specifies a minimum buffer size or duration 
> > will only help users with exactly the bandwidth the for the attribute 
> > value - anyone with less bandwidth will still run out of data, and 
> > anyone with more bandwidth will have to wait longer than necessary.
>
> Yes, but this also depends on how a developer would use the buffer 
> attribute, for our use we wouldn't set it too high. (3-5 seconds or so 
> is what we would favor at this time). A low bandwidth user would run out 
> of data, but he would get at least 5 seconds of video before this would 
> happen. From my experience with how users interact with video an end 
> user will notice the loaded bar not moving as fast as the scrubber, but 
> at least we've given him a teaser of the full content before he needs to 
> wait. For a user with exact or higher bandwidth, the 3-5 second buffer 
> loads fast enough to not break the experience. :)

If you're writing your own controller, you already have the data available 
to know when five seconds have been buffered, so you can already do this.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



More information about the Help mailing list