rfc2326.txt
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:190k
- Network Working Group H. Schulzrinne
- Request for Comments: 2326 Columbia U.
- Category: Standards Track A. Rao
- Netscape
- R. Lanphier
- RealNetworks
- April 1998
- Real Time Streaming Protocol (RTSP)
- Status of this Memo
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
- Copyright Notice
- Copyright (C) The Internet Society (1998). All Rights Reserved.
- Abstract
- The Real Time Streaming Protocol, or RTSP, is an application-level
- protocol for control over the delivery of data with real-time
- properties. RTSP provides an extensible framework to enable
- controlled, on-demand delivery of real-time data, such as audio and
- video. Sources of data can include both live data feeds and stored
- clips. This protocol is intended to control multiple data delivery
- sessions, provide a means for choosing delivery channels such as UDP,
- multicast UDP and TCP, and provide a means for choosing delivery
- mechanisms based upon RTP (RFC 1889).
- Table of Contents
- * 1 Introduction ................................................. 5
- + 1.1 Purpose ............................................... 5
- + 1.2 Requirements .......................................... 6
- + 1.3 Terminology ........................................... 6
- + 1.4 Protocol Properties ................................... 9
- + 1.5 Extending RTSP ........................................ 11
- + 1.6 Overall Operation ..................................... 11
- + 1.7 RTSP States ........................................... 12
- + 1.8 Relationship with Other Protocols ..................... 13
- * 2 Notational Conventions ....................................... 14
- * 3 Protocol Parameters .......................................... 14
- + 3.1 RTSP Version .......................................... 14
- Schulzrinne, et. al. Standards Track [Page 1]
- RFC 2326 Real Time Streaming Protocol April 1998
- + 3.2 RTSP URL .............................................. 14
- + 3.3 Conference Identifiers ................................ 16
- + 3.4 Session Identifiers ................................... 16
- + 3.5 SMPTE Relative Timestamps ............................. 16
- + 3.6 Normal Play Time ...................................... 17
- + 3.7 Absolute Time ......................................... 18
- + 3.8 Option Tags ........................................... 18
- o 3.8.1 Registering New Option Tags with IANA .......... 18
- * 4 RTSP Message ................................................. 19
- + 4.1 Message Types ......................................... 19
- + 4.2 Message Headers ....................................... 19
- + 4.3 Message Body .......................................... 19
- + 4.4 Message Length ........................................ 20
- * 5 General Header Fields ........................................ 20
- * 6 Request ...................................................... 20
- + 6.1 Request Line .......................................... 21
- + 6.2 Request Header Fields ................................. 21
- * 7 Response ..................................................... 22
- + 7.1 Status-Line ........................................... 22
- o 7.1.1 Status Code and Reason Phrase .................. 22
- o 7.1.2 Response Header Fields ......................... 26
- * 8 Entity ....................................................... 27
- + 8.1 Entity Header Fields .................................. 27
- + 8.2 Entity Body ........................................... 28
- * 9 Connections .................................................. 28
- + 9.1 Pipelining ............................................ 28
- + 9.2 Reliability and Acknowledgements ...................... 28
- * 10 Method Definitions .......................................... 29
- + 10.1 OPTIONS .............................................. 30
- + 10.2 DESCRIBE ............................................. 31
- + 10.3 ANNOUNCE ............................................. 32
- + 10.4 SETUP ................................................ 33
- + 10.5 PLAY ................................................. 34
- + 10.6 PAUSE ................................................ 36
- + 10.7 TEARDOWN ............................................. 37
- + 10.8 GET_PARAMETER ........................................ 37
- + 10.9 SET_PARAMETER ........................................ 38
- + 10.10 REDIRECT ............................................ 39
- + 10.11 RECORD .............................................. 39
- + 10.12 Embedded (Interleaved) Binary Data .................. 40
- * 11 Status Code Definitions ..................................... 41
- + 11.1 Success 2xx .......................................... 41
- o 11.1.1 250 Low on Storage Space ...................... 41
- + 11.2 Redirection 3xx ...................................... 41
- + 11.3 Client Error 4xx ..................................... 42
- o 11.3.1 405 Method Not Allowed ........................ 42
- o 11.3.2 451 Parameter Not Understood .................. 42
- o 11.3.3 452 Conference Not Found ...................... 42
- Schulzrinne, et. al. Standards Track [Page 2]
- RFC 2326 Real Time Streaming Protocol April 1998
- o 11.3.4 453 Not Enough Bandwidth ...................... 42
- o 11.3.5 454 Session Not Found ......................... 42
- o 11.3.6 455 Method Not Valid in This State ............ 42
- o 11.3.7 456 Header Field Not Valid for Resource ....... 42
- o 11.3.8 457 Invalid Range ............................. 43
- o 11.3.9 458 Parameter Is Read-Only .................... 43
- o 11.3.10 459 Aggregate Operation Not Allowed .......... 43
- o 11.3.11 460 Only Aggregate Operation Allowed ......... 43
- o 11.3.12 461 Unsupported Transport .................... 43
- o 11.3.13 462 Destination Unreachable .................. 43
- o 11.3.14 551 Option not supported ..................... 43
- * 12 Header Field Definitions .................................... 44
- + 12.1 Accept ............................................... 46
- + 12.2 Accept-Encoding ...................................... 46
- + 12.3 Accept-Language ...................................... 46
- + 12.4 Allow ................................................ 46
- + 12.5 Authorization ........................................ 46
- + 12.6 Bandwidth ............................................ 46
- + 12.7 Blocksize ............................................ 47
- + 12.8 Cache-Control ........................................ 47
- + 12.9 Conference ........................................... 49
- + 12.10 Connection .......................................... 49
- + 12.11 Content-Base ........................................ 49
- + 12.12 Content-Encoding .................................... 49
- + 12.13 Content-Language .................................... 50
- + 12.14 Content-Length ...................................... 50
- + 12.15 Content-Location .................................... 50
- + 12.16 Content-Type ........................................ 50
- + 12.17 CSeq ................................................ 50
- + 12.18 Date ................................................ 50
- + 12.19 Expires ............................................. 50
- + 12.20 From ................................................ 51
- + 12.21 Host ................................................ 51
- + 12.22 If-Match ............................................ 51
- + 12.23 If-Modified-Since ................................... 52
- + 12.24 Last-Modified........................................ 52
- + 12.25 Location ............................................ 52
- + 12.26 Proxy-Authenticate .................................. 52
- + 12.27 Proxy-Require ....................................... 52
- + 12.28 Public .............................................. 53
- + 12.29 Range ............................................... 53
- + 12.30 Referer ............................................. 54
- + 12.31 Retry-After ......................................... 54
- + 12.32 Require ............................................. 54
- + 12.33 RTP-Info ............................................ 55
- + 12.34 Scale ............................................... 56
- + 12.35 Speed ............................................... 57
- + 12.36 Server .............................................. 57
- Schulzrinne, et. al. Standards Track [Page 3]
- RFC 2326 Real Time Streaming Protocol April 1998
- + 12.37 Session ............................................. 57
- + 12.38 Timestamp ........................................... 58
- + 12.39 Transport ........................................... 58
- + 12.40 Unsupported ......................................... 62
- + 12.41 User-Agent .......................................... 62
- + 12.42 Vary ................................................ 62
- + 12.43 Via ................................................. 62
- + 12.44 WWW-Authenticate .................................... 62
- * 13 Caching ..................................................... 62
- * 14 Examples .................................................... 63
- + 14.1 Media on Demand (Unicast) ............................ 63
- + 14.2 Streaming of a Container file ........................ 65
- + 14.3 Single Stream Container Files ........................ 67
- + 14.4 Live Media Presentation Using Multicast .............. 69
- + 14.5 Playing media into an existing session ............... 70
- + 14.6 Recording ............................................ 71
- * 15 Syntax ...................................................... 72
- + 15.1 Base Syntax .......................................... 72
- * 16 Security Considerations ..................................... 73
- * A RTSP Protocol State Machines ................................. 76
- + A.1 Client State Machine .................................. 76
- + A.2 Server State Machine .................................. 77
- * B Interaction with RTP ......................................... 79
- * C Use of SDP for RTSP Session Descriptions ..................... 80
- + C.1 Definitions ........................................... 80
- o C.1.1 Control URL .................................... 80
- o C.1.2 Media streams .................................. 81
- o C.1.3 Payload type(s) ................................ 81
- o C.1.4 Format-specific parameters ..................... 81
- o C.1.5 Range of presentation .......................... 82
- o C.1.6 Time of availability ........................... 82
- o C.1.7 Connection Information ......................... 82
- o C.1.8 Entity Tag ..................................... 82
- + C.2 Aggregate Control Not Available ....................... 83
- + C.3 Aggregate Control Available ........................... 83
- * D Minimal RTSP implementation .................................. 85
- + D.1 Client ................................................ 85
- o D.1.1 Basic Playback ................................. 86
- o D.1.2 Authentication-enabled ......................... 86
- + D.2 Server ................................................ 86
- o D.2.1 Basic Playback ................................. 87
- o D.2.2 Authentication-enabled ......................... 87
- * E Authors' Addresses ........................................... 88
- * F Acknowledgements ............................................. 89
- * References ..................................................... 90
- * Full Copyright Statement ....................................... 92
- Schulzrinne, et. al. Standards Track [Page 4]
- RFC 2326 Real Time Streaming Protocol April 1998
- 1 Introduction
- 1.1 Purpose
- The Real-Time Streaming Protocol (RTSP) establishes and controls
- either a single or several time-synchronized streams of continuous
- media such as audio and video. It does not typically deliver the
- continuous streams itself, although interleaving of the continuous
- media stream with the control stream is possible (see Section 10.12).
- In other words, RTSP acts as a "network remote control" for
- multimedia servers.
- The set of streams to be controlled is defined by a presentation
- description. This memorandum does not define a format for a
- presentation description.
- There is no notion of an RTSP connection; instead, a server maintains
- a session labeled by an identifier. An RTSP session is in no way tied
- to a transport-level connection such as a TCP connection. During an
- RTSP session, an RTSP client may open and close many reliable
- transport connections to the server to issue RTSP requests.
- Alternatively, it may use a connectionless transport protocol such as
- UDP.
- The streams controlled by RTSP may use RTP [1], but the operation of
- RTSP does not depend on the transport mechanism used to carry
- continuous media. The protocol is intentionally similar in syntax
- and operation to HTTP/1.1 [2] so that extension mechanisms to HTTP
- can in most cases also be added to RTSP. However, RTSP differs in a
- number of important aspects from HTTP:
- * RTSP introduces a number of new methods and has a different
- protocol identifier.
- * An RTSP server needs to maintain state by default in almost all
- cases, as opposed to the stateless nature of HTTP.
- * Both an RTSP server and client can issue requests.
- * Data is carried out-of-band by a different protocol. (There is an
- exception to this.)
- * RTSP is defined to use ISO 10646 (UTF-8) rather than ISO 8859-1,
- consistent with current HTML internationalization efforts [3].
- * The Request-URI always contains the absolute URI. Because of
- backward compatibility with a historical blunder, HTTP/1.1 [2]
- carries only the absolute path in the request and puts the host
- name in a separate header field.
- This makes "virtual hosting" easier, where a single host with one
- IP address hosts several document trees.
- Schulzrinne, et. al. Standards Track [Page 5]
- RFC 2326 Real Time Streaming Protocol April 1998
- The protocol supports the following operations:
- Retrieval of media from media server:
- The client can request a presentation description via HTTP or
- some other method. If the presentation is being multicast, the
- presentation description contains the multicast addresses and
- ports to be used for the continuous media. If the presentation
- is to be sent only to the client via unicast, the client
- provides the destination for security reasons.
- Invitation of a media server to a conference:
- A media server can be "invited" to join an existing
- conference, either to play back media into the presentation or
- to record all or a subset of the media in a presentation. This
- mode is useful for distributed teaching applications. Several
- parties in the conference may take turns "pushing the remote
- control buttons."
- Addition of media to an existing presentation:
- Particularly for live presentations, it is useful if the
- server can tell the client about additional media becoming
- available.
- RTSP requests may be handled by proxies, tunnels and caches as in
- HTTP/1.1 [2].
- 1.2 Requirements
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [4].
- 1.3 Terminology
- Some of the terminology has been adopted from HTTP/1.1 [2]. Terms not
- listed here are defined as in HTTP/1.1.
- Aggregate control:
- The control of the multiple streams using a single timeline by
- the server. For audio/video feeds, this means that the client
- may issue a single play or pause message to control both the
- audio and video feeds.
- Conference:
- a multiparty, multimedia presentation, where "multi" implies
- greater than or equal to one.
- Schulzrinne, et. al. Standards Track [Page 6]
- RFC 2326 Real Time Streaming Protocol April 1998
- Client:
- The client requests continuous media data from the media
- server.
- Connection:
- A transport layer virtual circuit established between two
- programs for the purpose of communication.
- Container file:
- A file which may contain multiple media streams which often
- comprise a presentation when played together. RTSP servers may
- offer aggregate control on these files, though the concept of
- a container file is not embedded in the protocol.
- Continuous media:
- Data where there is a timing relationship between source and
- sink; that is, the sink must reproduce the timing relationship
- that existed at the source. The most common examples of
- continuous media are audio and motion video. Continuous media
- can be real-time (interactive), where there is a "tight"
- timing relationship between source and sink, or streaming
- (playback), where the relationship is less strict.
- Entity:
- The information transferred as the payload of a request or
- response. An entity consists of metainformation in the form of
- entity-header fields and content in the form of an entity-
- body, as described in Section 8.
- Media initialization:
- Datatype/codec specific initialization. This includes such
- things as clockrates, color tables, etc. Any transport-
- independent information which is required by a client for
- playback of a media stream occurs in the media initialization
- phase of stream setup.
- Media parameter:
- Parameter specific to a media type that may be changed before
- or during stream playback.
- Media server:
- The server providing playback or recording services for one or
- more media streams. Different media streams within a
- presentation may originate from different media servers. A
- media server may reside on the same or a different host as the
- web server the presentation is invoked from.
- Schulzrinne, et. al. Standards Track [Page 7]
- RFC 2326 Real Time Streaming Protocol April 1998
- Media server indirection:
- Redirection of a media client to a different media server.
- (Media) stream:
- A single media instance, e.g., an audio stream or a video
- stream as well as a single whiteboard or shared application
- group. When using RTP, a stream consists of all RTP and RTCP
- packets created by a source within an RTP session. This is
- equivalent to the definition of a DSM-CC stream([5]).
- Message:
- The basic unit of RTSP communication, consisting of a
- structured sequence of octets matching the syntax defined in
- Section 15 and transmitted via a connection or a
- connectionless protocol.
- Participant:
- Member of a conference. A participant may be a machine, e.g.,
- a media record or playback server.
- Presentation:
- A set of one or more streams presented to the client as a
- complete media feed, using a presentation description as
- defined below. In most cases in the RTSP context, this implies
- aggregate control of those streams, but does not have to.
- Presentation description:
- A presentation description contains information about one or
- more media streams within a presentation, such as the set of
- encodings, network addresses and information about the
- content. Other IETF protocols such as SDP (RFC 2327 [6]) use
- the term "session" for a live presentation. The presentation
- description may take several different formats, including but
- not limited to the session description format SDP.
- Response:
- An RTSP response. If an HTTP response is meant, that is
- indicated explicitly.
- Request:
- An RTSP request. If an HTTP request is meant, that is
- indicated explicitly.
- RTSP session:
- A complete RTSP "transaction", e.g., the viewing of a movie.
- A session typically consists of a client setting up a
- transport mechanism for the continuous media stream (SETUP),
- starting the stream with PLAY or RECORD, and closing the
- Schulzrinne, et. al. Standards Track [Page 8]
- RFC 2326 Real Time Streaming Protocol April 1998
- stream with TEARDOWN.
- Transport initialization:
- The negotiation of transport information (e.g., port numbers,
- transport protocols) between the client and the server.
- 1.4 Protocol Properties
- RTSP has the following properties:
- Extendable:
- New methods and parameters can be easily added to RTSP.
- Easy to parse:
- RTSP can be parsed by standard HTTP or MIME parsers.
- Secure:
- RTSP re-uses web security mechanisms. All HTTP authentication
- mechanisms such as basic (RFC 2068 [2, Section 11.1]) and
- digest authentication (RFC 2069 [8]) are directly applicable.
- One may also reuse transport or network layer security
- mechanisms.
- Transport-independent:
- RTSP may use either an unreliable datagram protocol (UDP) (RFC
- 768 [9]), a reliable datagram protocol (RDP, RFC 1151, not
- widely used [10]) or a reliable stream protocol such as TCP
- (RFC 793 [11]) as it implements application-level reliability.
- Multi-server capable:
- Each media stream within a presentation can reside on a
- different server. The client automatically establishes several
- concurrent control sessions with the different media servers.
- Media synchronization is performed at the transport level.
- Control of recording devices:
- The protocol can control both recording and playback devices,
- as well as devices that can alternate between the two modes
- ("VCR").
- Separation of stream control and conference initiation:
- Stream control is divorced from inviting a media server to a
- conference. The only requirement is that the conference
- initiation protocol either provides or can be used to create a
- unique conference identifier. In particular, SIP [12] or H.323
- [13] may be used to invite a server to a conference.
- Schulzrinne, et. al. Standards Track [Page 9]
- RFC 2326 Real Time Streaming Protocol April 1998
- Suitable for professional applications:
- RTSP supports frame-level accuracy through SMPTE time stamps
- to allow remote digital editing.
- Presentation description neutral:
- The protocol does not impose a particular presentation
- description or metafile format and can convey the type of
- format to be used. However, the presentation description must
- contain at least one RTSP URI.
- Proxy and firewall friendly:
- The protocol should be readily handled by both application and
- transport-layer (SOCKS [14]) firewalls. A firewall may need to
- understand the SETUP method to open a "hole" for the UDP media
- stream.
- HTTP-friendly:
- Where sensible, RTSP reuses HTTP concepts, so that the
- existing infrastructure can be reused. This infrastructure
- includes PICS (Platform for Internet Content Selection
- [15,16]) for associating labels with content. However, RTSP
- does not just add methods to HTTP since the controlling
- continuous media requires server state in most cases.
- Appropriate server control:
- If a client can start a stream, it must be able to stop a
- stream. Servers should not start streaming to clients in such
- a way that clients cannot stop the stream.
- Transport negotiation:
- The client can negotiate the transport method prior to
- actually needing to process a continuous media stream.
- Capability negotiation:
- If basic features are disabled, there must be some clean
- mechanism for the client to determine which methods are not
- going to be implemented. This allows clients to present the
- appropriate user interface. For example, if seeking is not
- allowed, the user interface must be able to disallow moving a
- sliding position indicator.
- An earlier requirement in RTSP was multi-client capability.
- However, it was determined that a better approach was to make sure
- that the protocol is easily extensible to the multi-client
- scenario. Stream identifiers can be used by several control
- streams, so that "passing the remote" would be possible. The
- protocol would not address how several clients negotiate access;
- this is left to either a "social protocol" or some other floor
- Schulzrinne, et. al. Standards Track [Page 10]
- RFC 2326 Real Time Streaming Protocol April 1998
- control mechanism.
- 1.5 Extending RTSP
- Since not all media servers have the same functionality, media
- servers by necessity will support different sets of requests. For
- example:
- * A server may only be capable of playback thus has no need to
- support the RECORD request.
- * A server may not be capable of seeking (absolute positioning) if
- it is to support live events only.
- * Some servers may not support setting stream parameters and thus
- not support GET_PARAMETER and SET_PARAMETER.
- A server SHOULD implement all header fields described in Section 12.
- It is up to the creators of presentation descriptions not to ask the
- impossible of a server. This situation is similar in HTTP/1.1 [2],
- where the methods described in [H19.6] are not likely to be supported
- across all servers.
- RTSP can be extended in three ways, listed here in order of the
- magnitude of changes supported:
- * Existing methods can be extended with new parameters, as long as
- these parameters can be safely ignored by the recipient. (This is
- equivalent to adding new parameters to an HTML tag.) If the
- client needs negative acknowledgement when a method extension is
- not supported, a tag corresponding to the extension may be added
- in the Require: field (see Section 12.32).
- * New methods can be added. If the recipient of the message does
- not understand the request, it responds with error code 501 (Not
- implemented) and the sender should not attempt to use this method
- again. A client may also use the OPTIONS method to inquire about
- methods supported by the server. The server SHOULD list the
- methods it supports using the Public response header.
- * A new version of the protocol can be defined, allowing almost all
- aspects (except the position of the protocol version number) to
- change.
- 1.6 Overall Operation
- Each presentation and media stream may be identified by an RTSP URL.
- The overall presentation and the properties of the media the
- presentation is made up of are defined by a presentation description
- file, the format of which is outside the scope of this specification.
- The presentation description file may be obtained by the client using
- Schulzrinne, et. al. Standards Track [Page 11]
- RFC 2326 Real Time Streaming Protocol April 1998
- HTTP or other means such as email and may not necessarily be stored
- on the media server.
- For the purposes of this specification, a presentation description is
- assumed to describe one or more presentations, each of which
- maintains a common time axis. For simplicity of exposition and
- without loss of generality, it is assumed that the presentation
- description contains exactly one such presentation. A presentation
- may contain several media streams.
- The presentation description file contains a description of the media
- streams making up the presentation, including their encodings,
- language, and other parameters that enable the client to choose the
- most appropriate combination of media. In this presentation
- description, each media stream that is individually controllable by
- RTSP is identified by an RTSP URL, which points to the media server
- handling that particular media stream and names the stream stored on
- that server. Several media streams can be located on different
- servers; for example, audio and video streams can be split across
- servers for load sharing. The description also enumerates which
- transport methods the server is capable of.
- Besides the media parameters, the network destination address and
- port need to be determined. Several modes of operation can be
- distinguished:
- Unicast:
- The media is transmitted to the source of the RTSP request,
- with the port number chosen by the client. Alternatively, the
- media is transmitted on the same reliable stream as RTSP.
- Multicast, server chooses address:
- The media server picks the multicast address and port. This is
- the typical case for a live or near-media-on-demand
- transmission.
- Multicast, client chooses address:
- If the server is to participate in an existing multicast
- conference, the multicast address, port and encryption key are
- given by the conference description, established by means
- outside the scope of this specification.
- 1.7 RTSP States
- RTSP controls a stream which may be sent via a separate protocol,
- independent of the control channel. For example, RTSP control may
- occur on a TCP connection while the data flows via UDP. Thus, data
- delivery continues even if no RTSP requests are received by the media
- Schulzrinne, et. al. Standards Track [Page 12]
- RFC 2326 Real Time Streaming Protocol April 1998
- server. Also, during its lifetime, a single media stream may be
- controlled by RTSP requests issued sequentially on different TCP
- connections. Therefore, the server needs to maintain "session state"
- to be able to correlate RTSP requests with a stream. The state
- transitions are described in Section A.
- Many methods in RTSP do not contribute to state. However, the
- following play a central role in defining the allocation and usage of
- stream resources on the server: SETUP, PLAY, RECORD, PAUSE, and
- TEARDOWN.
- SETUP:
- Causes the server to allocate resources for a stream and start
- an RTSP session.
- PLAY and RECORD:
- Starts data transmission on a stream allocated via SETUP.
- PAUSE:
- Temporarily halts a stream without freeing server resources.
- TEARDOWN:
- Frees resources associated with the stream. The RTSP session
- ceases to exist on the server.
- RTSP methods that contribute to state use the Session header
- field (Section 12.37) to identify the RTSP session whose state
- is being manipulated. The server generates session identifiers
- in response to SETUP requests (Section 10.4).
- 1.8 Relationship with Other Protocols
- RTSP has some overlap in functionality with HTTP. It also may
- interact with HTTP in that the initial contact with streaming content
- is often to be made through a web page. The current protocol
- specification aims to allow different hand-off points between a web
- server and the media server implementing RTSP. For example, the
- presentation description can be retrieved using HTTP or RTSP, which
- reduces roundtrips in web-browser-based scenarios, yet also allows
- for standalone RTSP servers and clients which do not rely on HTTP at
- all.
- However, RTSP differs fundamentally from HTTP in that data delivery
- takes place out-of-band in a different protocol. HTTP is an
- asymmetric protocol where the client issues requests and the server
- responds. In RTSP, both the media client and media server can issue
- requests. RTSP requests are also not stateless; they may set
- parameters and continue to control a media stream long after the
- Schulzrinne, et. al. Standards Track [Page 13]
- RFC 2326 Real Time Streaming Protocol April 1998
- request has been acknowledged.
- Re-using HTTP functionality has advantages in at least two areas,
- namely security and proxies. The requirements are very similar, so
- having the ability to adopt HTTP work on caches, proxies and
- authentication is valuable.
- While most real-time media will use RTP as a transport protocol, RTSP
- is not tied to RTP.
- RTSP assumes the existence of a presentation description format that
- can express both static and temporal properties of a presentation
- containing several media streams.
- 2 Notational Conventions
- Since many of the definitions and syntax are identical to HTTP/1.1,
- this specification only points to the section where they are defined
- rather than copying it. For brevity, [HX.Y] is to be taken to refer
- to Section X.Y of the current HTTP/1.1 specification (RFC 2068 [2]).
- All the mechanisms specified in this document are described in both
- prose and an augmented Backus-Naur form (BNF) similar to that used in
- [H2.1]. It is described in detail in RFC 2234 [17], with the
- difference that this RTSP specification maintains the "1#" notation
- for comma-separated lists.
- In this memo, we use indented and smaller-type paragraphs to provide
- background and motivation. This is intended to give readers who were
- not involved with the formulation of the specification an
- understanding of why things are the way that they are in RTSP.
- 3 Protocol Parameters
- 3.1 RTSP Version
- [H3.1] applies, with HTTP replaced by RTSP.
- 3.2 RTSP URL
- The "rtsp" and "rtspu" schemes are used to refer to network resources
- via the RTSP protocol. This section defines the scheme-specific
- syntax and semantics for RTSP URLs.
- rtsp_URL = ( "rtsp:" | "rtspu:" )
- "//" host [ ":" port ] [ abs_path ]
- host = <A legal Internet host domain name of IP address
- (in dotted decimal form), as defined by Section 2.1
- Schulzrinne, et. al. Standards Track [Page 14]
- RFC 2326 Real Time Streaming Protocol April 1998
- of RFC 1123 cite{rfc1123}>
- port = *DIGIT
- abs_path is defined in [H3.2.1].
- Note that fragment and query identifiers do not have a well-defined
- meaning at this time, with the interpretation left to the RTSP
- server.
- The scheme rtsp requires that commands are issued via a reliable
- protocol (within the Internet, TCP), while the scheme rtspu identifies
- an unreliable protocol (within the Internet, UDP).
- If the port is empty or not given, port 554 is assumed. The semantics
- are that the identified resource can be controlled by RTSP at the
- server listening for TCP (scheme "rtsp") connections or UDP (scheme
- "rtspu") packets on that port of host, and the Request-URI for the
- resource is rtsp_URL.
- The use of IP addresses in URLs SHOULD be avoided whenever possible
- (see RFC 1924 [19]).
- A presentation or a stream is identified by a textual media
- identifier, using the character set and escape conventions [H3.2] of
- URLs (RFC 1738 [20]). URLs may refer to a stream or an aggregate of
- streams, i.e., a presentation. Accordingly, requests described in
- Section 10 can apply to either the whole presentation or an individual
- stream within the presentation. Note that some request methods can
- only be applied to streams, not presentations and vice versa.
- For example, the RTSP URL:
- rtsp://media.example.com:554/twister/audiotrack
- identifies the audio stream within the presentation "twister", which
- can be controlled via RTSP requests issued over a TCP connection to
- port 554 of host media.example.com.
- Also, the RTSP URL:
- rtsp://media.example.com:554/twister
- identifies the presentation "twister", which may be composed of
- audio and video streams.
- This does not imply a standard way to reference streams in URLs.
- The presentation description defines the hierarchical relationships
- in the presentation and the URLs for the individual streams. A
- presentation description may name a stream "a.mov" and the whole
- presentation "b.mov".
- Schulzrinne, et. al. Standards Track [Page 15]
- RFC 2326 Real Time Streaming Protocol April 1998
- The path components of the RTSP URL are opaque to the client and do
- not imply any particular file system structure for the server.
- This decoupling also allows presentation descriptions to be used
- with non-RTSP media control protocols simply by replacing the
- scheme in the URL.
- 3.3 Conference Identifiers
- Conference identifiers are opaque to RTSP and are encoded using
- standard URI encoding methods (i.e., LWS is escaped with %). They can
- contain any octet value. The conference identifier MUST be globally
- unique. For H.323, the conferenceID value is to be used.
- conference-id = 1*xchar
- Conference identifiers are used to allow RTSP sessions to obtain
- parameters from multimedia conferences the media server is
- participating in. These conferences are created by protocols
- outside the scope of this specification, e.g., H.323 [13] or SIP
- [12]. Instead of the RTSP client explicitly providing transport
- information, for example, it asks the media server to use the
- values in the conference description instead.
- 3.4 Session Identifiers
- Session identifiers are opaque strings of arbitrary length. Linear
- white space must be URL-escaped. A session identifier MUST be chosen
- randomly and MUST be at least eight octets long to make guessing it
- more difficult. (See Section 16.)
- session-id = 1*( ALPHA | DIGIT | safe )
- 3.5 SMPTE Relative Timestamps
- A SMPTE relative timestamp expresses time relative to the start of
- the clip. Relative timestamps are expressed as SMPTE time codes for
- frame-level access accuracy. The time code has the format
- hours:minutes:seconds:frames.subframes, with the origin at the start
- of the clip. The default smpte format is "SMPTE 30 drop" format, with
- frame rate is 29.97 frames per second. Other SMPTE codes MAY be
- supported (such as "SMPTE 25") through the use of alternative use of
- "smpte time". For the "frames" field in the time value can assume
- the values 0 through 29. The difference between 30 and 29.97 frames
- per second is handled by dropping the first two frame indices (values
- 00 and 01) of every minute, except every tenth minute. If the frame
- value is zero, it may be omitted. Subframes are measured in
- one-hundredth of a frame.
- Schulzrinne, et. al. Standards Track [Page 16]
- RFC 2326 Real Time Streaming Protocol April 1998
- smpte-range = smpte-type "=" smpte-time "-" [ smpte-time ]
- smpte-type = "smpte" | "smpte-30-drop" | "smpte-25"
- ; other timecodes may be added
- smpte-time = 1*2DIGIT ":" 1*2DIGIT ":" 1*2DIGIT [ ":" 1*2DIGIT ]
- [ "." 1*2DIGIT ]
- Examples:
- smpte=10:12:33:20-
- smpte=10:07:33-
- smpte=10:07:00-10:07:33:05.01
- smpte-25=10:07:00-10:07:33:05.01
- 3.6 Normal Play Time
- Normal play time (NPT) indicates the stream absolute position
- relative to the beginning of the presentation. The timestamp consists
- of a decimal fraction. The part left of the decimal may be expressed
- in either seconds or hours, minutes, and seconds. The part right of
- the decimal point measures fractions of a second.
- The beginning of a presentation corresponds to 0.0 seconds. Negative
- values are not defined. The special constant now is defined as the
- current instant of a live event. It may be used only for live events.
- NPT is defined as in DSM-CC: "Intuitively, NPT is the clock the
- viewer associates with a program. It is often digitally displayed on
- a VCR. NPT advances normally when in normal play mode (scale = 1),
- advances at a faster rate when in fast scan forward (high positive
- scale ratio), decrements when in scan reverse (high negative scale
- ratio) and is fixed in pause mode. NPT is (logically) equivalent to
- SMPTE time codes." [5]
- npt-range = ( npt-time "-" [ npt-time ] ) | ( "-" npt-time )
- npt-time = "now" | npt-sec | npt-hhmmss
- npt-sec = 1*DIGIT [ "." *DIGIT ]
- npt-hhmmss = npt-hh ":" npt-mm ":" npt-ss [ "." *DIGIT ]
- npt-hh = 1*DIGIT ; any positive number
- npt-mm = 1*2DIGIT ; 0-59
- npt-ss = 1*2DIGIT ; 0-59
- Examples:
- npt=123.45-125
- npt=12:05:35.3-
- npt=now-
- The syntax conforms to ISO 8601. The npt-sec notation is optimized
- for automatic generation, the ntp-hhmmss notation for consumption
- by human readers. The "now" constant allows clients to request to
- Schulzrinne, et. al. Standards Track [Page 17]
- RFC 2326 Real Time Streaming Protocol April 1998
- receive the live feed rather than the stored or time-delayed
- version. This is needed since neither absolute time nor zero time
- are appropriate for this case.
- 3.7 Absolute Time
- Absolute time is expressed as ISO 8601 timestamps, using UTC (GMT).
- Fractions of a second may be indicated.
- utc-range = "clock" "=" utc-time "-" [ utc-time ]
- utc-time = utc-date "T" utc-time "Z"
- utc-date = 8DIGIT ; < YYYYMMDD >
- utc-time = 6DIGIT [ "." fraction ] ; < HHMMSS.fraction >
- Example for November 8, 1996 at 14h37 and 20 and a quarter seconds
- UTC:
- 19961108T143720.25Z
- 3.8 Option Tags
- Option tags are unique identifiers used to designate new options in
- RTSP. These tags are used in Require (Section 12.32) and Proxy-
- Require (Section 12.27) header fields.
- Syntax:
- option-tag = 1*xchar
- The creator of a new RTSP option should either prefix the option with
- a reverse domain name (e.g., "com.foo.mynewfeature" is an apt name
- for a feature whose inventor can be reached at "foo.com"), or
- register the new option with the Internet Assigned Numbers Authority
- (IANA).
- 3.8.1 Registering New Option Tags with IANA
- When registering a new RTSP option, the following information should
- be provided:
- * Name and description of option. The name may be of any length,
- but SHOULD be no more than twenty characters long. The name MUST
- not contain any spaces, control characters or periods.
- * Indication of who has change control over the option (for
- example, IETF, ISO, ITU-T, other international standardization
- bodies, a consortium or a particular company or group of
- companies);
- Schulzrinne, et. al. Standards Track [Page 18]
- RFC 2326 Real Time Streaming Protocol April 1998
- * A reference to a further description, if available, for example
- (in order of preference) an RFC, a published paper, a patent
- filing, a technical report, documented source code or a computer
- manual;
- * For proprietary options, contact information (postal and email
- address);
- 4 RTSP Message
- RTSP is a text-based protocol and uses the ISO 10646 character set in
- UTF-8 encoding (RFC 2279 [21]). Lines are terminated by CRLF, but
- receivers should be prepared to also interpret CR and LF by
- themselves as line terminators.
- Text-based protocols make it easier to add optional parameters in a
- self-describing manner. Since the number of parameters and the
- frequency of commands is low, processing efficiency is not a
- concern. Text-based protocols, if done carefully, also allow easy
- implementation of research prototypes in scripting languages such
- as Tcl, Visual Basic and Perl.
- The 10646 character set avoids tricky character set switching, but
- is invisible to the application as long as US-ASCII is being used.
- This is also the encoding used for RTCP. ISO 8859-1 translates
- directly into Unicode with a high-order octet of zero. ISO 8859-1
- characters with the most-significant bit set are represented as
- 1100001x 10xxxxxx. (See RFC 2279 [21])
- RTSP messages can be carried over any lower-layer transport protocol
- that is 8-bit clean.
- Requests contain methods, the object the method is operating upon and
- parameters to further describe the method. Methods are idempotent,
- unless otherwise noted. Methods are also designed to require little
- or no state maintenance at the media server.
- 4.1 Message Types
- See [H4.1]
- 4.2 Message Headers
- See [H4.2]
- 4.3 Message Body
- See [H4.3]
- Schulzrinne, et. al. Standards Track [Page 19]
- RFC 2326 Real Time Streaming Protocol April 1998
- 4.4 Message Length
- When a message body is included with a message, the length of that
- body is determined by one of the following (in order of precedence):
- 1. Any response message which MUST NOT include a message body
- (such as the 1xx, 204, and 304 responses) is always terminated
- by the first empty line after the header fields, regardless of
- the entity-header fields present in the message. (Note: An
- empty line consists of only CRLF.)
- 2. If a Content-Length header field (section 12.14) is present,
- its value in bytes represents the length of the message-body.
- If this header field is not present, a value of zero is
- assumed.
- 3. By the server closing the connection. (Closing the connection
- cannot be used to indicate the end of a request body, since
- that would leave no possibility for the server to send back a
- response.)
- Note that RTSP does not (at present) support the HTTP/1.1 "chunked"
- transfer coding(see [H3.6]) and requires the presence of the
- Content-Length header field.
- Given the moderate length of presentation descriptions returned,
- the server should always be able to determine its length, even if
- it is generated dynamically, making the chunked transfer encoding
- unnecessary. Even though Content-Length must be present if there is
- any entity body, the rules ensure reasonable behavior even if the
- length is not given explicitly.
- 5 General Header Fields
- See [H4.5], except that Pragma, Transfer-Encoding and Upgrade headers
- are not defined:
- general-header = Cache-Control ; Section 12.8
- | Connection ; Section 12.10
- | Date ; Section 12.18
- | Via ; Section 12.43
- 6 Request
- A request message from a client to a server or vice versa includes,
- within the first line of that message, the method to be applied to
- the resource, the identifier of the resource, and the protocol
- version in use.
- Schulzrinne, et. al. Standards Track [Page 20]
- RFC 2326 Real Time Streaming Protocol April 1998
- Request = Request-Line ; Section 6.1
- *( general-header ; Section 5
- | request-header ; Section 6.2
- | entity-header ) ; Section 8.1
- CRLF
- [ message-body ] ; Section 4.3
- 6.1 Request Line
- Request-Line = Method SP Request-URI SP RTSP-Version CRLF
- Method = "DESCRIBE" ; Section 10.2
- | "ANNOUNCE" ; Section 10.3
- | "GET_PARAMETER" ; Section 10.8
- | "OPTIONS" ; Section 10.1
- | "PAUSE" ; Section 10.6
- | "PLAY" ; Section 10.5
- | "RECORD" ; Section 10.11
- | "REDIRECT" ; Section 10.10
- | "SETUP" ; Section 10.4
- | "SET_PARAMETER" ; Section 10.9
- | "TEARDOWN" ; Section 10.7
- | extension-method
- extension-method = token
- Request-URI = "*" | absolute_URI
- RTSP-Version = "RTSP" "/" 1*DIGIT "." 1*DIGIT
- 6.2 Request Header Fields
- request-header = Accept ; Section 12.1
- | Accept-Encoding ; Section 12.2
- | Accept-Language ; Section 12.3
- | Authorization ; Section 12.5
- | From ; Section 12.20
- | If-Modified-Since ; Section 12.23
- | Range ; Section 12.29
- | Referer ; Section 12.30
- | User-Agent ; Section 12.41
- Note that in contrast to HTTP/1.1 [2], RTSP requests always contain
- the absolute URL (that is, including the scheme, host and port)
- rather than just the absolute path.
- Schulzrinne, et. al. Standards Track [Page 21]
- RFC 2326 Real Time Streaming Protocol April 1998
- HTTP/1.1 requires servers to understand the absolute URL, but
- clients are supposed to use the Host request header. This is purely
- needed for backward-compatibility with HTTP/1.0 servers, a
- consideration that does not apply to RTSP.
- The asterisk "*" in the Request-URI means that the request does not
- apply to a particular resource, but to the server itself, and is only
- allowed when the method used does not necessarily apply to a
- resource. One example would be:
- OPTIONS * RTSP/1.0
- 7 Response
- [H6] applies except that HTTP-Version is replaced by RTSP-Version.
- Also, RTSP defines additional status codes and does not define some
- HTTP codes. The valid response codes and the methods they can be used
- with are defined in Table 1.
- After receiving and interpreting a request message, the recipient
- responds with an RTSP response message.
- Response = Status-Line ; Section 7.1
- *( general-header ; Section 5
- | response-header ; Section 7.1.2
- | entity-header ) ; Section 8.1
- CRLF
- [ message-body ] ; Section 4.3
- 7.1 Status-Line
- The first line of a Response message is the Status-Line, consisting
- of the protocol version followed by a numeric status code, and the
- textual phrase associated with the status code, with each element
- separated by SP characters. No CR or LF is allowed except in the
- final CRLF sequence.
- Status-Line = RTSP-Version SP Status-Code SP Reason-Phrase CRLF
- 7.1.1 Status Code and Reason Phrase
- The Status-Code element is a 3-digit integer result code of the
- attempt to understand and satisfy the request. These codes are fully
- defined in Section 11. The Reason-Phrase is intended to give a short
- textual description of the Status-Code. The Status-Code is intended
- for use by automata and the Reason-Phrase is intended for the human
- user. The client is not required to examine or display the Reason-
- Phrase.
- Schulzrinne, et. al. Standards Track [Page 22]
- RFC 2326 Real Time Streaming Protocol April 1998
- The first digit of the Status-Code defines the class of response. The
- last two digits do not have any categorization role. There are 5
- values for the first digit:
- * 1xx: Informational - Request received, continuing process
- * 2xx: Success - The action was successfully received, understood,
- and accepted
- * 3xx: Redirection - Further action must be taken in order to
- complete the request
- * 4xx: Client Error - The request contains bad syntax or cannot be
- fulfilled
- * 5xx: Server Error - The server failed to fulfill an apparently
- valid request
- The individual values of the numeric status codes defined for
- RTSP/1.0, and an example set of corresponding Reason-Phrase's, are
- presented below. The reason phrases listed here are only recommended
- - they may be replaced by local equivalents without affecting the
- protocol. Note that RTSP adopts most HTTP/1.1 [2] status codes and
- adds RTSP-specific status codes starting at x50 to avoid conflicts
- with newly defined HTTP status codes.
- Schulzrinne, et. al. Standards Track [Page 23]
- RFC 2326 Real Time Streaming Protocol April 1998
- Status-Code = "100" ; Continue
- | "200" ; OK
- | "201" ; Created
- | "250" ; Low on Storage Space
- | "300" ; Multiple Choices
- | "301" ; Moved Permanently
- | "302" ; Moved Temporarily
- | "303" ; See Other
- | "304" ; Not Modified
- | "305" ; Use Proxy
- | "400" ; Bad Request
- | "401" ; Unauthorized
- | "402" ; Payment Required
- | "403" ; Forbidden
- | "404" ; Not Found
- | "405" ; Method Not Allowed
- | "406" ; Not Acceptable
- | "407" ; Proxy Authentication Required
- | "408" ; Request Time-out
- | "410" ; Gone
- | "411" ; Length Required
- | "412" ; Precondition Failed
- | "413" ; Request Entity Too Large
- | "414" ; Request-URI Too Large
- | "415" ; Unsupported Media Type
- | "451" ; Parameter Not Understood
- | "452" ; Conference Not Found
- | "453" ; Not Enough Bandwidth
- | "454" ; Session Not Found
- | "455" ; Method Not Valid in This State
- | "456" ; Header Field Not Valid for Resource
- | "457" ; Invalid Range
- | "458" ; Parameter Is Read-Only
- | "459" ; Aggregate operation not allowed
- | "460" ; Only aggregate operation allowed
- | "461" ; Unsupported transport
- | "462" ; Destination unreachable
- | "500" ; Internal Server Error
- | "501" ; Not Implemented
- | "502" ; Bad Gateway
- | "503" ; Service Unavailable
- | "504" ; Gateway Time-out
- | "505" ; RTSP Version not supported
- | "551" ; Option not supported
- | extension-code
- Schulzrinne, et. al. Standards Track [Page 24]
- RFC 2326 Real Time Streaming Protocol April 1998
- extension-code = 3DIGIT
- Reason-Phrase = *<TEXT, excluding CR, LF>
- RTSP status codes are extensible. RTSP applications are not required
- to understand the meaning of all registered status codes, though such
- understanding is obviously desirable. However, applications MUST
- understand the class of any status code, as indicated by the first
- digit, and treat any unrecognized response as being equivalent to the
- x00 status code of that class, with the exception that an
- unrecognized response MUST NOT be cached. For example, if an
- unrecognized status code of 431 is received by the client, it can
- safely assume that there was something wrong with its request and
- treat the response as if it had received a 400 status code. In such
- cases, user agents SHOULD present to the user the entity returned
- with the response, since that entity is likely to include human-
- readable information which will explain the unusual status.
- Code reason
- 100 Continue all
- 200 OK all
- 201 Created RECORD
- 250 Low on Storage Space RECORD
- 300 Multiple Choices all
- 301 Moved Permanently all
- 302 Moved Temporarily all
- 303 See Other all
- 305 Use Proxy all
- Schulzrinne, et. al. Standards Track [Page 25]
- RFC 2326 Real Time Streaming Protocol April 1998
- 400 Bad Request all
- 401 Unauthorized all
- 402 Payment Required all
- 403 Forbidden all
- 404 Not Found all
- 405 Method Not Allowed all
- 406 Not Acceptable all
- 407 Proxy Authentication Required all
- 408 Request Timeout all
- 410 Gone all
- 411 Length Required all
- 412 Precondition Failed DESCRIBE, SETUP
- 413 Request Entity Too Large all
- 414 Request-URI Too Long all
- 415 Unsupported Media Type all
- 451 Invalid parameter SETUP
- 452 Illegal Conference Identifier SETUP
- 453 Not Enough Bandwidth SETUP
- 454 Session Not Found all
- 455 Method Not Valid In This State all
- 456 Header Field Not Valid all
- 457 Invalid Range PLAY
- 458 Parameter Is Read-Only SET_PARAMETER
- 459 Aggregate Operation Not Allowed all
- 460 Only Aggregate Operation Allowed all
- 461 Unsupported Transport all
- 462 Destination Unreachable all
- 500 Internal Server Error all
- 501 Not Implemented all
- 502 Bad Gateway all
- 503 Service Unavailable all
- 504 Gateway Timeout all
- 505 RTSP Version Not Supported all
- 551 Option not support all
- Table 1: Status codes and their usage with RTSP methods
- 7.1.2 Response Header Fields
- The response-header fields allow the request recipient to pass
- additional information about the response which cannot be placed in
- the Status-Line. These header fields give information about the
- server and about further access to the resource identified by the
- Request-URI.
- Schulzrinne, et. al. Standards Track [Page 26]
- RFC 2326 Real Time Streaming Protocol April 1998
- response-header = Location ; Section 12.25
- | Proxy-Authenticate ; Section 12.26
- | Public ; Section 12.28
- | Retry-After ; Section 12.31
- | Server ; Section 12.36
- | Vary ; Section 12.42
- | WWW-Authenticate ; Section 12.44
- Response-header field names can be extended reliably only in
- combination with a change in the protocol version. However, new or
- experimental header fields MAY be given the semantics of response-
- header fields if all parties in the communication recognize them to
- be response-header fields. Unrecognized header fields are treated as
- entity-header fields.
- 8 Entity
- Request and Response messages MAY transfer an entity if not otherwise
- restricted by the request method or response status code. An entity
- consists of entity-header fields and an entity-body, although some
- responses will only include the entity-headers.
- In this section, both sender and recipient refer to either the client
- or the server, depending on who sends and who receives the entity.
- 8.1 Entity Header Fields
- Entity-header fields define optional metainformation about the
- entity-body or, if no body is present, about the resource identified
- by the request.
- entity-header = Allow ; Section 12.4
- | Content-Base ; Section 12.11
- | Content-Encoding ; Section 12.12
- | Content-Language ; Section 12.13
- | Content-Length ; Section 12.14
- | Content-Location ; Section 12.15
- | Content-Type ; Section 12.16
- | Expires ; Section 12.19
- | Last-Modified ; Section 12.24
- | extension-header
- extension-header = message-header
- The extension-header mechanism allows additional entity-header fields
- to be defined without changing the protocol, but these fields cannot
- be assumed to be recognizable by the recipient. Unrecognized header
- fields SHOULD be ignored by the recipient and forwarded by proxies.
- Schulzrinne, et. al. Standards Track [Page 27]
- RFC 2326 Real Time Streaming Protocol April 1998
- 8.2 Entity Body
- See [H7.2]
- 9 Connections
- RTSP requests can be transmitted in several different ways:
- * persistent transport connections used for several
- request-response transactions;
- * one connection per request/response transaction;
- * connectionless mode.
- The type of transport connection is defined by the RTSP URI (Section
- 3.2). For the scheme "rtsp", a persistent connection is assumed,
- while the scheme "rtspu" calls for RTSP requests to be sent without
- setting up a connection.
- Unlike HTTP, RTSP allows the media server to send requests to the
- media client. However, this is only supported for persistent
- connections, as the media server otherwise has no reliable way of
- reaching the client. Also, this is the only way that requests from
- media server to client are likely to traverse firewalls.
- 9.1 Pipelining
- A client that supports persistent connections or connectionless mode
- MAY "pipeline" its requests (i.e., send multiple requests without
- waiting for each response). A server MUST send its responses to those
- requests in the same order that the requests were received.
- 9.2 Reliability and Acknowledgements
- Requests are acknowledged by the receiver unless they are sent to a
- multicast group. If there is no acknowledgement, the sender may
- resend the same message after a timeout of one round-trip time (RTT).
- The round-trip time is estimated as in TCP (RFC 1123) [18], with an
- initial round-trip value of 500 ms. An implementation MAY cache the
- last RTT measurement as the initial value for future connections.
- If a reliable transport protocol is used to carry RTSP, requests MUST
- NOT be retransmitted; the RTSP application MUST instead rely on the
- underlying transport to provide reliability.
- If both the underlying reliable transport such as TCP and the RTSP
- application retransmit requests, it is possible that each packet
- loss results in two retransmissions. The receiver cannot typically
- take advantage of the application-layer retransmission since the
- Schulzrinne, et. al. Standards Track [Page 28]
- RFC 2326 Real Time Streaming Protocol April 1998
- transport stack will not deliver the application-layer
- retransmission before the first attempt has reached the receiver.
- If the packet loss is caused by congestion, multiple
- retransmissions at different layers will exacerbate the congestion.
- If RTSP is used over a small-RTT LAN, standard procedures for
- optimizing initial TCP round trip estimates, such as those used in
- T/TCP (RFC 1644) [22], can be beneficial.
- The Timestamp header (Section 12.38) is used to avoid the
- retransmission ambiguity problem [23, p. 301] and obviates the need
- for Karn's algorithm.
- Each request carries a sequence number in the CSeq header (Section
- 12.17), which is incremented by one for each distinct request
- transmitted. If a request is repeated because of lack of
- acknowledgement, the request MUST carry the original sequence number
- (i.e., the sequence number is not incremented).
- Systems implementing RTSP MUST support carrying RTSP over TCP and MAY
- support UDP. The default port for the RTSP server is 554 for both UDP
- and TCP.
- A number of RTSP packets destined for the same control end point may
- be packed into a single lower-layer PDU or encapsulated into a TCP
- stream. RTSP data MAY be interleaved with RTP and RTCP packets.
- Unlike HTTP, an RTSP message MUST contain a Content-Length header
- whenever that message contains a payload. Otherwise, an RTSP packet
- is terminated with an empty line immediately following the last
- message header.
- 10 Method Definitions
- The method token indicates the method to be performed on the resource
- identified by the Request-URI. The method is case-sensitive. New
- methods may be defined in the future. Method names may not start with
- a $ character (decimal 24) and must be a token. Methods are
- summarized in Table 2.
- Schulzrinne, et. al. Standards Track [Page 29]
- RFC 2326 Real Time Streaming Protocol April 1998
- method direction object requirement
- DESCRIBE C->S P,S recommended
- ANNOUNCE C->S, S->C P,S optional
- GET_PARAMETER C->S, S->C P,S optional
- OPTIONS C->S, S->C P,S required
- (S->C: optional)
- PAUSE C->S P,S recommended
- PLAY C->S P,S required
- RECORD C->S P,S optional
- REDIRECT S->C P,S optional
- SETUP C->S S required
- SET_PARAMETER C->S, S->C P,S optional
- TEARDOWN C->S P,S required
- Table 2: Overview of RTSP methods, their direction, and what
- objects (P: presentation, S: stream) they operate on
- Notes on Table 2: PAUSE is recommended, but not required in that a
- fully functional server can be built that does not support this
- method, for example, for live feeds. If a server does not support a
- particular method, it MUST return "501 Not Implemented" and a client
- SHOULD not try this method again for this server.
- 10.1 OPTIONS
- The behavior is equivalent to that described in [H9.2]. An OPTIONS
- request may be issued at any time, e.g., if the client is about to
- try a nonstandard request. It does not influence server state.
- Example:
- C->S: OPTIONS * RTSP/1.0
- CSeq: 1
- Require: implicit-play
- Proxy-Require: gzipped-messages
- S->C: RTSP/1.0 200 OK
- CSeq: 1
- Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
- Note that these are necessarily fictional features (one would hope
- that we would not purposefully overlook a truly useful feature just
- so that we could have a strong example in this section).
- Schulzrinne, et. al. Standards Track [Page 30]
- RFC 2326 Real Time Streaming Protocol April 1998
- 10.2 DESCRIBE
- The DESCRIBE method retrieves the description of a presentation or
- media object identified by the request URL from a server. It may use
- the Accept header to specify the description formats that the client
- understands. The server responds with a description of the requested
- resource. The DESCRIBE reply-response pair constitutes the media
- initialization phase of RTSP.
- Example:
- C->S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0
- CSeq: 312
- Accept: application/sdp, application/rtsl, application/mheg
- S->C: RTSP/1.0 200 OK
- CSeq: 312
- Date: 23 Jan 1997 15:35:06 GMT
- Content-Type: application/sdp
- Content-Length: 376
- v=0
- o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4
- s=SDP Seminar
- i=A Seminar on the session description protocol
- u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
- e=mjh@isi.edu (Mark Handley)
- c=IN IP4 224.2.17.12/127
- t=2873397496 2873404696
- a=recvonly
- m=audio 3456 RTP/AVP 0
- m=video 2232 RTP/AVP 31
- m=whiteboard 32416 UDP WB
- a=orient:portrait
- The DESCRIBE response MUST contain all media initialization
- information for the resource(s) that it describes. If a media client
- obtains a presentation description from a source other than DESCRIBE
- and that description contains a complete set of media initialization
- parameters, the client SHOULD use those parameters and not then
- request a description for the same media via RTSP.
- Additionally, servers SHOULD NOT use the DESCRIBE response as a means
- of media indirection.
- Clear ground rules need to be established so that clients have an
- unambiguous means of knowing when to request media initialization
- information via DESCRIBE, and when not to. By forcing a DESCRIBE
- Schulzrinne, et. al. Standards Track [Page 31]
- RFC 2326 Real Time Streaming Protocol April 1998
- response to contain all media initialization for the set of streams
- that it describes, and discouraging use of DESCRIBE for media
- indirection, we avoid looping problems that might result from other
- approaches.
- Media initialization is a requirement for any RTSP-based system,
- but the RTSP specification does not dictate that this must be done
- via the DESCRIBE method. There are three ways that an RTSP client
- may receive initialization information:
- * via RTSP's DESCRIBE method;
- * via some other protocol (HTTP, email attachment, etc.);
- * via the command line or standard input (thus working as a browser
- helper application launched with an SDP file or other media
- initialization format).
- In the interest of practical interoperability, it is highly
- recommended that minimal servers support the DESCRIBE method, and
- highly recommended that minimal clients support the ability to act
- as a "helper application" that accepts a media initialization file
- from standard input, command line, and/or other means that are
- appropriate to the operating environment of the client.
- 10.3 ANNOUNCE
- The ANNOUNCE method serves two purposes:
- When sent from client to server, ANNOUNCE posts the description of a
- presentation or media object identified by the request URL to a
- server. When sent from server to client, ANNOUNCE updates the session
- description in real-time.
- If a new media stream is added to a presentation (e.g., during a live
- presentation), the whole presentation description should be sent
- again, rather than just the additional components, so that components
- can be deleted.
- Example:
- C->S: ANNOUNCE rtsp://server.example.com/fizzle/foo RTSP/1.0
- CSeq: 312
- Date: 23 Jan 1997 15:35:06 GMT
- Session: 47112344
- Content-Type: application/sdp
- Content-Length: 332
- v=0
- o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
- Schulzrinne, et. al. Standards Track [Page 32]
- RFC 2326 Real Time Streaming Protocol April 1998
- s=SDP Seminar
- i=A Seminar on the session description protocol
- u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
- e=mjh@isi.edu (Mark Handley)
- c=IN IP4 224.2.17.12/127
- t=2873397496 2873404696
- a=recvonly
- m=audio 3456 RTP/AVP 0
- m=video 2232 RTP/AVP 31
- S->C: RTSP/1.0 200 OK
- CSeq: 312
- 10.4 SETUP
- The SETUP request for a URI specifies the transport mechanism to be
- used for the streamed media. A client can issue a SETUP request for a
- stream that is already playing to change transport parameters, which
- a server MAY allow. If it does not allow this, it MUST respond with
- error "455 Method Not Valid In This State". For the benefit of any
- intervening firewalls, a client must indicate the transport
- parameters even if it has no influence over these parameters, for
- example, where the server advertises a fixed multicast address.
- Since SETUP includes all transport initialization information,
- firewalls and other intermediate network devices (which need this
- information) are spared the more arduous task of parsing the
- DESCRIBE response, which has been reserved for media
- initialization.
- The Transport header specifies the transport parameters acceptable to
- the client for data transmission; the response will contain the
- transport parameters selected by the server.
- C->S: SETUP rtsp://example.com/foo/bar/baz.rm RTSP/1.0
- CSeq: 302
- Transport: RTP/AVP;unicast;client_port=4588-4589
- S->C: RTSP/1.0 200 OK
- CSeq: 302
- Date: 23 Jan 1997 15:35:06 GMT
- Session: 47112344
- Transport: RTP/AVP;unicast;
- client_port=4588-4589;server_port=6256-6257
- The server generates session identifiers in response to SETUP
- requests. If a SETUP request to a server includes a session
- identifier, the server MUST bundle this setup request into the
- Schulzrinne, et. al. Standards Track [Page 33]
- RFC 2326 Real Time Streaming Protocol April 1998
- existing session or return error "459 Aggregate Operation Not
- Allowed" (see Section 11.3.10).
- 10.5 PLAY
- The PLAY method tells the server to start sending data via the
- mechanism specified in SETUP. A client MUST NOT issue a PLAY request
- until any outstanding SETUP requests have been acknowledged as
- successful.
- The PLAY request positions the normal play time to the beginning of
- the range specified and delivers stream data until the end of the
- range is reached. PLAY requests may be pipelined (queued); a server
- MUST queue PLAY requests to be executed in order. That is, a PLAY
- request arriving while a previous PLAY request is still active is
- delayed until the first has been completed.
- This allows precise editing.
- For example, regardless of how closely spaced the two PLAY requests
- in the example below arrive, the server will first play seconds 10
- through 15, then, immediately following, seconds 20 to 25, and
- finally seconds 30 through the end.
- C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
- CSeq: 835
- Session: 12345678
- Range: npt=10-15
- C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
- CSeq: 836
- Session: 12345678
- Range: npt=20-25
- C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
- CSeq: 837
- Session: 12345678
- Range: npt=30-
- See the description of the PAUSE request for further examples.
- A PLAY request without a Range header is legal. It starts playing a
- stream from the beginning unless the stream has been paused. If a
- stream has been paused via PAUSE, stream delivery resumes at the
- pause point. If a stream is playing, such a PLAY request causes no
- further action and can be used by the client to test server liveness.
- Schulzrinne, et. al. Standards Track [Page 34]
- RFC 2326 Real Time Streaming Protocol April 1998
- The Range header may also contain a time parameter. This parameter
- specifies a time in UTC at which the playback should start. If the
- message is received after the specified time, playback is started
- immediately. The time parameter may be used to aid in synchronization
- of streams obtained from different sources.
- For a on-demand stream, the server replies with the actual range that
- will be played back. This may differ from the requested range if
- alignment of the requested range to valid frame boundaries is
- required for the media source. If no range is specified in the
- request, the current position is returned in the reply. The unit of
- the range in the reply is the same as that in the request.
- After playing the desired range, the presentation is automatically
- paused, as if a PAUSE request had been issued.
- The following example plays the whole presentation starting at SMPTE
- time code 0:10:20 until the end of the clip. The playback is to start
- at 15:36 on 23 Jan 1997.
- C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
- CSeq: 833
- Session: 12345678
- Range: smpte=0:10:20-;time=19970123T153600Z
- S->C: RTSP/1.0 200 OK
- CSeq: 833
- Date: 23 Jan 1997 15:35:06 GMT
- Range: smpte=0:10:22-;time=19970123T153600Z
- For playing back a recording of a live presentation, it may be
- desirable to use clock units:
- C->S: PLAY rtsp://audio.example.com/meeting.en RTSP/1.0
- CSeq: 835
- Session: 12345678
- Range: clock=19961108T142300Z-19961108T143520Z
- S->C: RTSP/1.0 200 OK
- CSeq: 835
- Date: 23 Jan 1997 15:35:06 GMT
- A media server only supporting playback MUST support the npt format
- and MAY support the clock and smpte formats.
- Schulzrinne, et. al. Standards Track [Page 35]
- RFC 2326 Real Time Streaming Protocol April 1998
- 10.6 PAUSE
- The PAUSE request causes the stream delivery to be interrupted
- (halted) temporarily. If the request URL names a stream, only
- playback and recording of that stream is halted. For example, for
- audio, this is equivalent to muting. If the request URL names a
- presentation or group of streams, delivery of all currently active
- streams within the presentation or group is halted. After resuming
- playback or recording, synchronization of the tracks MUST be
- maintained. Any server resources are kept, though servers MAY close
- the session and free resources after being paused for the duration
- specified with the timeout parameter of the Session header in the
- SETUP message.
- Example:
- C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/1.0
- CSeq: 834
- Session: 12345678
- S->C: RTSP/1.0 200 OK
- CSeq: 834
- Date: 23 Jan 1997 15:35:06 GMT
- The PAUSE request may contain a Range header specifying when the
- stream or presentation is to be halted. We refer to this point as the
- "pause point". The header must contain exactly one value rather than
- a time range. The normal play time for the stream is set to the pause
- point. The pause request becomes effective the first time the server
- is encountering the time point specified in any of the currently
- pending PLAY requests. If the Range header specifies a time outside
- any currently pending PLAY requests, the error "457 Invalid Range" is
- returned. If a media unit (such as an audio or video frame) starts
- presentation at exactly the pause point, it is not played or
- recorded. If the Range header is missing, stream delivery is
- interrupted immediately on receipt of the message and the pause point
- is set to the current normal play time.
- A PAUSE request discards all queued PLAY requests. However, the pause
- point in the media stream MUST be maintained. A subsequent PLAY
- request without Range header resumes from the pause point.
- For example, if the server has play requests for ranges 10 to 15 and
- 20 to 29 pending and then receives a pause request for NPT 21, it
- would start playing the second range and stop at NPT 21. If the pause
- request is for NPT 12 and the server is playing at NPT 13 serving the
- first play request, the server stops immediately. If the pause
- request is for NPT 16, the server stops after completing the first
- Schulzrinne, et. al. Standards Track [Page 36]
- RFC 2326 Real Time Streaming Protocol April 1998
- play request and discards the second play request.
- As another example, if a server has received requests to play ranges
- 10 to 15 and then 13 to 20 (that is, overlapping ranges), the PAUSE
- request for NPT=14 would take effect while the server plays the first
- range, with the second PLAY request effectively being ignored,
- assuming the PAUSE request arrives before the server has started
- playing the second, overlapping range. Regardless of when the PAUSE
- request arrives, it sets the NPT to 14.
- If the server has already sent data beyond the time specified in the
- Range header, a PLAY would still resume at that point in time, as it
- is assumed that the client has discarded data after that point. This
- ensures continuous pause/play cycling without gaps.
- 10.7 TEARDOWN
- The TEARDOWN request stops the stream delivery for the given URI,
- freeing the resources associated with it. If the URI is the
- presentation URI for this presentation, any RTSP session identifier
- associated with the session is no longer valid. Unless all transport
- parameters are defined by the session description, a SETUP request
- has to be issued before the session can be played again.
- Example:
- C->S: TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0
- CSeq: 892
- Session: 12345678
- S->C: RTSP/1.0 200 OK
- CSeq: 892
- 10.8 GET_PARAMETER
- The GET_PARAMETER request retrieves the value of a parameter of a
- presentation or stream specified in the URI. The content of the reply
- and response is left to the implementation. GET_PARAMETER with no
- entity body may be used to test client or server liveness ("ping").
- Example:
- S->C: GET_PARAMETER rtsp://example.com/fizzle/foo RTSP/1.0
- CSeq: 431
- Content-Type: text/parameters
- Session: 12345678
- Content-Length: 15
- packets_received
- jitter
- Schulzrinne, et. al. Standards Track [Page 37]
- RFC 2326 Real Time Streaming Protocol April 1998
- C->S: RTSP/1.0 200 OK
- CSeq: 431
- Content-Length: 46
- Content-Type: text/parameters
- packets_received: 10
- jitter: 0.3838
- The "text/parameters" section is only an example type for
- parameter. This method is intentionally loosely defined with the
- intention that the reply content and response content will be
- defined after further experimentation.
- 10.9 SET_PARAMETER
- This method requests to set the value of a parameter for a
- presentation or stream specified by the URI.
- A request SHOULD only contain a single parameter to allow the client
- to determine why a particular request failed. If the request contains
- several parameters, the server MUST only act on the request if all of
- the parameters can be set successfully. A server MUST allow a
- parameter to be set repeatedly to the same value, but it MAY disallow
- changing parameter values.
- Note: transport parameters for the media stream MUST only be set with
- the SETUP command.
- Restricting setting transport parameters to SETUP is for the
- benefit of firewalls.
- The parameters are split in a fine-grained fashion so that there
- can be more meaningful error indications. However, it may make
- sense to allow the setting of several parameters if an atomic
- setting is desirable. Imagine device control where the client does
- not want the camera to pan unless it can also tilt to the right
- angle at the same time.
- Example:
- C->S: SET_PARAMETER rtsp://example.com/fizzle/foo RTSP/1.0
- CSeq: 421
- Content-length: 20
- Content-type: text/parameters
- barparam: barstuff
- S->C: RTSP/1.0 451 Invalid Parameter
- Schulzrinne, et. al. Standards Track [Page 38]
- RFC 2326 Real Time Streaming Protocol April 1998
- CSeq: 421
- Content-length: 10
- Content-type: text/parameters
- barparam
- The "text/parameters" section is only an example type for
- parameter. This method is intentionally loosely defined with the
- intention that the reply content and response content will be
- defined after further experimentation.
- 10.10 REDIRECT
- A redirect request informs the client that it must connect to another
- server location. It contains the mandatory header Location, which
- indicates that the client should issue requests for that URL. It may
- contain the parameter Range, which indicates when the redirection
- takes effect. If the client wants to continue to send or receive
- media for this URI, the client MUST issue a TEARDOWN request for the
- current session and a SETUP for the new session at the designated
- host.
- This example request redirects traffic for this URI to the new server
- at the given play time:
- S->C: REDIRECT rtsp://example.com/fizzle/foo RTSP/1.0
- CSeq: 732
- Location: rtsp://bigserver.com:8001
- Range: clock=19960213T143205Z-
- 10.11 RECORD
- This method initiates recording a range of media data according to
- the presentation description. The timestamp reflects start and end
- time (UTC). If no time range is given, use the start or end time
- provided in the presentation description. If the session has already
- started, commence recording immediately.
- The server decides whether to store the recorded data under the
- request-URI or another URI. If the server does not use the request-
- URI, the response SHOULD be 201 (Created) and contain an entity which
- describes the status of the request and refers to the new resource,
- and a Location header.
- A media server supporting recording of live presentations MUST
- support the clock range format; the smpte format does not make sense.
- Schulzrinne, et. al. Standards Track [Page 39]
- RFC 2326 Real Time Streaming Protocol April 1998
- In this example, the media server was previously invited to the
- conference indicated.
- C->S: RECORD rtsp://example.com/meeting/audio.en RTSP/1.0
- CSeq: 954
- Session: 12345678
- Conference: 128.16.64.19/32492374
- 10.12 Embedded (Interleaved) Binary Data
- Certain firewall designs and other circumstances may force a server
- to interleave RTSP methods and stream data. This interleaving should
- generally be avoided unless necessary since it complicates client and
- server operation and imposes additional overhead. Interleaved binary
- data SHOULD only be used if RTSP is carried over TCP.
- Stream data such as RTP packets is encapsulated by an ASCII dollar
- sign (24 hexadecimal), followed by a one-byte channel identifier,
- followed by the length of the encapsulated binary data as a binary,
- two-byte integer in network byte order. The stream data follows
- immediately afterwards, without a CRLF, but including the upper-layer
- protocol headers. Each $ block contains exactly one upper-layer
- protocol data unit, e.g., one RTP packet.
- The channel identifier is defined in the Transport header with the
- interleaved parameter(Section 12.39).
- When the transport choice is RTP, RTCP messages are also interleaved
- by the server over the TCP connection. As a default, RTCP packets are
- sent on the first available channel higher than the RTP channel. The
- client MAY explicitly request RTCP packets on another channel. This
- is done by specifying two channels in the interleaved parameter of
- the Transport header(Section 12.39).
- RTCP is needed for synchronization when two or more streams are
- interleaved in such a fashion. Also, this provides a convenient way
- to tunnel RTP/RTCP packets through the TCP control connection when
- required by the network configuration and transfer them onto UDP
- when possible.
- C->S: SETUP rtsp://foo.com/bar.file RTSP/1.0
- CSeq: 2
- Transport: RTP/AVP/TCP;interleaved=0-1
- S->C: RTSP/1.0 200 OK
- CSeq: 2
- Date: 05 Jun 1997 18:57:18 GMT
- Transport: RTP/AVP/TCP;interleaved=0-1
- Schulzrinne, et. al. Standards Track [Page 40]
- RFC 2326 Real Time Streaming Protocol April 1998
- Session: 12345678
- C->S: PLAY rtsp://foo.com/bar.file RTSP/1.0
- CSeq: 3
- Session: 12345678
- S->C: RTSP/1.0 200 OK
- CSeq: 3
- Session: 12345678
- Date: 05 Jun 1997 18:59:15 GMT
- RTP-Info: url=rtsp://foo.com/bar.file;
- seq=232433;rtptime=972948234
- S->C: $ 00{2 byte length}{"length" bytes data, w/RTP header}
- S->C: $ 00{2 byte length}{"length" bytes data, w/RTP header}
- S->C: $ 01{2 byte length}{"length" bytes RTCP packet}
- 11 Status Code Definitions
- Where applicable, HTTP status [H10] codes are reused. Status codes
- that have the same meaning are not repeated here. See Table 1 for a
- listing of which status codes may be returned by which requests.
- 11.1 Success 2xx
- 11.1.1 250 Low on Storage Space
- The server returns this warning after receiving a RECORD request that
- it may not be able to fulfill completely due to insufficient storage
- space. If possible, the server should use the Range header to
- indicate what time period it may still be able to record. Since other
- processes on the server may be consuming storage space
- simultaneously, a client should take this only as an estimate.
- 11.2 Redirection 3xx
- See [H10.3].
- Within RTSP, redirection may be used for load balancing or
- redirecting stream requests to a server topologically closer to the
- client. Mechanisms to determine topological proximity are beyond the
- scope of this specification.
- Schulzrinne, et. al. Standards Track [Page 41]
- RFC 2326 Real Time Streaming Protocol April 1998
- 11.3 Client Error 4xx
- 11.3.1 405 Method Not Allowed
- The method specified in the request is not allowed for the resource
- identified by the request URI. The response MUST include an Allow
- header containing a list of valid methods for the requested resource.
- This status code is also to be used if a request attempts to use a
- method not indicated during SETUP, e.g., if a RECORD request is
- issued even though the mode parameter in the Transport header only
- specified PLAY.
- 11.3.2 451 Parameter Not Understood
- The recipient of the request does not support one or more parameters
- contained in the request.
- 11.3.3 452 Conference Not Found
- The conference indicated by a Conference header field is unknown to
- the media server.
- 11.3.4 453 Not Enough Bandwidth
- The request was refused because there was insufficient bandwidth.
- This may, for example, be the result of a resource reservation
- failure.
- 11.3.5 454 Session Not Found
- The RTSP session identifier in the Session header is missing,
- invalid, or has timed out.
- 11.3.6 455 Method Not Valid in This State
- The client or server cannot process this request in its current
- state. The response SHOULD contain an Allow header to make error
- recovery easier.
- 11.3.7 456 Header Field Not Valid for Resource
- The server could not act on a required request header. For example,
- if PLAY contains the Range header field but the stream does not allow
- seeking.
- Schulzrinne, et. al. Standards Track [Page 42]
- RFC 2326 Real Time Streaming Protocol April 1998
- 11.3.8 457 Invalid Range
- The Range value given is out of bounds, e.g., beyond the end of the
- presentation.
- 11.3.9 458 Parameter Is Read-Only
- The parameter to be set by SET_PARAMETER can be read but not
- modified.
- 11.3.10 459 Aggregate Operation Not Allowed
- The requested method may not be applied on the URL in question since
- it is an aggregate (presentation) URL. The method may be applied on a
- stream URL.
- 11.3.11 460 Only Aggregate Operation Allowed
- The requested method may not be applied on the URL in question since
- it is not an aggregate (presentation) URL. The method may be applied
- on the presentation URL.
- 11.3.12 461 Unsupported Transport
- The Transport field did not contain a supported transport
- specification.
- 11.3.13 462 Destination Unreachable
- The data transmission channel could not be established because the
- client address could not be reached. This error will most likely be
- the result of a client attempt to place an invalid Destination
- parameter in the Transport field.
- 11.3.14 551 Option not supported
- An option given in the Require or the Proxy-Require fields was not
- supported. The Unsupported header should be returned stating the
- option for which there is no support.
- Schulzrinne, et. al. Standards Track [Page 43]
- RFC 2326 Real Time Streaming Protocol April 1998
- 12 Header Field Definitions
- HTTP/1.1 [2] or other, non-standard header fields not listed here
- currently have no well-defined meaning and SHOULD be ignored by the
- recipient.
- Table 3 summarizes the header fields used by RTSP. Type "g"
- designates general request headers to be found in both requests and
- responses, type "R" designates request headers, type "r" designates
- response headers, and type "e" designates entity header fields.
- Fields marked with "req." in the column labeled "support" MUST be
- implemented by the recipient for a particular method, while fields
- marked "opt." are optional. Note that not all fields marked "req."
- will be sent in every request of this type. The "req." means only
- that client (for response headers) and server (for request headers)
- MUST implement the fields. The last column lists the method for which
- this header field is meaningful; the designation "entity" refers to
- all methods that return a message body. Within this specification,
- DESCRIBE and GET_PARAMETER fall into this class.
- Schulzrinne, et. al. Standards Track [Page 44]
- RFC 2326 Real Time Streaming Protocol April 1998
- Header type support methods
- Accept R opt. entity
- Accept-Encoding R opt. entity
- Accept-Language R opt. all
- Allow r opt. all
- Authorization R opt. all
- Bandwidth R opt. all
- Blocksize R opt. all but OPTIONS, TEARDOWN
- Cache-Control g opt. SETUP
- Conference R opt. SETUP
- Connection g req. all
- Content-Base e opt. entity
- Content-Encoding e req. SET_PARAMETER
- Content-Encoding e req. DESCRIBE, ANNOUNCE
- Content-Language e req. DESCRIBE, ANNOUNCE
- Content-Length e req. SET_PARAMETER, ANNOUNCE
- Content-Length e req. entity
- Content-Location e opt. entity
- Content-Type e req. SET_PARAMETER, ANNOUNCE
- Content-Type r req. entity
- CSeq g req. all
- Date g opt. all
- Expires e opt. DESCRIBE, ANNOUNCE
- From R opt. all
- If-Modified-Since R opt. DESCRIBE, SETUP
- Last-Modified e opt. entity
- Proxy-Authenticate
- Proxy-Require R req. all
- Public r opt. all
- Range R opt. PLAY, PAUSE, RECORD
- Range r opt. PLAY, PAUSE, RECORD
- Referer R opt. all
- Require R req. all
- Retry-After r opt. all
- RTP-Info r req. PLAY
- Scale Rr opt. PLAY, RECORD
- Session Rr req. all but SETUP, OPTIONS
- Server r opt. all
- Speed Rr opt. PLAY
- Transport Rr req. SETUP
- Unsupported r req. all
- User-Agent R opt. all
- Via g opt. all
- WWW-Authenticate r opt. all
- Schulzrinne, et. al. Standards Track [Page 45]
- RFC 2326 Real Time Streaming Protocol April 1998
- Overview of RTSP header fields
- 12.1 Accept
- The Accept request-header field can be used to specify certain
- presentation description content types which are acceptable for the
- response.
- The "level" parameter for presentation descriptions is properly
- defined as part of the MIME type registration, not here.
- See [H14.1] for syntax.
- Example of use:
- Accept: application/rtsl, application/sdp;level=2
- 12.2 Accept-Encoding
- See [H14.3]
- 12.3 Accept-Language
- See [H14.4]. Note that the language specified applies to the
- presentation description and any reason phrases, not the media
- content.
- 12.4 Allow
- The Allow response header field lists the methods supported by the
- resource identified by the request-URI. The purpose of this field is
- to strictly inform the recipient of valid methods associated with the
- resource. An Allow header field must be present in a 405 (Method not
- allowed) response.
- Example of use:
- Allow: SETUP, PLAY, RECORD, SET_PARAMETER
- 12.5 Authorization
- See [H14.8]
- 12.6 Bandwidth
- The Bandwidth request header field describes the estimated bandwidth
- available to the client, expressed as a positive integer and measured
- in bits per second. The bandwidth available to the client may change
- during an RTSP session, e.g., due to modem retraining.
- Schulzrinne, et. al. Standards Track [Page 46]