[whatwg] media elements: Relative seeking

On Dec 1, 2008, at 6:10 PM, Chris Double wrote:

>  The only accurate value I can provide with Ogg is the exact  
> duration if the http server supports byte range requests, or some  
> other out of band duration metadata (X-Content-Duration, etc).  
> Without byte range requests, accurate duration is not possible.
>
   While you can seek to the end of an Ogg file to get duration from  
the last frame's time stamp, you can't do that with every file type.

   For example, an MPEG audio elementary stream (eg. MP3) isn't a file  
format, it is just the raw output from a decoder, and there are no  
time stamps at all so the only way to get an accurate file duration is  
to sum the duration of every sample. It is *possible* to include an  
indication of duration in the file [1][2], but a player must be  
prepared to handle files without any indication as well as files in  
which the stored duration(s) are inconsistent with the observed  
duration.

   As I have noted before, an estimated duration based on the  
calculated duration of the portion(s) of a file that have been  
processed, iteratively refined as more data is seen, works well for  
us. You might try it with files on servers that don't support byte  
range requests, or on machines where you don't want to incur the cost  
of extra network IO.

eric

[1] VBR files can include a header with the number of MPEG audio  
frames in the file. This can be used with the sampling rate to  
calculate the duration.

[2] Some ID3v2 tags include a frame that stores the file duration in  
milliseconds (strangely enough, stored as a string).

Received on Monday, 1 December 2008 20:51:39 UTC