draft-ietf-mmusic-rfc2326bis-29.txt   draft-ietf-mmusic-rfc2326bis-30.txt 
MMUSIC Working Group H. Schulzrinne MMUSIC Working Group H. Schulzrinne
Internet-Draft Columbia University Internet-Draft Columbia University
Obsoletes: 2326 (if approved) A. Rao Obsoletes: 2326 (if approved) A. Rao
Intended status: Standards Track Cisco Intended status: Standards Track Cisco
Expires: September 13, 2012 R. Lanphier Expires: January 17, 2013 R. Lanphier
M. Westerlund M. Westerlund
Ericsson AB Ericsson AB
M. Stiemerling (Ed.) M. Stiemerling (Ed.)
NEC NEC
March 12, 2012 July 16, 2012
Real Time Streaming Protocol 2.0 (RTSP) Real Time Streaming Protocol 2.0 (RTSP)
draft-ietf-mmusic-rfc2326bis-29 draft-ietf-mmusic-rfc2326bis-30
Abstract Abstract
This memorandum defines RTSP version 2.0 which obsoletes RTSP version This memorandum defines RTSP version 2.0 which obsoletes RTSP version
1.0 defined in RFC 2326. 1.0 defined in RFC 2326.
The Real Time Streaming Protocol, or RTSP, is an application-level The Real Time Streaming Protocol, or RTSP, is an application-level
protocol for setup and control of the delivery of data with real-time protocol for setup and control of the delivery of data with real-time
properties. RTSP provides an extensible framework to enable properties. RTSP provides an extensible framework to enable
controlled, on-demand delivery of real-time data, such as audio and controlled, on-demand delivery of real-time data, such as audio and
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 13, 2012. This Internet-Draft will expire on January 17, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 8, line 40 skipping to change at page 8, line 40
22.12.2. Registration Rules . . . . . . . . . . . . . . . . . 218 22.12.2. Registration Rules . . . . . . . . . . . . . . . . . 218
22.12.3. Registered Values . . . . . . . . . . . . . . . . . 219 22.12.3. Registered Values . . . . . . . . . . . . . . . . . 219
22.13. Transport Header Registries . . . . . . . . . . . . . . 219 22.13. Transport Header Registries . . . . . . . . . . . . . . 219
22.13.1. Transport Protocol Specification . . . . . . . . . . 219 22.13.1. Transport Protocol Specification . . . . . . . . . . 219
22.13.2. Transport modes . . . . . . . . . . . . . . . . . . 221 22.13.2. Transport modes . . . . . . . . . . . . . . . . . . 221
22.13.3. Transport Parameters . . . . . . . . . . . . . . . . 221 22.13.3. Transport Parameters . . . . . . . . . . . . . . . . 221
22.14. URI Schemes . . . . . . . . . . . . . . . . . . . . . . 222 22.14. URI Schemes . . . . . . . . . . . . . . . . . . . . . . 222
22.14.1. The rtsp URI Scheme . . . . . . . . . . . . . . . . 222 22.14.1. The rtsp URI Scheme . . . . . . . . . . . . . . . . 222
22.14.2. The rtsps URI Scheme . . . . . . . . . . . . . . . . 223 22.14.2. The rtsps URI Scheme . . . . . . . . . . . . . . . . 223
22.14.3. The rtspu URI Scheme . . . . . . . . . . . . . . . . 224 22.14.3. The rtspu URI Scheme . . . . . . . . . . . . . . . . 224
22.15. SDP attributes . . . . . . . . . . . . . . . . . . . . . 224 22.15. SDP attributes . . . . . . . . . . . . . . . . . . . . . 225
22.16. Media Type Registration for text/parameters . . . . . . 225 22.16. Media Type Registration for text/parameters . . . . . . 226
23. References . . . . . . . . . . . . . . . . . . . . . . . . . 227 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 228
23.1. Normative References . . . . . . . . . . . . . . . . . . 227 23.1. Normative References . . . . . . . . . . . . . . . . . . 228
23.2. Informative References . . . . . . . . . . . . . . . . . 229 23.2. Informative References . . . . . . . . . . . . . . . . . 230
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 232 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 233
A.1. Media on Demand (Unicast) . . . . . . . . . . . . . . . 232 A.1. Media on Demand (Unicast) . . . . . . . . . . . . . . . 233
A.2. Media on Demand using Pipelining . . . . . . . . . . . . 236 A.2. Media on Demand using Pipelining . . . . . . . . . . . . 237
A.3. Media on Demand (Unicast) . . . . . . . . . . . . . . . 238 A.3. Media on Demand (Unicast) . . . . . . . . . . . . . . . 239
A.4. Single Stream Container Files . . . . . . . . . . . . . 242 A.4. Single Stream Container Files . . . . . . . . . . . . . 243
A.5. Live Media Presentation Using Multicast . . . . . . . . 244 A.5. Live Media Presentation Using Multicast . . . . . . . . 245
A.6. Capability Negotiation . . . . . . . . . . . . . . . . . 245 A.6. Capability Negotiation . . . . . . . . . . . . . . . . . 246
Appendix B. RTSP Protocol State Machine . . . . . . . . . . . . 247 Appendix B. RTSP Protocol State Machine . . . . . . . . . . . . 248
B.1. States . . . . . . . . . . . . . . . . . . . . . . . . . 247 B.1. States . . . . . . . . . . . . . . . . . . . . . . . . . 248
B.2. State variables . . . . . . . . . . . . . . . . . . . . 247 B.2. State variables . . . . . . . . . . . . . . . . . . . . 248
B.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . 247 B.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . 248
B.4. State Tables . . . . . . . . . . . . . . . . . . . . . . 248 B.4. State Tables . . . . . . . . . . . . . . . . . . . . . . 249
Appendix C. Media Transport Alternatives . . . . . . . . . . . . 254 Appendix C. Media Transport Alternatives . . . . . . . . . . . . 255
C.1. RTP . . . . . . . . . . . . . . . . . . . . . . . . . . 254 C.1. RTP . . . . . . . . . . . . . . . . . . . . . . . . . . 255
C.1.1. AVP . . . . . . . . . . . . . . . . . . . . . . . . 254 C.1.1. AVP . . . . . . . . . . . . . . . . . . . . . . . . 255
C.1.2. AVP/UDP . . . . . . . . . . . . . . . . . . . . . . 254 C.1.2. AVP/UDP . . . . . . . . . . . . . . . . . . . . . . 255
C.1.3. AVPF/UDP . . . . . . . . . . . . . . . . . . . . . . 255 C.1.3. AVPF/UDP . . . . . . . . . . . . . . . . . . . . . . 256
C.1.4. SAVP/UDP . . . . . . . . . . . . . . . . . . . . . . 256 C.1.4. SAVP/UDP . . . . . . . . . . . . . . . . . . . . . . 257
C.1.5. SAVPF/UDP . . . . . . . . . . . . . . . . . . . . . 258 C.1.5. SAVPF/UDP . . . . . . . . . . . . . . . . . . . . . 259
C.1.6. RTCP usage with RTSP . . . . . . . . . . . . . . . . 258 C.1.6. RTCP usage with RTSP . . . . . . . . . . . . . . . . 259
C.2. RTP over TCP . . . . . . . . . . . . . . . . . . . . . . 260 C.2. RTP over TCP . . . . . . . . . . . . . . . . . . . . . . 261
C.2.1. Interleaved RTP over TCP . . . . . . . . . . . . . . 260 C.2.1. Interleaved RTP over TCP . . . . . . . . . . . . . . 261
C.2.2. RTP over independent TCP . . . . . . . . . . . . . . 260 C.2.2. RTP over independent TCP . . . . . . . . . . . . . . 261
C.3. Handling Media Clock Time Jumps in the RTP Media Layer . 264 C.3. Handling Media Clock Time Jumps in the RTP Media Layer . 265
C.4. Handling RTP Timestamps after PAUSE . . . . . . . . . . 268 C.4. Handling RTP Timestamps after PAUSE . . . . . . . . . . 269
C.5. RTSP / RTP Integration . . . . . . . . . . . . . . . . . 270 C.5. RTSP / RTP Integration . . . . . . . . . . . . . . . . . 271
C.6. Scaling with RTP . . . . . . . . . . . . . . . . . . . . 270 C.6. Scaling with RTP . . . . . . . . . . . . . . . . . . . . 271
C.7. Maintaining NPT synchronization with RTP timestamps . . 270 C.7. Maintaining NPT synchronization with RTP timestamps . . 271
C.8. Continuous Audio . . . . . . . . . . . . . . . . . . . . 270 C.8. Continuous Audio . . . . . . . . . . . . . . . . . . . . 271
C.9. Multiple Sources in an RTP Session . . . . . . . . . . . 270 C.9. Multiple Sources in an RTP Session . . . . . . . . . . . 271
C.10. Usage of SSRCs and the RTCP BYE Message During an C.10. Usage of SSRCs and the RTCP BYE Message During an
RTSP Session . . . . . . . . . . . . . . . . . . . . . . 270 RTSP Session . . . . . . . . . . . . . . . . . . . . . . 271
C.11. Future Additions . . . . . . . . . . . . . . . . . . . . 271 C.11. Future Additions . . . . . . . . . . . . . . . . . . . . 272
Appendix D. Use of SDP for RTSP Session Descriptions . . . . . . 272 Appendix D. Use of SDP for RTSP Session Descriptions . . . . . . 273
D.1. Definitions . . . . . . . . . . . . . . . . . . . . . . 272 D.1. Definitions . . . . . . . . . . . . . . . . . . . . . . 273
D.1.1. Control URI . . . . . . . . . . . . . . . . . . . . 272 D.1.1. Control URI . . . . . . . . . . . . . . . . . . . . 273
D.1.2. Media Streams . . . . . . . . . . . . . . . . . . . 273 D.1.2. Media Streams . . . . . . . . . . . . . . . . . . . 274
D.1.3. Payload Type(s) . . . . . . . . . . . . . . . . . . 274 D.1.3. Payload Type(s) . . . . . . . . . . . . . . . . . . 275
D.1.4. Format-Specific Parameters . . . . . . . . . . . . . 274 D.1.4. Format-Specific Parameters . . . . . . . . . . . . . 275
D.1.5. Directionality of media stream . . . . . . . . . . . 274 D.1.5. Directionality of media stream . . . . . . . . . . . 275
D.1.6. Range of Presentation . . . . . . . . . . . . . . . 275 D.1.6. Range of Presentation . . . . . . . . . . . . . . . 276
D.1.7. Time of Availability . . . . . . . . . . . . . . . . 276 D.1.7. Time of Availability . . . . . . . . . . . . . . . . 277
D.1.8. Connection Information . . . . . . . . . . . . . . . 276 D.1.8. Connection Information . . . . . . . . . . . . . . . 277
D.1.9. Message Body Tag . . . . . . . . . . . . . . . . . . 277 D.1.9. Message Body Tag . . . . . . . . . . . . . . . . . . 278
D.2. Aggregate Control Not Available . . . . . . . . . . . . 277 D.2. Aggregate Control Not Available . . . . . . . . . . . . 278
D.3. Aggregate Control Available . . . . . . . . . . . . . . 278 D.3. Aggregate Control Available . . . . . . . . . . . . . . 279
D.4. Grouping of Media Lines in SDP . . . . . . . . . . . . . 279 D.4. Grouping of Media Lines in SDP . . . . . . . . . . . . . 280
D.5. RTSP external SDP delivery . . . . . . . . . . . . . . . 279 D.5. RTSP external SDP delivery . . . . . . . . . . . . . . . 280
Appendix E. RTSP Use Cases . . . . . . . . . . . . . . . . . . . 280 Appendix E. RTSP Use Cases . . . . . . . . . . . . . . . . . . . 281
E.1. On-demand Playback of Stored Content . . . . . . . . . . 280 E.1. On-demand Playback of Stored Content . . . . . . . . . . 281
E.2. Unicast Distribution of Live Content . . . . . . . . . . 281 E.2. Unicast Distribution of Live Content . . . . . . . . . . 282
E.3. On-demand Playback using Multicast . . . . . . . . . . . 282 E.3. On-demand Playback using Multicast . . . . . . . . . . . 283
E.4. Inviting an RTSP server into a conference . . . . . . . 282 E.4. Inviting an RTSP server into a conference . . . . . . . 283
E.5. Live Content using Multicast . . . . . . . . . . . . . . 283 E.5. Live Content using Multicast . . . . . . . . . . . . . . 284
Appendix F. Text format for Parameters . . . . . . . . . . . . . 285 Appendix F. Text format for Parameters . . . . . . . . . . . . . 286
Appendix G. Requirements for Unreliable Transport of RTSP . . . 286 Appendix G. Requirements for Unreliable Transport of RTSP . . . 287
Appendix H. Backwards Compatibility Considerations . . . . . . . 288 Appendix H. Backwards Compatibility Considerations . . . . . . . 289
H.1. Play Request in Play State . . . . . . . . . . . . . . . 288 H.1. Play Request in Play State . . . . . . . . . . . . . . . 289
H.2. Using Persistent Connections . . . . . . . . . . . . . . 288 H.2. Using Persistent Connections . . . . . . . . . . . . . . 289
Appendix I. Changes . . . . . . . . . . . . . . . . . . . . . . 289 Appendix I. Changes . . . . . . . . . . . . . . . . . . . . . . 290
I.1. Brief Overview . . . . . . . . . . . . . . . . . . . . . 289 I.1. Brief Overview . . . . . . . . . . . . . . . . . . . . . 290
I.2. Detailed List of Changes . . . . . . . . . . . . . . . . 290 I.2. Detailed List of Changes . . . . . . . . . . . . . . . . 291
Appendix J. Acknowledgements . . . . . . . . . . . . . . . . . . 297 Appendix J. Acknowledgements . . . . . . . . . . . . . . . . . . 298
J.1. Contributors . . . . . . . . . . . . . . . . . . . . . . 297 J.1. Contributors . . . . . . . . . . . . . . . . . . . . . . 298
Appendix K. RFC Editor Consideration . . . . . . . . . . . . . . 299 Appendix K. RFC Editor Consideration . . . . . . . . . . . . . . 300
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 300 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 301
1. Introduction 1. Introduction
This memo defines version 2.0 of the Real Time Streaming Protocol This memo defines version 2.0 of the Real Time Streaming Protocol
(RTSP 2.0). RTSP 2.0 is an application-level protocol for setup and (RTSP 2.0). RTSP 2.0 is an application-level protocol for setup and
control over the delivery of data with real-time properties, control over the delivery of data with real-time properties,
typically streaming media. Streaming media is, for instance, video typically streaming media. Streaming media is, for instance, video
on demand or audio live streaming. Put simply, RTSP acts as a on demand or audio live streaming. Put simply, RTSP acts as a
"network remote control" for multimedia servers, similar to the "network remote control" for multimedia servers, similar to the
remote control for a DVD player. remote control for a DVD player.
skipping to change at page 181, line 14 skipping to change at page 181, line 14
20. Syntax 20. Syntax
The RTSP syntax is described in an Augmented Backus-Naur Form (ABNF) The RTSP syntax is described in an Augmented Backus-Naur Form (ABNF)
as defined in RFC 5234 [RFC5234]. It uses the basic definitions as defined in RFC 5234 [RFC5234]. It uses the basic definitions
present in RFC 5234. present in RFC 5234.
Please note that ABNF strings, e.g. "Accept", are case insensitive Please note that ABNF strings, e.g. "Accept", are case insensitive
as specified in section 2.3 of RFC 5234. as specified in section 2.3 of RFC 5234.
The RTSP syntax makes use of the ISO 10646 character set in UTF-8
encoding RFC 3629 [RFC3629].
20.1. Base Syntax 20.1. Base Syntax
RTSP header values can be folded onto multiple lines if the RTSP header values can be folded onto multiple lines if the
continuation line begins with a space or horizontal tab. All linear continuation line begins with a space or horizontal tab. All linear
white space, including folding, has the same semantics as SP. A white space, including folding, has the same semantics as SP. A
recipient MAY replace any linear white space with a single SP before recipient MAY replace any linear white space with a single SP before
interpreting the field value or forwarding the message downstream. interpreting the field value or forwarding the message downstream.
This is intended to behave exactly as HTTP/1.1 as described in RFC This is intended to behave exactly as HTTP/1.1 as described in RFC
2616 [RFC2616]. The SWS construct is used when linear white space is 2616 [RFC2616]. The SWS construct is used when linear white space is
optional, generally between tokens and separators. optional, generally between tokens and separators.
skipping to change at page 181, line 42 skipping to change at page 181, line 45
UPALPHA = %x41-5A ; any US-ASCII uppercase letter "A".."Z" UPALPHA = %x41-5A ; any US-ASCII uppercase letter "A".."Z"
LOALPHA = %x61-7A ;any US-ASCII lowercase letter "a".."z" LOALPHA = %x61-7A ;any US-ASCII lowercase letter "a".."z"
ALPHA = UPALPHA / LOALPHA ALPHA = UPALPHA / LOALPHA
DIGIT = %x30-39 ; any US-ASCII digit "0".."9" DIGIT = %x30-39 ; any US-ASCII digit "0".."9"
CTL = %x00-1F / %x7F ; any US-ASCII control character CTL = %x00-1F / %x7F ; any US-ASCII control character
; (octets 0 - 31) and DEL (127) ; (octets 0 - 31) and DEL (127)
CR = %x0D ; US-ASCII CR, carriage return (13) CR = %x0D ; US-ASCII CR, carriage return (13)
LF = %x0A ; US-ASCII LF, linefeed (10) LF = %x0A ; US-ASCII LF, linefeed (10)
SP = %x20 ; US-ASCII SP, space (32) SP = %x20 ; US-ASCII SP, space (32)
HT = %x09 ; US-ASCII HT, horizontal-tab (9) HT = %x09 ; US-ASCII HT, horizontal-tab (9)
DQ = %x22 ; US-ASCII double-quote mark (34)
BACKSLASH = %x5C ; US-ASCII backslash (92) BACKSLASH = %x5C ; US-ASCII backslash (92)
CRLF = CR LF CRLF = CR LF
LWS = [CRLF] 1*( SP / HT ) ; Line-breaking White Space LWS = [CRLF] 1*( SP / HT ) ; Line-breaking White Space
SWS = [LWS] ; Separating White Space SWS = [LWS] ; Separating White Space
HCOLON = *( SP / HT ) ":" SWS HCOLON = *( SP / HT ) ":" SWS
TEXT = %x20-7E / %x80-FF ; any OCTET except CTLs TEXT = %x20-7E / %x80-FF ; any OCTET except CTLs
tspecials = "(" / ")" / "<" / ">" / "@" tspecials = "(" / ")" / "<" / ">" / "@"
/ "," / ";" / ":" / BACKSLASH / DQ / "," / ";" / ":" / BACKSLASH / DQUOTE
/ "/" / "[" / "]" / "?" / "=" / "/" / "[" / "]" / "?" / "="
/ "{" / "}" / SP / HT / "{" / "}" / SP / HT
token = 1*(%x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 token = 1*(%x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39
/ %x41-5A / %x5E-7A / %x7C / %x7E) / %x41-5A / %x5E-7A / %x7C / %x7E)
; 1*<any CHAR except CTLs or tspecials> ; 1*<any CHAR except CTLs or tspecials>
quoted-string = ( DQ *qdtext DQ ) quoted-string = ( DQUOTE *qdtext DQUOTE )
qdtext = %x20-21 / %x23-7E / %x80-FF / UTF8-NONASCII qdtext = %x20-21 / %x23-5B / %x5D-7E / quoted-pair
; any UTF-8 TEXT except <"> / UTF8-NONASCII
quoted-pair = BACKSLASH CHAR ; No DQUOTE and no "\"
quoted-pair = "\\" / ( "\" DQUOTE )
ctext = %x20-27 / %x2A-7E ctext = %x20-27 / %x2A-7E
/ %x80-FF ; any OCTET except CTLs, "(" and ")" / %x80-FF ; any OCTET except CTLs, "(" and ")"
generic-param = token [ EQUAL gen-value ] generic-param = token [ EQUAL gen-value ]
gen-value = token / host / quoted-string gen-value = token / host / quoted-string
safe = "$" / "-" / "_" / "." / "+" safe = "$" / "-" / "_" / "." / "+"
extra = "!" / "*" / "'" / "(" / ")" / "," extra = "!" / "*" / "'" / "(" / ")" / ","
rtsp-extra = "!" / "*" / "'" / "(" / ")" rtsp-extra = "!" / "*" / "'" / "(" / ")"
HEX = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" HEX = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
skipping to change at page 183, line 12 skipping to change at page 183, line 12
base64-pad = (2base64-char "==") / (3base64-char "=") base64-pad = (2base64-char "==") / (3base64-char "=")
base64-char = ALPHA / DIGIT / "+" / "/" base64-char = ALPHA / DIGIT / "+" / "/"
SLASH = SWS "/" SWS ; slash SLASH = SWS "/" SWS ; slash
EQUAL = SWS "=" SWS ; equal EQUAL = SWS "=" SWS ; equal
LPAREN = SWS "(" SWS ; left parenthesis LPAREN = SWS "(" SWS ; left parenthesis
RPAREN = SWS ")" SWS ; right parenthesis RPAREN = SWS ")" SWS ; right parenthesis
COMMA = SWS "," SWS ; comma COMMA = SWS "," SWS ; comma
SEMI = SWS ";" SWS ; semicolon SEMI = SWS ";" SWS ; semicolon
COLON = SWS ":" SWS ; colon COLON = SWS ":" SWS ; colon
MINUS = SWS "-" SWS ; minus/dash MINUS = SWS "-" SWS ; minus/dash
LDQUOT = SWS DQ ; open double quotation mark LDQUOT = SWS DQUOTE ; open double quotation mark
RDQUOT = DQ SWS ; close double quotation mark RDQUOT = DQUOTE SWS ; close double quotation mark
RAQUOT = ">" SWS ; right angle quote RAQUOT = ">" SWS ; right angle quote
LAQUOT = SWS "<" ; left angle quote LAQUOT = SWS "<" ; left angle quote
TEXT-UTF8char = %x21-7E / UTF8-NONASCII TEXT-UTF8char = %x21-7E / UTF8-NONASCII
UTF8-NONASCII = %xC0-DF 1UTF8-CONT UTF8-NONASCII = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
/ %xE0-EF 2UTF8-CONT
/ %xF0-F7 3UTF8-CONT
/ %xF8-FB 4UTF8-CONT
/ %xFC-FD 5UTF8-CONT
UTF8-CONT = %x80-BF UTF8-CONT = %x80-BF
POS-FLOAT = 1*12DIGIT ["." 1*9DIGIT] POS-FLOAT = 1*12DIGIT ["." 1*9DIGIT]
FLOAT = ["-"] POS-FLOAT FLOAT = ["-"] POS-FLOAT
20.2. RTSP Protocol Definition 20.2. RTSP Protocol Definition
20.2.1. Generic Protocol elements 20.2.1. Generic Protocol elements
RTSP-IRI = schemes ":" IRI-rest RTSP-IRI = schemes ":" IRI-rest
IRI-rest = ihier-part [ "?" iquery ] [ "#" ifragment ] IRI-rest = ihier-part [ "?" iquery ]
ihier-part = "//" iauthority ipath-abempty ihier-part = "//" iauthority ipath-abempty
RTSP-IRI-ref = RTSP-IRI / irelative-ref RTSP-IRI-ref = RTSP-IRI / irelative-ref
irelative-ref = irelative-part [ "?" iquery ] [ "#" ifragment ] irelative-ref = irelative-part [ "?" iquery ]
irelative-part = "//" iauthority ipath-abempty irelative-part = "//" iauthority ipath-abempty
/ ipath-absolute / ipath-absolute
/ ipath-noscheme / ipath-noscheme
/ ipath-empty / ipath-empty
iauthority = < As defined in RFC 3987> iauthority = < As defined in RFC 3987>
ipath = ipath-abempty ; begins with "/" or is empty ipath = ipath-abempty ; begins with "/" or is empty
/ ipath-absolute ; begins with "/" but not "//" / ipath-absolute ; begins with "/" but not "//"
/ ipath-noscheme ; begins with a non-colon segment / ipath-noscheme ; begins with a non-colon segment
/ ipath-rootless ; begins with a segment / ipath-rootless ; begins with a segment
skipping to change at page 184, line 38 skipping to change at page 184, line 38
isegment-nz = 1*ipchar [";" *ipchar] isegment-nz = 1*ipchar [";" *ipchar]
/ ";" *ipchar / ";" *ipchar
isegment-nz-nc = (1*ipchar-nc [";" *ipchar-nc]) isegment-nz-nc = (1*ipchar-nc [";" *ipchar-nc])
/ ";" *ipchar-nc / ";" *ipchar-nc
; non-zero-length segment without any colon ":" ; non-zero-length segment without any colon ":"
ipchar = iunreserved / pct-encoded / sub-delims / ":" / "@" ipchar = iunreserved / pct-encoded / sub-delims / ":" / "@"
ipchar-nc = iunreserved / pct-encoded / sub-delims / "@" ipchar-nc = iunreserved / pct-encoded / sub-delims / "@"
iquery = < As defined in RFC 3987> iquery = < As defined in RFC 3987>
ifragment = < As defined in RFC 3987>
iunreserved = < As defined in RFC 3987> iunreserved = < As defined in RFC 3987>
pct-encoded = < As defined in RFC 3987> pct-encoded = < As defined in RFC 3987>
RTSP-URI = schemes ":" URI-rest RTSP-URI = schemes ":" URI-rest
RTSP-REQ-URI = schemes ":" URI-req-rest RTSP-REQ-URI = schemes ":" URI-req-rest
RTSP-URI-Ref = RTSP-URI / RTSP-Relative RTSP-URI-Ref = RTSP-URI / RTSP-Relative
RTSP-REQ-Ref = RTSP-REQ-URI / RTSP-REQ-Rel RTSP-REQ-Ref = RTSP-REQ-URI / RTSP-REQ-Rel
schemes = "rtsp" / "rtsps" / scheme schemes = "rtsp" / "rtsps" / scheme
scheme = < As defined in RFC 3986> scheme = < As defined in RFC 3986>
URI-rest = hier-part [ "?" query ] [ "#" fragment ] URI-rest = hier-part [ "?" query ]
URI-req-rest = hier-part [ "?" query ] URI-req-rest = hier-part [ "?" query ]
; Note fragment part not allowed in requests ; Note fragment part not allowed in requests
hier-part = "//" authority path-abempty hier-part = "//" authority path-abempty
RTSP-Relative = relative-part [ "?" query ] [ "#" fragment ] RTSP-Relative = relative-part [ "?" query ]
RTSP-REQ-Rel = relative-part [ "?" query ] RTSP-REQ-Rel = relative-part [ "?" query ]
relative-part = "//" authority path-abempty relative-part = "//" authority path-abempty
/ path-absolute / path-absolute
/ path-noscheme / path-noscheme
/ path-empty / path-empty
authority = < As defined in RFC 3986> authority = < As defined in RFC 3986>
query = < As defined in RFC 3986> query = < As defined in RFC 3986>
fragment = < As defined in RFC 3986>
path = path-abempty ; begins with "/" or is empty path = path-abempty ; begins with "/" or is empty
/ path-absolute ; begins with "/" but not "//" / path-absolute ; begins with "/" but not "//"
/ path-noscheme ; begins with a non-colon segment / path-noscheme ; begins with a non-colon segment
/ path-rootless ; begins with a segment / path-rootless ; begins with a segment
/ path-empty ; zero characters / path-empty ; zero characters
path-abempty = *( "/" segment ) path-abempty = *( "/" segment )
path-absolute = "/" [ segment-nz *( "/" segment ) ] path-absolute = "/" [ segment-nz *( "/" segment ) ]
path-noscheme = segment-nz-nc *( "/" segment ) path-noscheme = segment-nz-nc *( "/" segment )
skipping to change at page 191, line 7 skipping to change at page 191, line 7
/ ( "1" [ "." *3("0") ] ) / ( "1" [ "." *3("0") ] )
Accept-Credentials = "Accept-Credentials" HCOLON cred-decision Accept-Credentials = "Accept-Credentials" HCOLON cred-decision
cred-decision = ("User" [LWS cred-info]) cred-decision = ("User" [LWS cred-info])
/ "Proxy" / "Proxy"
/ "Any" / "Any"
/ (token [LWS 1*header-value]) / (token [LWS 1*header-value])
; For future extensions ; For future extensions
cred-info = cred-info-data *(COMMA cred-info-data) cred-info = cred-info-data *(COMMA cred-info-data)
cred-info-data = DQ RTSP-REQ-URI DQ SEMI hash-alg SEMI base64 cred-info-data = DQUOTE RTSP-REQ-URI DQUOTE SEMI hash-alg
SEMI base64
hash-alg = "sha-256" / extension-alg hash-alg = "sha-256" / extension-alg
extension-alg = token extension-alg = token
Accept-Encoding = "Accept-Encoding" HCOLON Accept-Encoding = "Accept-Encoding" HCOLON
[ encoding *(COMMA encoding) ] [ encoding *(COMMA encoding) ]
encoding = codings [SEMI accept-params] encoding = codings [SEMI accept-params]
codings = content-coding / "*" codings = content-coding / "*"
content-coding = token content-coding = token
Accept-Language = "Accept-Language" HCOLON Accept-Language = "Accept-Language" HCOLON
language *(COMMA language) language *(COMMA language)
language = language-range [SEMI accept-params] language = language-range [SEMI accept-params]
skipping to change at page 192, line 36 skipping to change at page 192, line 36
/ cache-extension / cache-extension
cache-extension = token [EQUAL (token / quoted-string)] cache-extension = token [EQUAL (token / quoted-string)]
delta-seconds = 1*19DIGIT delta-seconds = 1*19DIGIT
Connection = "Connection" HCOLON connection-token Connection = "Connection" HCOLON connection-token
*(COMMA connection-token) *(COMMA connection-token)
connection-token = "close" / token connection-token = "close" / token
Connection-Credentials = "Connection-Credentials" HCOLON cred-chain Connection-Credentials = "Connection-Credentials" HCOLON cred-chain
cred-chain = DQ RTSP-REQ-URI DQ SEMI base64 cred-chain = DQUOTE RTSP-REQ-URI DQUOTE SEMI base64
Content-Base = "Content-Base" HCOLON RTSP-URI Content-Base = "Content-Base" HCOLON RTSP-URI
Content-Encoding = "Content-Encoding" HCOLON Content-Encoding = "Content-Encoding" HCOLON
content-coding *(COMMA content-coding) content-coding *(COMMA content-coding)
Content-Language = "Content-Language" HCOLON Content-Language = "Content-Language" HCOLON
language-tag *(COMMA language-tag) language-tag *(COMMA language-tag)
Content-Length = "Content-Length" HCOLON 1*19DIGIT Content-Length = "Content-Length" HCOLON 1*19DIGIT
Content-Location = "Content-Location" HCOLON RTSP-REQ-Ref Content-Location = "Content-Location" HCOLON RTSP-REQ-Ref
Content-Type = "Content-Type" HCOLON media-type Content-Type = "Content-Type" HCOLON media-type
media-type = m-type SLASH m-subtype *(SEMI m-parameter) media-type = m-type SLASH m-subtype *(SEMI m-parameter)
skipping to change at page 194, line 11 skipping to change at page 194, line 11
/ "No-Seeking" / "No-Seeking"
/ "Immutable" / "Immutable"
/ "Dynamic" / "Dynamic"
/ "Time-Progressing" / "Time-Progressing"
/ "Unlimited" / "Unlimited"
/ ("Time-Limited" EQUAL utc-time) / ("Time-Limited" EQUAL utc-time)
/ ("Time-Duration" EQUAL POS-FLOAT) / ("Time-Duration" EQUAL POS-FLOAT)
/ ("Scales" EQUAL scale-value-list) / ("Scales" EQUAL scale-value-list)
/ media-prop-ext / media-prop-ext
media-prop-ext = token [EQUAL (1*rtsp-unreserved / quoted-string)] media-prop-ext = token [EQUAL (1*rtsp-unreserved / quoted-string)]
scale-value-list = DQ scale-entry *(COMMA scale-entry) DQ scale-value-list = DQUOTE scale-entry *(COMMA scale-entry) DQUOTE
scale-entry = scale-value / (scale-value COLON scale-value) scale-entry = scale-value / (scale-value COLON scale-value)
scale-value = FLOAT scale-value = FLOAT
Media-Range = "Media-Range" HCOLON [ranges-list] Media-Range = "Media-Range" HCOLON [ranges-list]
ranges-list = ranges-spec *(COMMA ranges-spec) ranges-list = ranges-spec *(COMMA ranges-spec)
MTag = "MTag" HCOLON message-tag MTag = "MTag" HCOLON message-tag
Notify-Reason = "Notify-Reason" HCOLON Notify-Reas-val Notify-Reason = "Notify-Reason" HCOLON Notify-Reas-val
Notify-Reas-val = "end-of-stream" Notify-Reas-val = "end-of-stream"
/ "media-properties-update" / "media-properties-update"
/ "scale-change" / "scale-change"
/ Notify-Reason-extension / Notify-Reason-extension
skipping to change at page 195, line 44 skipping to change at page 195, line 44
ranges-spec = npt-range / utc-range / smpte-range ranges-spec = npt-range / utc-range / smpte-range
/ range-ext / range-ext
range-ext = extension-format ["=" range-value] range-ext = extension-format ["=" range-value]
range-value = 1*(rtsp-unreserved / quoted-string / ":" ) range-value = 1*(rtsp-unreserved / quoted-string / ":" )
Referrer = "Referrer" HCOLON (absolute-URI / RTSP-URI-Ref) Referrer = "Referrer" HCOLON (absolute-URI / RTSP-URI-Ref)
Request-Status = "Request-Status" HCOLON req-status-info Request-Status = "Request-Status" HCOLON req-status-info
req-status-info = cseq-info LWS status-info LWS reason-info req-status-info = cseq-info LWS status-info LWS reason-info
cseq-info = "cseq" EQUAL cseq-nr cseq-info = "cseq" EQUAL cseq-nr
status-info = "status" EQUAL Status-Code status-info = "status" EQUAL Status-Code
reason-info = "reason" EQUAL DQ Reason-Phrase DQ reason-info = "reason" EQUAL DQUOTE Reason-Phrase DQUOTE
Require = "Require" HCOLON feature-tag-list Require = "Require" HCOLON feature-tag-list
RTP-Info = "RTP-Info" HCOLON [rtsp-info-spec RTP-Info = "RTP-Info" HCOLON [rtsp-info-spec
*(COMMA rtsp-info-spec)] *(COMMA rtsp-info-spec)]
rtsp-info-spec = stream-url 1*ssrc-parameter rtsp-info-spec = stream-url 1*ssrc-parameter
stream-url = "url" EQUAL DQ RTSP-REQ-Ref DQ stream-url = "url" EQUAL DQUOTE RTSP-REQ-Ref DQUOTE
ssrc-parameter = LWS "ssrc" EQUAL ssrc HCOLON ssrc-parameter = LWS "ssrc" EQUAL ssrc HCOLON
ri-parameter *(SEMI ri-parameter) ri-parameter *(SEMI ri-parameter)
ri-parameter = ("seq" EQUAL 1*5DIGIT) ri-parameter = ("seq" EQUAL 1*5DIGIT)
/ ("rtptime" EQUAL 1*10DIGIT) / ("rtptime" EQUAL 1*10DIGIT)
/ generic-param / generic-param
Retry-After = "Retry-After" HCOLON ( RTSP-date / delta-seconds ) Retry-After = "Retry-After" HCOLON ( RTSP-date / delta-seconds )
Scale = "Scale" HCOLON scale-value Scale = "Scale" HCOLON scale-value
Seek-Style = "Seek-Style" HCOLON Seek-S-values Seek-Style = "Seek-Style" HCOLON Seek-S-values
Seek-S-values = "RAP" Seek-S-values = "RAP"
skipping to change at page 198, line 29 skipping to change at page 198, line 29
/ (SEMI trn-param-ext) / (SEMI trn-param-ext)
contrans-setup = "active" / "passive" / "actpass" contrans-setup = "active" / "passive" / "actpass"
contrans-con = "new" / "existing" contrans-con = "new" / "existing"
trn-param-ext = par-name [EQUAL trn-par-value] trn-param-ext = par-name [EQUAL trn-par-value]
par-name = token par-name = token
trn-par-value = *(rtsp-unreserved / quoted-string) trn-par-value = *(rtsp-unreserved / quoted-string)
ttl = 1*3DIGIT ; 0 to 255 ttl = 1*3DIGIT ; 0 to 255
ssrc = 8HEX ssrc = 8HEX
channel = 1*3DIGIT ; 0 to 255 channel = 1*3DIGIT ; 0 to 255
MIKEY-Value = base64 MIKEY-Value = base64
mode-spec = ( DQ mode *(COMMA mode) DQ ) mode-spec = ( DQUOTE mode *(COMMA mode) DQUOTE )
mode = "PLAY" / token mode = "PLAY" / token
addr-list = quoted-addr *(SLASH quoted-addr) addr-list = quoted-addr *(SLASH quoted-addr)
quoted-addr = DQ (host-port / extension-addr) DQ quoted-addr = DQUOTE (host-port / extension-addr) DQUOTE
host-port = ( host [":" port] ) host-port = ( host [":" port] )
/ ( ":" port ) / ( ":" port )
extension-addr = 1*qdtext extension-addr = 1*qdtext
host = < As defined in RFC 3986> host = < As defined in RFC 3986>
port = < As defined in RFC 3986> port = < As defined in RFC 3986>
Unsupported = "Unsupported" HCOLON feature-tag-list Unsupported = "Unsupported" HCOLON feature-tag-list
User-Agent = "User-Agent" HCOLON ( product / comment ) User-Agent = "User-Agent" HCOLON ( product / comment )
*(LWS (product / comment)) *(LWS (product / comment))
skipping to change at page 223, line 5 skipping to change at page 223, line 5
GET_PARAMETER, OPTIONS, PLAY, PLAY_NOTIFY, PAUSE, SETUP, GET_PARAMETER, OPTIONS, PLAY, PLAY_NOTIFY, PAUSE, SETUP,
SET_PARAMETER, and TEARDOWN. SET_PARAMETER, and TEARDOWN.
Encoding considerations: IRIs in this scheme are defined and needs Encoding considerations: IRIs in this scheme are defined and needs
to be encoded as RTSP URIs when used within the RTSP protocol. to be encoded as RTSP URIs when used within the RTSP protocol.
That encoding is done according to RFC 3987. That encoding is done according to RFC 3987.
Applications/protocols that use this URI scheme name: RTSP 1.0 (RFC Applications/protocols that use this URI scheme name: RTSP 1.0 (RFC
2326), RTSP 2.0 (RFC XXXX) 2326), RTSP 2.0 (RFC XXXX)
Interoperability considerations: The change in URI syntax performed Interoperability considerations: The extensions in the URI syntax
between RTSP 1.0 and 2.0 can create interoperability issues. performed between RTSP 1.0 and 2.0 can create interoperability
issues. The changes are:
Support for IPV6 literal in host part and future IP
literals through RFC 3986 defined mechanism.
A new relative format to use in the RTSP protocol
elements that is not required to start with "/".
Security considerations: All the security threats identified in Security considerations: All the security threats identified in
Section 7 of RFC 3986 applies also to this scheme. They need Section 7 of RFC 3986 applies also to this scheme. They need
to be reviewed and considered in any implementation utilizing to be reviewed and considered in any implementation utilizing
this scheme. this scheme.
Contact: Magnus Westerlund, magnus.westerlund@ericsson.com Contact: Magnus Westerlund, magnus.westerlund@ericsson.com
Author/Change controller: IETF Author/Change controller: IETF
skipping to change at page 223, line 43 skipping to change at page 224, line 5
GET_PARAMETER, OPTIONS, PLAY, PLAY_NOTIFY, PAUSE, SETUP, GET_PARAMETER, OPTIONS, PLAY, PLAY_NOTIFY, PAUSE, SETUP,
SET_PARAMETER, and TEARDOWN. SET_PARAMETER, and TEARDOWN.
Encoding considerations: IRIs in this scheme are defined and needs Encoding considerations: IRIs in this scheme are defined and needs
to be encoded as RTSP URIs when used within the RTSP protocol. to be encoded as RTSP URIs when used within the RTSP protocol.
That encoding is done according to RFC 3987. That encoding is done according to RFC 3987.
Applications/protocols that use this URI scheme name: RTSP 1.0 (RFC Applications/protocols that use this URI scheme name: RTSP 1.0 (RFC
2326), RTSP 2.0 (RFC XXXX) 2326), RTSP 2.0 (RFC XXXX)
Interoperability considerations: The change in URI syntax performed Interoperability considerations: The extensions in the URI syntax
between RTSP 1.0 and 2.0 can create interoperability issues. performed between RTSP 1.0 and 2.0 can create interoperability
issues. The changes are:
Support for IPV6 literal in host part and future IP
literals through RFC 3986 defined mechanism.
A new relative format to use in the RTSP protocol
elements that is not required to start with "/".
Security considerations: All the security threats identified in Security considerations: All the security threats identified in
Section 7 of RFC 3986 applies also to this scheme. They need Section 7 of RFC 3986 applies also to this scheme. They need
to be reviewed and considered in any implementation utilizing to be reviewed and considered in any implementation utilizing
this scheme. this scheme.
Contact: Magnus Westerlund, magnus.westerlund@ericsson.com Contact: Magnus Westerlund, magnus.westerlund@ericsson.com
Author/Change controller: IETF Author/Change controller: IETF
skipping to change at page 225, line 42 skipping to change at page 226, line 13
Values: See ABNF definition Values: See ABNF definition
22.16. Media Type Registration for text/parameters 22.16. Media Type Registration for text/parameters
Type name: text Type name: text
Subtype name: parameters Subtype name: parameters
Required parameters: Required parameters:
Optional parameters: Optional parameters: charset: The charset parameter is applicable to
the encoding of the parameter values. The default charset is
UTF-8, if the 'charset' parameter is not present.
Encoding considerations: Encoding considerations: 8bit
Security considerations: This format may carry any type of Security considerations: This format may carry any type of
parameters. Some can have security requirements, like privacy, parameters. Some can have security requirements, like privacy,
confidentiality or integrity requirements. The format has no confidentiality or integrity requirements. The format has no
built in security protection. For the usage it was defined the built in security protection. For the usage it was defined the
transport can be protected between server and client using TLS. transport can be protected between server and client using TLS.
However, care must be take to consider if also the proxies are However, care must be take to consider if also the proxies are
trusted with the parameters in case hop-by-hop security is used. trusted with the parameters in case hop-by-hop security is used.
If stored as file in file system the necessary precautions needs If stored as file in file system the necessary precautions needs
to be taken in relation to the parameters requirements including to be taken in relation to the parameters requirements including
skipping to change at page 229, line 42 skipping to change at page 230, line 42
end-to-end Packet-switched Streaming Service (PSS); end-to-end Packet-switched Streaming Service (PSS);
Protocols and codecs; Technical Specification 26.234", Protocols and codecs; Technical Specification 26.234",
December 2002. December 2002.
23.2. Informative References 23.2. Informative References
[I-D.ietf-mmusic-rtsp-nat] [I-D.ietf-mmusic-rtsp-nat]
Goldberg, J., Westerlund, M., and T. Zeng, "A Network Goldberg, J., Westerlund, M., and T. Zeng, "A Network
Address Translator (NAT) Traversal mechanism for media Address Translator (NAT) Traversal mechanism for media
controlled by Real-Time Streaming Protocol (RTSP)", controlled by Real-Time Streaming Protocol (RTSP)",
draft-ietf-mmusic-rtsp-nat-11 (work in progress), draft-ietf-mmusic-rtsp-nat-12 (work in progress),
October 2011. May 2012.
[ISO.13818-6.1995] [ISO.13818-6.1995]
International Organization for Standardization, International Organization for Standardization,
"Information technology - Generic coding of moving "Information technology - Generic coding of moving
pictures and associated audio information - part 6: pictures and associated audio information - part 6:
Extension for digital storage media and control", Extension for digital storage media and control",
ISO Draft Standard 13818-6, November 1995. ISO Draft Standard 13818-6, November 1995.
[ISO.8601.2000] [ISO.8601.2000]
International Organization for Standardization, "Data International Organization for Standardization, "Data
skipping to change at page 294, line 42 skipping to change at page 295, line 42
Section 20. Section 20.
* The ABNF for the User-Agent and Server headers have been * The ABNF for the User-Agent and Server headers have been
corrected. corrected.
* Some definitions in the introduction regarding the RTSP session * Some definitions in the introduction regarding the RTSP session
have been changed. have been changed.
* The protocol has been made fully IPv6 capable. * The protocol has been made fully IPv6 capable.
* Added a fragment part to the RTSP URI. This seemed to be
indicated by the note below the definition, however, it was not
part of the ABNF.
* The CHAR rule has been changed to exclude NULL. * The CHAR rule has been changed to exclude NULL.
o The Status codes have been changed in the following way: o The Status codes have been changed in the following way:
* The use of status code 303 "See Other" has been deprecated as * The use of status code 303 "See Other" has been deprecated as
it does not make sense to use in RTSP. it does not make sense to use in RTSP.
* When sending response 451 and 458 the response body should * When sending response 451 and 458 the response body should
contain the offending parameters. contain the offending parameters.
 End of changes. 31 change blocks. 
112 lines changed or deleted 122 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/