- From: Yves Lafon <ylafon@w3.org>
- Date: Wed, 2 Dec 2009 05:30:32 -0500 (EST)
- To: Raphaël Troncy <Raphael.Troncy@cwi.nl>
- cc: Media Fragment <public-media-fragment@w3.org>
On Wed, 2 Dec 2009, Raphaël Troncy wrote: > * 1.2: Conrad's proposal: > Conrad plans two sub-cases: > . 1.2.a: the UA is aware of time ranges and can do the conversion locally. > This comes to the Case 1.1 > . 1.2.b: the UA does not support time ranges. The following request will be > issued: > GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 > Host: www.w3.org > Accept: video/* > Fragment: time:npt=12-21 > > A server that supports server-parsed fragments responds with (200 code) > HTTP 200 OK > Content-Length: 3571437 > Content-Fragment: time:npt=12-21 > Vary: Fragment Two things, first we need in that case a CL like Content-Location: http://www.w3.org/2008/WebVideo/Fragments/media/fragf2f.mp4?t=12-21 Also if you first do this request: GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 Host: www.w3.org Accept: video/* and get back HTTP 200 OK Content-Length: 121994833 A cache will... cache it. Then if there is a subsequent request like this: GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 Host: www.w3.org Accept: video/* Fragment: time:npt=12-21 The cache will serve the cached version, so the complete one, ignoring Fragment. So 1/ you need to send Vary:Fragment in all cases to avoid that and also every time someone will request a different range, the cache entry will be trashed, so the chances that a cached fragment will be reused and served from the cache is pretty low. > > * Summary: > . 1.1: NO new headers are necessary / normal use of Range request with 206 > response code > . 1.2.a: This is fully similar to 1.1 > . 1.2.b: The 'Fragment' and 'Content-Fragment' headers are introduced / 200 > response code > . In all cases, the body of the response contains the binary data of the > fragment > > --> I have to admit I cannot understand anymore the reason for introducing > the 'Fragment' and 'Content-Fragment' headers with which we cannot use > anymore the 206 /416 codes. Conrad ? > > 2) Case 2: Resolving URI fragments in a proxy cachable manner > ------------------------------------------------------------- > > Context: see Section 3.4 [2]. > We have a fully media fragment conformant user agent and wish to make sure > fragments will be cached by the network > User request: > http://www.w3.org/2008/WebVideo/Fragments/media/fragf2f.mp4#t=12,21 > > * 2.1: Current proposal: > The following HTTP request will be generated. > GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 > Host: www.w3.org > Accept: video/* > Range: time:npt=12-21 > X-Accept-Range-Redirect: bytes > > --> We introduce the 'X-Accept-Range-Redirect' header > > The following HTTP response is returned (200 code) > HTTP/1.1 200 OK > Accept-Ranges: bytes > Content-Type: video/mp4 > X-Accept-TimeURI: npt, smpte-25 > X-Range-Redirect: bytes 1113724-2082711/4500000 > Vary: X-Accept-Range-Redirect > Location: http://www.w3.org/2008/WebVideo/Fragments/media/fragf2f.mp4 > > --> We introduce the 'X-Range-Redirect' header to tell the UA to issue > another request > --> I don't like the 'X-Accept-TimeURI' header that could be more generic > --> Do we have an empty body at this step? > > Another HTTP request is issued > GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 > Host: www.w3.org > Range: bytes 1113724-2082711 > > Triggering the following response (206 code) > HTTP/1.1 206 Partial Content > Accept-Ranges: bytes > Content-Type: video/mp4 > Content-Range: bytes 1113724-2082711/4500000 > > --> I don't understand how the cache can now map the bytes range with the > original request in seconds? > > * 2.2: Conrad's proposal: > > Conrad introduced the Range-refer proposal. See [3] for the explanation and > [4] for an example. > > The following HTTP request will be generated. > GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 > Host: www.w3.org > Fragment: time:npt=12-21 > Accept-Range-Refer: npt > > The server that supports 'Range-Refer: time' responds with (200 code): > HTTP 200 OK > Content-Length: 1000 > Content-Fragment: time:npt=12-21 > Vary: Fragment, Accept-Range-Refer > Range-Refer: this npt 12-21, > http://www.w3.org/2008/WebVideo/Fragments/media/fragf2f.mp4 time 12-21 > > --> Conrad, could you please write somewhere the syntax for 'Range-Refer' > since all words see important (e.g. 'this') > > The UA then uses the body of this response to decode time 12-21, and issues > an HTTP range request to http://www.w3.org for the referred range. Note that > this is a normal HTTP/1.1 request using the time range units, and need not be > to a server supporting Range-Refer: > GET /2008/WebVideo/Fragments/media/fragf2f.mp4 HTTP/1.1 > Host: www.w3.org > Range: time:npt=12-21 > > The server responds with: > HTTP 206 Partial Content > Content-Length: 3571437 > Vary: Fragment, Accept-Range-Refer > Content-Range: time:npt 12-21/36 > > * Summary: > . 2.1: 2 round-trips are necessary. Two new headers are introduced in the > first round-trip ('X-Accept-Range-Redirect' and 'X-Range-Redirect'). The > second round-trip is a normal bytes Range request with 206 response code > . 2.2: 2 round-trips are also necessary. The 'Fragment' and > 'Content-Fragment' headers are introduced like for the case 1.2. Two more > headers are introduced ('Accept-Range-Refer' and 'Range-Refer') > . In all cases, the body of the 2nd response contains the binary data of the > fragment > > Best regards. > > Raphaël > > > [1] > http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/#URIfragment-server > [2] > http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/#URIfragment-proxies > [3] http://www.w3.org/2008/WebVideo/Fragments/wiki/HTTP_Range_Refer > [4] > http://www.w3.org/2008/WebVideo/Fragments/wiki/HTTP_Examples#Fragment_URI_.2B_Range-Refer:_time > [5] > http://www.w3.org/2008/WebVideo/Fragments/wiki/WG_Resolutions#Media_Fragment_Headers > > -- Baroula que barouleras, au tiéu toujou t'entourneras. ~~Yves
Received on Wednesday, 2 December 2009 10:30:33 UTC