实时流传输协议(Real Time Streaming Protocol,RTSP)是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。
一、RTSP协议介绍
RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。RTSP中所有的操作都是通过服务器和客户端的消息应答机制完成的,其中消息包括请求和应答两种,RTSP是对称的协议,客户端和服务器都可以发送和回应请求。行以CRLF中断,包括消息类型、消息头、消息体和消息长。但接收者本身可将CR和LF解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口中采用SDP作为描述语言。
1)请求消息:由请求行、标题行中的各种标题域和主体实体组成。其中方法包含option、describe、setup、play、teardown。
2)应答消息:状态码是一个数值,用于表示请求消息的执行结果,比如200表示成功。短语是与状态码对应的文本解释。
3)RTSP协议方法:
Option:获取服务端rtsp支持能力。
Describe:获取服务器媒体资源信息。
Setup:协商媒体传输通道。
Play:请求采用指定方式向终端发送媒体数据。
Teardown:主动请求停止发送媒体资源,退出播放。
Pause:请求暂停向终端发送数据。
Get_Parameter:请求心跳。
二、RTSP推拉流介绍
1.RTSP推流介绍
1)ffmpeg & gstream 推流(rtsp/rtp-tcp/mp2ts),ffmpeg通过管道给gstreamer发送ts包,gstreamer以rtsp/rtp-tcp/mp2ts格式推流到rtsp服务器
#ffmpeg -re -stream_loop -1 -i 333.ts -c copy -f mpegts pipe:1 | gst-launch-1.0 -v fdsrc ! queue ! tsparse set-timestamps=true ! video/mpegts ! rtspclientsink protocols=tcp location=xxxxxx
2)ffmpeg推流rtsp
#ffmpeg -re -i RTSP/1.ts -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp xxxxxx
2.RTSP拉流介绍
1)ffplay rtsp拉流(指定以tcp形式播放媒体流)
#ffplay -rtsp_transport tcp xxxxxx
2)vlc rtsp拉流
(1)windows vlc rtp/tcp设置;
(2)mac vlc设置:preferences->input/codecs→show all → input/codecs →demuxers → rtp/rtsp勾选 use rtp over rtsp(tcp)