基于RTSP RDT传输RM RMVB - GaryGaryGary
1 RTSP
首先要实现RTSP协议,RTSP协议较为简单,类似HTTP协议,主要的命令有
OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN,realplay播放器一般按顺序发送这几条命令与RTSP服务器交互。
Client Server
——–OPTIONS————à
<——OPTIONS RESP——–
——–DESCRIBE————à
<——DESCRIBE RESP——-
——–SETUP—————-à
<——SETUP RESP———–
——–PLAY——————à
<——PLAY RESP————-
——–TEAR DOWN———à
<——TEAR DOWN RESP—–
2 RDT
RDT是real公司专有的传输rm格式文件的协议,在RTSP SETUP命令中协商通过RDT传输的话,即开始用RDT,RDT可以over TCP或者UDP,格式也较为简单
Table A. RDT DATA PACKET (non-aggregated)
012 78 24 32 64 80
+++—-++—————+++—–+——-…+———–…+–…+
||| ||SeqNo |||Rule |Timestamp |Reliable SeqNo|Data |
+++—-++—————+++—–+——-…+———–…+–…+
^^^ ^^ ^^^
||| || |||
||| || ||ASM Rule
||| || |slow_data
||| || back_to_back_packet
||| ||
||| |RDT Sequence Number
||| is_reliable
||stream_id
|need_reliable (always true)
length_included_flag
——————————————————————————-
3 real challage between client and server
这个协议是real player与helix之间特殊的专有协议,在realplayer发出OPTION命令时,发出第一个ClientChallenge,32字节数,服务器在RESP中应回应发出RealChallenge1(32字节),然后realplayer在SETUP命令时应发出RealChallenge2,作为对RealChallenge1的回应,服务器在SETUP RESP中应包含对ClientChallenge的回应,为RealChallenge3。即:
Client Server
——–ClientChallenge—-à
<——–RealChallenge1——
——–RealChallenge2—–à
<——–RealChallenge3—–
以上流程也仅限于猜测,目前RealChallenge2的生成已经有算法,在MPlayer工程中。但是RealChallenge1和RealChallenge3的生成还没有算法,目前此流程无法通过。
4 SDP
Session描述语言协议
主要用于在DESCRIBE语句时,描述要传输的文件的视音频流信息,包括编码格式,帧率的丰富的信息,以便播放器做好解码的准备。
5 RIFF RM format
RM文件的格式分析,要传输RM文件,肯定要先分析文件格式,再取出数据,再打包发送。
References
The following are the standards referenced in this document:
Real Time Streaming Protocol (RTSP; RFC 2326)
ftp://ftp.isi.edu/in-notes/rfc2326.txt
This specification references the HTTP spec by using the following notation: [H3.2.1].
This example refers to section 3.2.1 in the HTTP RFC.
Session Description Protocol (SDP; RFC 2327)
ftp://ftp.isi.edu/in-notes/rfc2327.txt
Real Time Transport Protocol (RTP; RFC 1889)
ftp://ftp.isi.edu/in-notes/rfc1889.txt
Hypertext Transfer Protocol (HTTP; RFC 2068)
ftp://ftp.isi.edu/in-notes/rfc2068.txt