- From: Raphaël Troncy <Raphael.Troncy@cwi.nl>
- Date: Wed, 02 Dec 2009 10:05:24 +0100
- To: Media Fragment <public-media-fragment@w3.org>
Dear all,
ACTION-112 is a long time overdue action on my side. This is my take on
it, which hopefully will trigger some discussion on the mailing list.
Conrad, please shout if I misunderstood your proposal! Dear are some
questions also in the email that we need to answer.
1) Case 1: Resolving URI fragments with server help
---------------------------------------------------
Context: see Section 3.3 [1].
We have a fully media fragment conformant user agent
User request:
http://www.w3.org/2008/WebVideo/Fragments/media/fragf2f.mp4#t=12,21
* 1.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
The following HTTP response will be returned (206 code).
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes, seconds
Content-Length: 3571437
Content-Type: video/mp4
Content-Range: time:npt 11.85-21.16/36
--> We took a resolution regarding the syntax of the Range and
Content-Range headers, see [5], but we haven't take any regarding the
syntax of Accept-Ranges. Should we put here 'seconds'? Or rather 'time'?
Or 'time:npt'?
* 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
* 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
--
Raphaël Troncy
EURECOM, Multimedia Communications Department
2229, route des Crêtes, 06560 Sophia Antipolis, France.
e-mail: raphael.troncy@eurecom.fr & raphael.troncy@gmail.com
Tel: +33 (0)4 - 9300 8242
Fax: +33 (0)4 - 9000 8200
Web: http://www.eurecom.fr/~troncy/
Received on Wednesday, 2 December 2009 09:06:15 UTC