1.代码
libavformat/rtspdec.c
libavformat/rtsp.c
2.说明
RTSP具有独立于传输的特性,它本身并不传输流,只是做一个“网络遥控”的作用。在FFMPEG中认为RTSP是一种封装格式,而不是一种协议。
3.RTSP和HTTP的区别
- RTSP引入了很多新方法并且有不同的协议标识符。
- RTSP服务器在绝大多数默认情况下需要维持状态,而HTTP是无状态协议
- RTSP客户机和服务器都可以发出请求,而HTTP只能由客户端发起请求
- 数据由信带外的另一个协议传送(TCP,UDP,HTTP等)
- RTSP使用IS 10646(UTF-8) 而不是IS 8859-1,以配合当前HTML的国际化。
- RTSP的URI包含绝对URI,而HTTP/1.0请求包含的是相对路径,HTTP/1.1请求包含绝对路径,把主机名放入单独的头部域中。
4.代码分析
rtsp_probe:主要是实现对rtsp或rtsps的格式探测;
rtsp_read_header:主要是实现建立以及完成部分(OPTIONS,DESCRIBE,SETUP,PLAY)会话;
ff_rtsp_connect(以负载使用UDP协议):
1.打开RTSP的会话TCP连接;
2.OPTIONS会话
3.DESCRIBE会话: