Internet DRAFT - draft-wei-mmusic-rtsp-bitrate-header
draft-wei-mmusic-rtsp-bitrate-header
MMUSIC WG Kylin Wei
Internet-Draft Huawei Technologies
Expires: December 12, 2006 June 12, 2006
Bitrate header in RTSP
draft-wei-mmusic-rtsp-bitrate-header-01
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 20, 2006.
Copyright Notice
Copyright (C) The Internet Society (2006).
Abstract
This document presents an integrated solution for multiple bitrates
by defining the Bitrate header in RTSP. A client can inquire bitrate
range of media source after a successful SETUP request by sending a
GET_PARAMETER request with the bitrate parameter to the RTSP server,
and then server responds with bitrate range parameter of media
source. According to bitrate range parameter value, the client MAY
apply for bandwidth reservation by RSVP (Resource Reservation
Protocol) [5] or apply for increasing access bandwidth. The client
MAY select a suitable bitrate to start with or change transport
bitrate during the playing by sending a PLAY request with the Bitrate
header.
Kylin Wei Expires: December 12, 2006 [Page 1]
Internet-Draft Bitrate header in RTSP June 12, 2006
Table of Contents
1. Introduction...................................................3
2. Terminology....................................................4
3. "Bitrate" header and "bitrate" parameter definitions...........5
4. The difference between "a=alt"
and "Bitrate" in media description..........................5
5. Use Cases......................................................7
5.1. Inquire bitrate range......................................7
5.2. Changing transport bitrate.................................8
5.2.1. Single media file......................................8
5.2.2. Multiple media files...................................9
6. Security Considerations.......................................10
7. IANA Considerations...........................................11
8. Acknowledges..................................................12
9. References....................................................10
9.1. Normative References......................................13
9.2. Informative References....................................13
Author's Address..................................................14
Intellectual Property and Copyright Statements....................15
Kylin Wei Expires: December 12, 2006 [Page 2]
Internet-Draft Bitrate header in RTSP June 12, 2006
1. Introduction
There are two obvious problems in QOS (Quality of Service) of video
on-demand now.
First, the network condition of the internet isn't reliable because
the bandwidth and the load of internet often change acutely. But the
transport bitrate of media source is constant. So it will affect the
quality of video on-demand such as delay and jitter.
Second, the actual access bandwidths of many subscribers who order
the same media program are different. Such as the access bandwidths
of some subscribers are tens of Mbps, and others may be hundreds of
Kbps. But media source only has one bitrate, so some users with
high access bandwidth can't get better video quality and some
users with very low access bandwidth have not enough bandwidth to
watch video. So it's necessary that media source can provide more
than one bitrate to adapt to complex network condition.
Media source has two methods to provide multiple bitrates.
First, the simplest way is that media server prepares several media
files for the same media program. The bitrates of these files are
different from each other. The server could redirect a client to a
corresponding media file (URI) according to the client's selection on
the bitrate.
Second, some scalable coding and multi-rate coding technologies are
presented. By using these two kinds of technologies, one media file
can provide multiple bitrates. As technology progresses, future
advanced video codec can provide a large number of bitrates within
one media file.
RTSP should provide a way that a client can inquire bitrate range of
media source and the client can change transport bitrate at any time.
This specification defines the Bitrate header to solve this problem.
If a client wants to inquire the bitrate range of media source, it
SHOULD send a GET_PARAMETER request with the bitrate parameter after
a success SETUP request unless the client does not plan to adjust
transport bitrate. When RTSP server receives this request, it will
respond bitrate range values in the bitrate parameter field.
Kylin Wei Expires: December 12, 2006 [Page 3]
Internet-Draft Bitrate header in RTSP June 12, 2006
After the client got the bitrate parameter value, it can take action
according to the bitrate parameter value. For example, bitrate
parameter is "512K, 1M, 2M", but access bandwidth of a subscriber
is 0.5Mbps, the subscriber could temporarily apply for more access
bandwidth in the service gateway from 0.5Mbps to 1Mbps or 2Mbps, and
original access bandwidth would be restored after two hours. This
action may be common use in the community video on-demand and IPTV.
If video on-demand occurs on the internet, to get a steady network
bandwidth, a subscriber can apply for bandwidth reservation by RSVP.
For instance, the bitrate parameter is "1M, 2M, 3M", and the
subscriber can apply for reserving 2Mbps bandwidth to specified
media stream. A user may also directly select a suitable bitrate to
start with according to his evaluation of current network
condition and access bandwidth. For instance, the user may select
2Mbps bitrate because subscriber access bandwidth is 2.5Mbps.
Other important use case is that a user can change transport bitrate
during the play. For example, a user has played a movie for ten
minutes, and he felt that the video starts to show slowly. He
thought that congestion may occur in current network, so he
selected a lower bitrate on his own initiative. Such as bitrate
parameter is "1M, 2M, 3M", he changed transport bitrate from 2Mbps
to 1Mbps.
2. Terminology
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 [1].
Kylin Wei Expires: December 12, 2006 [Page 4]
Internet-Draft Bitrate header in RTSP June 12, 2006
3. "Bitrate" header and "bitrate" parameter definitions
The bitrate parameter is used by a client to inquire bitrate range
of media source. A GET_PARAMETER request with the bitrate parameter
indicates that a client want to inquire bitrate range of media
source. The Bitrate header is used to change transport bitrate. A
PLAY request with the Bitrate header indicates that a client
want to change transport bitrate. Bitrate header filed value MUST be
one value of bitrate range of media source.
The bitrate parameter may be several separate values such as
"512K, 1M, 2M", and may also be a continuous range value such as
"512K-2.5M".
Syntax:
HCOLON, CRLF, COMMA and DIGIT are defined in rfc2326bis [2].
Bitrate header:
Bitrate = "Bitrate" HCOLON bitrate-value CRLF
bitrate parameter:
bitrate = "bitrate" HCOLON bitrate-sep / bitrate-con CRLF
bitrate-sep = bitrate-value *(COMMA bitrate-value)
bitrate-con = bitrate-value "-" bitrate-value
bitrate-value = (1*DIGIT "K") / (1*DIGIT [ "." 1*DIGIT] "M")
4. The difference between "a=alt" and "Bitrate" in media description
"a=alt" attribute had been defined in 3GPP TS 26.234 [6] used to
present some alternative bitrates and then client can use the URI to
indicate which alternative bitrate it wishes to start with.
Sometimes it will result in a large SDP body [4]. For example,
advanced video codec which can provide a large number of bitrates
within one media file will be presented. If a media file can present
hundreds or thousands of bitrates, by using "a=alt" attribute, server
must offer all these alternative bitrates and their private
description to the client. Then SDP which the client wishes to
receive will become very large and redundant.
A better plan is that the server should only offer the default
alternative bitrate within one media description in the DESCRIBE
Kylin Wei Expires: December 12, 2006 [Page 5]
Internet-Draft Bitrate header in RTSP June 12, 2006
response. The private description of other alternatives will be
offered when only this alternative is going to be used. A client
SHOULD inquire bitrate range after a successful SETUP request. The
server then respond with bitrate parameter value of the media file.
If the client wants to change transport bitrate, it will send a PLAY
request with Bitrate header field. Server then changes transport
bitrate as the client wanted and then appends necessary description
of this bitrate into the PLAY response.
Follow example is a simple contrast. Unnecessary details are omitted
for clarity in this example.
Using "a=alt" attribute
v=0
o=ericsson_user 1 1 IN IP4 130.240.188.69
s=A basic video presentation
c=IN IP4 0.0.0.0
b=AS:44
a=control:*
a=alt-group:BW:AS:16="3",44="4",104="5"
a=range:npt=0-150.2
t=0 0
m=video 0 RTP/AVP 98
b=AS:44
a=rtpmap:98 MP4V-ES/90000
a=control:trackID=4
a=fmtp:98 profile-level-id=8; config=01010000012000884006682C2090A21F
a=range:npt=0-150.2
a=X-initpredecbufperiod:98000
a=alt-default-id:4
a=alt:3:b=AS:16
a=alt:3:a=control:trackID=3
a=alt:3:a=X-initpredecbufperiod:48000
a=alt:5:b=AS:104
a=alt:5:a=control:trackID=5
a=alt:5:a=X-initpredecbufperiod:150000
Using Bitrate header
v=0
o=ericsson_user 1 1 IN IP4 130.240.188.69
s=A basic video presentation
c=IN IP4 0.0.0.0
b=AS:44
Kylin Wei Expires: December 12, 2006 [Page 6]
Internet-Draft Bitrate header in RTSP June 12, 2006
a=control:*
a=range:npt=0-150.2
t=0 0
m=video 0 RTP/AVP 98
b=AS:44
a=rtpmap:98 MP4V-ES/90000
a=control:trackID=4
a=fmtp:98 profile-level-id=8; config=01010000012000884006682C2090A21F
a=range:npt=0-150.2
a=X-initpredecbufperiod:98000
C->S SETUP rtsp://media.example.com/examples/3G_systems.3gp
/trackid=4
S->C 200 OK
C->S GET_PARAMATER rtsp://media.example.com/examples/3G_systems.3gp/
trackid=4
bitrate
S->C 200 OK
bitrate: 44K, 16K, 104K
C->S PLAY rtsp://media.example.com/examples/3G_systems.3gp/trackid=4
Bitrate: 104K
S->C 200 OK
Bitrate: 104K
x-initpredecbufperiod: 150000
5. Use Cases
5.1. Inquire bitrate range
After a successful SETUP request, a client SHOULD send a
GET_PARAMATER request with the bitrate parameter to inquire bitrate
range of media source unless the client does not plan to adjust
transport bitrate. If RTSP server doesn't support the bitrate
parameter, it MUST respond error 451(Parameter Not Understood) or
other error code. Otherwise it MUST respond 200 OK followed by
the bitrate parameter value.
Example:
C->S: GET_PARAMETER rtsp://example.com/movie/ring.avi RTSP/2.0
CSeq: 210
Kylin Wei Expires: December 12, 2006 [Page 7]
Internet-Draft Bitrate header in RTSP June 12, 2006
Content-Type: text/parameters
Session: mymovie
Content-Length: 9
bitrate
S->C: RTSP/2.0 200 OK
CSeq: 210
Session: mymovie
Content-Length: 27
Content-Type: text/parameters
bitrate: 512K, 1M, 2M, 3M
After the client got the bitrate parameter value, it MUST record
these values and show these values to the user.
5.2. Changing transport bitrate
After getting the bitrate parameter value, a user can change
transport bitrate at any time. The process of changing transport
bitrate of single media file is different from that of multiple
media files.
The Range header is RECOMMENDED to indicate time range of playing
program with modified transport bitrate. If a movie has been played
for a long time before changing transport bitrate, the client SHOULD
start playing from current time point with modified transport
bitrate.
5.2.1. Single media file
This kind of media file should be encoded by multi-rate coding
technology so that it has multiple bitrates. When RTSP server
received a client's PLAY request with the Bitrate header, it SHOULD
change transport bitrate according to the Bitrate header values. If
RTSP server doesn't support the Bitrate header, it MUST respond
error 456(Header Field Not Valid) or other error code.
If the request of changing transport bitrate can be implemented by
server, the private description of new transport bitrate SHOULD be
appended into the PLAY response to report to the client unless there
isn't necessary private description.
The following example will replay from the tenth second by 512Kbps
bitrate:
Kylin Wei Expires: December 12, 2006 [Page 8]
Internet-Draft Bitrate header in RTSP June 12, 2006
C->S: PLAY rtsp://example.com/movie/ring.avi RTSP/2.0
CSeq: 20
User-Agent: PhonyClient/1.2
Bitrate: 512K
Range: npt=10-
Session: mymovie
S->C: RTSP/2.0 200 OK
CSeq: 20
Server: PhonyServer/1.0
Date: 2 Feb 2006 18:00:00 GMT
Session: mymovie
Bitrate: 512K
Range: npt=0-5400
RTP-Info: url="rtsp://example.com/movie/ring.avi"
ssrc=0E756890:seq=7892;rtptime=78905432
5.2.2. Multiple media files
Sometimes there are multiple media files of the same program. They
have the same content but their bitrates are different. Such as
there are four media files (ring_1.avi, ring_2.avi, ring_3.avi,
ring_4.avi) for movie "Ring". Their bitrates are 4Mbps, 2Mbps, 1Mbps
and 512Kbps. To avoid a large SDP body, we SHOULD only offer the
default media file to a client such as ring_2.avi (2Mbps). RTSP
server MUST understand all these information in advance.
When a client requests changing transport bitrate, RTSP server
responds 200 OK and then redirects the client to a corresponding URI.
Example:
C->S: PLAY rtsp://example.com/movie/ring_2.avi RTSP/2.0
CSeq: 200
User-Agent: PhonyClient/1.2
Bitrate: 512K
Range: npt=10-
Session: mymovie
S->C: RTSP/2.0 200 OK
CSeq: 200
Server: PhonyServer/1.0
Date: 2 Feb 2007 18:00:00 GMT
Kylin Wei Expires: December 12, 2006 [Page 9]
Internet-Draft Bitrate header in RTSP June 12, 2006
Session: mymovie
Bitrate: 512K
Range: npt=0-5400
RTP-Info: url="rtsp://example.com/movie/ring_2.avi"
ssrc=0E756890:seq=7892;rtptime=78905432
S->C: REDIRECT rtsp://example.com/movie/ring_2.avi RTSP/2.0
CSeq: 201
Location: rtsp://example.com/movie/ring_4.avi
Range: npt=10- ;time=20060509T103205Z
Session: mymovie
C->S: RTSP/2.0 200 OK
CSeq: 201
6. Security Considerations
The same security considerations apply as for the base RTSP
specification, as described in [3].
Kylin Wei Expires: December 12, 2006 [Page 10]
Internet-Draft Bitrate header in RTSP June 12, 2006
7. IANA Considerations
It is request of IANA to register the "Bitrate" header in the RTSP
1.0 registry at:
http://www.iana.org/assignments/rtsp-parameters.
Contact name: kylin Wei (weiqikun@huawei.com).
Header Name: Bitrate
Purpose: See Section 3
Methods: PLAY Request and Response
Reference: Section 3
Values: See Reference
Kylin Wei Expires: December 12, 2006 [Page 11]
Internet-Draft Bitrate header in RTSP June 12, 2006
8. Acknowledges
Thanks Spencer Dawkins for providing his valuable advices for this
document. Thanks for the discussions from Jaehwan Kim, Colin Perkins
and Magnus Westerlund. Thanks Philippe Gentric for providing his
draft about stream-switching.
Kylin Wei Expires: December 12, 2006 [Page 12]
Internet-Draft Bitrate header in RTSP June 12, 2006
9. References
9.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119, March 1997.
[2] H. Schulzrinne, A. Rao, R. Lanphier, Magnus Westerlund,
A. Narasimhan, "Real Time Streaming Protocol 2.0 (RTSP)",
draft-ietf-mmusic-rfc2326bis-12, March 2006.
[3] H. Schulzrinne, A. Rao, R. Lanphier, "Real Time Streaming
Protocol (RTSP)", RFC 2326, April 1998.
[4] M. Handley, V. Jacobson, "SDP: Session Description Protocol",
RFC 2327, April 1998.
9.2. Informative References
[5] Braden, R., Zhang, L., Berson, S., Herzog, S. and S. Jamin,
"Resource ReSerVation protocol (RSVP) -- Version 1 Functional
Specification", RFC 2205, September 1997.
[6] 3GPP TS 26.234 "Transparent end-to-end Packet-switched
Streaming Service (PSS); Protocols and codecs" (Release 6)
version 6.7.0 (2006-03), 3rd Generation Partnership Project
(3GPP)
Kylin Wei Expires: December 12, 2006 [Page 13]
Internet-Draft Bitrate header in RTSP June 12, 2006
Author's Address
Kylin Wei
Huawei Technologies
NanJing Institute,Huawei Technologies Co.,Ltd.
Floor 10, HuiHong Mansion, No.91 BaiXia Rd.
NanJing, P.R. of China
Phone: +86 25 8456 5404
Email: weiqikun@huawei.com
URI: www.huawei.com
Kylin Wei Expires: December 12, 2006 [Page 14]
Internet-Draft Bitrate header in RTSP June 12, 2006
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2006). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Kylin Wei Expires: December 12, 2006 [Page 15]