Re: video use-case

On Tue, Oct 7, 2008 at 11:04 AM, Dave Singer <singer@apple.com> wrote:
> At 10:54  +1100 7/10/08, Silvia Pfeiffer wrote:
>> On Tue, Oct 7, 2008 at 10:26 AM, Dave Singer <singer@apple.com> wrote:
>>>  At 9:16  +1100 7/10/08, Silvia Pfeiffer wrote:
>>>>>
>>>>>  For example, in a media file that has an index and is
>>>>>  in time-order, a user-agent wanting a time-based subset may be able to
>>>>>  use
>>>>>  byte-range requests to get the index, and then the part(s) of the file
>>>>>  containing the desired media. (We do this today for MP4 and MOV
>>>>> files).
>>>>
>>>>  Yes, byte-ranges are possible. However, the Web server is the only
>>>>  component in the system that knows about converting a time offset to a
>>>>  byte range. Therefore, you have to first communicate with a URI
>>>>  reference to the server which subsegment you would like to have, the
>>>>  server can then convert that to byte ranges, return to the UA which
>>>>  byte range he has to request, and then we can do a normal byte-range
>>>>  request on the full URI.
>>>>
>>>>  When you say that you do this today for MP4 and MOV files, how do you
>>>>  communicate the fragment to the Web server?
>>>
>>>  MP4 and MOV files have tables in the moov atom which give complete time
>>> and
>>>  byte-offset indexing for every video and audio frame.  Atoms are also
>>> sized.
>>>  You can gamble, ask for 1K at the start of the file; if it's laid out
>>> for
>>>  incremental playback, the moov atom will be the first or second atom;
>>>  you've got its size now, and can download the rest.  If it wasn't, you
>>> have
>>>  the size of those atoms and can skip past them and ask for the next.
>>>  Once
>>>  you have the moov atom, you know exactly what bytes you need to go
>>> anywhere
>>>  in time (and yes, even sync points are marked, so you know how far to
>>> back
>>>  up if someone does a random access).  If video and audio are interleaved
>>> in
>>>  time order, the data you need will be all contiguous.
>>
>> This still does not solve the client-server problem. Say, a UA wants
>> to play back a MOV file from sec 45-88. The UA does not know how to
>> map that to a byte offset and therefore to a byte-range request.
>
> that's what i telling you;  it does.  it can find the index, typically in
> one request.  given the index, it can figure it out...

OK, I may be misunderstanding something. For a UA to ask for byte
ranges when it only knows about time ranges, it would need a default
mapping for a media type from time to byte. Are you saying that
independent of the sampling rate and framerate, you will always have a
direct mapping for any MOV file from time to byte offset? Can you
explain?

Silvia.

Received on Tuesday, 7 October 2008 00:14:18 UTC