W3C home > Mailing lists > Public > public-media-fragment@w3.org > June 2010

RE: a quick scan of RTSP for media fragments

From: Davy Van Deursen <davy.vandeursen@ugent.be>
Date: Thu, 24 Jun 2010 09:36:51 +0200
To: "'Jack Jansen'" <Jack.Jansen@cwi.nl>
Cc: <public-media-fragment@w3.org>
Message-ID: <003401cb1370$02bc4970$0834dc50$@ugent.be>
Hi Jack,

> -----Original Message-----
> From: public-media-fragment-request@w3.org [mailto:public-media-
> fragment-request@w3.org] On Behalf Of Jack Jansen
> Sent: woensdag 23 juni 2010 13:56
> To: public-media-fragment@w3.org Group WG
> Subject: a quick scan of RTSP for media fragments
> I did a quick scan of the rtsp spec <http://tools.ietf.org/html/rfc2326>
> our wiki page on rtsp
> <http://www.w3.org/2008/WebVideo/Fragments/wiki/UA_Server_RTSP_Co
> mmunication>.
> Here's areas that I found that need work (or, at least, serious
> 1. I can't find any statement on what existing RTSP implementations should
> do when presented with unknown headers. We would need new headers to
> the PLAY command, as outlined in the "extending rtsp" section of the Wiki.
> Hmm, no, on second reading, they should be ignored (section 8.1), so that
> fine, it's the same we specify for HTTP.
> 2. Actually, it might be argued that track and id selection should be done
> the SETUP command, not the PLAY command. My reasoning: the PLAY
> command is also used for seeking during playback, and we probably don't
> want to burden the server with changing the tracks streamed half-way
> during playback.

Indeed, track selection is realized through the SETUP command (i.e., a SETUP
command is necessary for each requested track), while temporal selection is
done during the PLAY command (using the Range header). Note that this is
also illustrated on the wiki. This means that for both track and temporal
selection, no new _request_ mechanisms such as new request headers need to
be defined. For id selection however, things become tricky. Since the UA has
no idea what's behind the id, it needs to communicate this id to the server.
Now, the tricky part is that track and temporal selection are communicated
in different steps to the server (setup vs. play), which leaves us with the
question in which command we should send the id request ...

Note that the Range header in RTSP is also a response header, which is used
to indicate the actual returned time range, similar to our
Content-Range-Mapping header in HTTP.

> 3. REDIRECT is nasty. The RTSP spec is unclear about when it can be sent
> the Location: argument isn't even mentioned in the header field
> So, it isn't clear whether the Range: refers to the whole original
resource (in
> which case an MF client should recompute the time ranges) or to the range
> requested (in which case an MF client should re-issue the request without
> the MF range).

Yes, you're right, redirection in RTSP is not clear at all to me. On the
other hand, one might argue why we should need redirection within RTSP,
because byte ranges are irrelevant in RTSP. Also, track and temporal are
natively supported by RTSP servers, so why would they redirect? The only
valuable use case of redirection within RTSP is when we need to deal with id
selection I think. For example, rtsp://foo/media.ogv#id=foo might redirect
to rtsp://foo/media.ogv#t=5,10&track=audio1, which would solve the id
problem that I mentioned above.

> 4. We should probably define some interaction with the Require: header.

Maybe, we could introduce the redirection feature for id selection?

> 5. Section 13, Caching, has interaction with our stuff.

I think that, since we are only using native features of RTSP, we do not
have to worry about 'media fragment' caching in RTSP.

> 6. The way people commonly select tracks (see section 14.3, for example)
> not standardised anywhere, as far as I know, but may interact with our
> selection mechanism.

The way tracks are discovered is out of scope: SDP is used frequently, but
one could imagine that formats such as ROE are also used for this purpose.
Regarding the way tracks are requested through the SETUP format is pretty
clear IMO when reading the spec. What the example in section 14.3 is trying
to say is that when a media resource only contains one track, the way of
working of RTSP might be confusing for implementers (since a SETUP command
is bound to one track, while a PLAY command is bound to the RTSP session),
resulting in the proposal of a number of (informative) error recovery

> 7. RTSP specifically states that SMPTE timestamps are just notational
> conventions to be converted to NPT. We state that they are container-based
> addressing.

Good, one problem less :-).

Best regards,


Davy Van Deursen

Ghent University - IBBT
Department of Electronics and Information Systems - Multimedia Lab
URL: http://multimedialab.elis.ugent.be/dvdeurse
Received on Thursday, 24 June 2010 07:37:18 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:52:45 UTC