RTSPRTP 媒体传输和控制协议
1 前言
本文档主要描述了NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议.
本协议主要基于标准的IETE 的RTSP/RTP 以及相关协议, 并针对具体应用定义了部分扩展.
本协议只是当前实现的总结和整理, 具体的协议细节以实际实现为准
2 定义
RTSP实现流协议SDP会话描述协议RTP实时传输协议
H.264H.264 视频编码标准
3 RTSP 命令
3.1 Request 语法
语法:
RTSP 的语法和HTTP 的语法基本相同, 具体如下。COMMAND rtsp_URL RTSP/1.0<CRLF> Headerfield1: val1<CRLF>
Headerfield2: val2<CRLF>
...
<CRLF>
[Body]
RTSP 消息行之间用回车换行(CRLF) 分隔. 一个空行表示消息头部分的结束。
3.1.1 RTSP 方法
COMMAND 表示RTSP 命令名称, 是DESCRIBE, SETUP, OPTIONS, PLAY, PAUSE, TEARDOWN 或
SET_PARAMETER 等的任意一个.
3.1.2 RTSP URL
完整语法如下:
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
of RFC 1123 \cite{rfc1123})
port = *DIGIT
如:
rtsp://<servername>/live.mp4[?<param>=<valu e>[&<param>=<value>...]]
<servername> 表示产品的主机名称或者IP 地址. 3.1.3 RTSP 版本
格式和HTTP 协议类似, 且RTSP 版本总是为
"RTSP/1.0"
3.1.4 RTSP 头字段
下面是所有命令都接受的头字段类型,一些命令接受或者必须用到一些附加的特别的头字段。头字段描述Authorization 客户端的认证信息.CSeq
请求序列号.Session
会话ID (返回自服务端的SETUP 应答).Content-Length 内容的长度.Content-Type
内容的媒体类型.User-Agent
关于创建这个请求的客户端的信息.Require
查询是否支持指定的选项,不支持的选项会在Unsupported 头中列出.3.2 Response 语法
语法:
RTSP/1.0 <Status Code> <Reason Phrase>
<CRLF>
Headerfield3: val3<CRLF>
Headerfield4: val4<CRLF>
...
<CRLF>
[Body]
应答的第一行包含了表示请求是否成功或者失败的状态码和原因短语. 在RFC 2326 有对状态码的详细描述.
标准的RTSP 应答状态码和原因短语:
”100” ; Continue (all 100 range)
“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
”350” ; Going Away
”351” ; Load Balancing
”400” ; Bad Request
”401” ; Unauthorized
”402” ; Payment Required
”403” ; Forbidden
”404” ; Not Found
”405” ; Method Not Allowed
”406” ; Not Acceptable
”407” ; Proxy Authentication Requ ired
”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” ; reserved
”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 aggr egate operation allowed ”461” ; Unsupported transport
”462” ; Destination unreachable