- From: Glenn Maynard <glenn@zewt.org>
- Date: Sun, 23 Jan 2011 07:40:05 -0500
On Sun, Jan 23, 2011 at 6:32 AM, Philip J?genstedt <philipj at opera.com>wrote: > But presumably you want some kind of guarantee that the video will be able > to keep playing without waiting for the network, right? So if you don't use > preload=auto, you'll at least need preload=playthrough or similar. Maybe > that's precisely what you mean by preload=buffer? Yes, I think we all mean the same thing here: asking the browser to buffer enough to avoid underruns and to begin playing immediately without blocking, which is more than preload=metadata and less than preload=auto. > I intend to make that impossible by only allowing scripts to increase the > effective buffering strategy, because: > > 1. preload->none makes no sense. > 2. I haven't seen any use cases for auto->preload other than working around > browser buffering bugs. > 3. It would be a silly API, because you can't reasonably mean "I need it > all! No, I need only metadata! No, I need it all!", you're clearly trying to > do something else. > I think it makes sense, with the right definitions. preload=none means "don't preload any more data than you already have". preload=metadata means "load metadata if you havn't already". These make sense regardless of what the state was previously. By not catering to that, we can instead focus on fixing the > API/implementations to support the actual use cases authors might have. The most important unresolved use case is: how to allow limiting the amount of prebuffered data, while also having a mechanism to disable that limit when there isn't enough bandwidth. The approaches I've seen proposed are 1: have the browser try to guess statistically how big the buffer size needs to be, and 2: disable the buffer limit when paused. I don't trust #1. It's impossible to predict bandwidth reliably. If the browser guesses too small, it'll be impossible to watch a video without underruns. Browsers should try to make a good guess, but there's got to be an intuitive user override. #2 is essentially that override, and it's what everyone is used to already: if the video is underrunning, leave it paused until it buffers for a while. However, there are cases where you'll want to pause the video without triggering #2; for example, YouTube's pause captions, and after a pause-and-rewind. Simply having something like preload=auto_only_when_paused wouldn't be enough. That's why it seems like scripts should have some control over this. Toggling between preload=metadata and preload=auto is one possible API to do that. Granted, browser-supplied controls should also be able to implement this behavior, which suggests an attribute to allow it. I'm not sure how to get both cleanly. -- Glenn Maynard
Received on Sunday, 23 January 2011 04:40:05 UTC