RTSP学习笔记
1.学习资料来源
学习课程:这个up主讲得挺好的
2.流媒体
流媒体又叫流式媒体,它是指商家用一个视频传送服务器(比如: vlc) 把节目(比如:ande10.mp4)当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。
这个过程的一系列相关的包称为“流”。流媒体实际指的是一种新的媒体传送方式,而非一种新的媒体。
流媒体技术全面应用后,人们在网上聊天可直接语音输入;如果想彼此看见对方的容貌、表情,只要双方各有一个摄像头就可以了;在网上看到感兴趣的商品,点击以后,讲解员和商品的影像就会跳出来;更有真实感的影像新闻也会出现。
流媒体技术发端于美国,在美国目前流媒体的应用已很普遍,比如惠普公司的产品发布和销售人员培训都用网络视频进行。
所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播放,只是在开始时有一些延迟。流媒休实现的关键技术就是流式传输。
流式传输方式则是将整个 A/V 及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在架用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完华,而是只需经过儿秒或几十秒的启动延时即可在用户的计算机上利用解压设备(硬件或软件)对压缩的 A / V 、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台服务器内继续下载。
与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动延时大幅度缩短,而且对系统容量需求也大大降低。
3.RTSP 简介
3.1 RTSP
RTSP ( Real Time Streaming Protocol),RFC2326, 实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。
HTTP与RTSP 相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议( Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器 <Proxy> 的快取功能<Cache>也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同意服务器而造成延迟。
实时流媒体会话协议:
1.SDP(会话描述协议)Session Description Protocol
描述客户端服务端交互的具体信息。
2.RTP(实时传输协议):{仅传输不控制,ptsp能够完全控制}
是用来控制声音或影像的多媒体串流协议,RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。媒体数据使用rtp,rtcp 协议。一般使用udp作为传输层。适合IPTV场景。
数据源包括现场数据与存储在文件中的数据。该协议目的在于控制**多个数据(音频视频流)**发送连接,为选择发送通道,如UDP、多播UDP与TCP提供途径,并为选择基于RTP.上发送机制提供
方法传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,比较能容忍网络延迟.
3.2 PTSP协议简介
TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。
HTTP与RTSP 相比,HTTP 传送HTML,而RTSP传送的是多媒体数据。
RTSP是基于文本的协议,采用IS010646字符集,使用UTF-8编码方案。
行以CRLF中断(\r\n:10,13:0x0A,0x0D) ,包括消息类型、消息头、消息体和消息长。但接收者本身可将CR和LF解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口中采用SDP作为描述语言。
RTSP是应用级协议,控制实时数据的发送。
RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播∪DP与TCP,提供途径,并为选择基于RTP.上发送机制提供方法。
RTSP建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交换是可能的,通常它本身并不发送连续流。换言之,RTSP 充当多媒体服务器的网络远程控制。
RTSP连接没有绑定到传输层连接,如TCP。在RTSP连接期间,RTSP 用户可打开或关闭多个对服务器的可传输连接以发出RTSP请求。
此外,可使用无连接传输协议,如UDP
RTSP流控制的流可能用到RTP,但RTSP操作并不依赖于携带连续媒体的传输机制。
协议支持的操作如下:
RTSP 协议支持:
(1)从媒体服务器上检索媒体:用户可通过 HTTP 或其它方法提交一个演示描述。如演示是组播,演示式就包含用于连续媒体的组播地址和端口。如演示仅通过单措发送给用户,用户为了安全应提供目的地址。
(2)媒体服务器邀请进入会议:媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。
(3)将媒体加到现成讲座中:如服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。如HTTP/1.1中类似, RTSP 请求可由代理、通道与缓存处理
3.3 白话
推流:(本机电脑)视频流经过代码推到rtsp服务器地址(rtsp://ip:port/lujingName)上去
物理链接:两台电脑通过网线相连,对ip进行设置,两台电脑需要在同一个网段
拉流:另一台电脑(客户端)通过手段(代码、VLC、ffmpeg等)对服务器地址进行请求
4.使用VLC推拉流
4.1 vlc下载
4.2 vlc推流
4.3 vlc拉流
重新打开一个vlc窗口
4.4 两台电脑之间的推拉流
1.两台电脑之间使用网线连接
2.更改两台电脑的ip使之在同一个局域网下
另外一台电脑也这样:
3.拉流
如果是192.168.1.38推流,那么192.168.1.40使用vlc接收流使用:
rtsp://192.168.1.38:8554/live
5.使用ffmpeg推拉流
1.ffmpeg下载[教程]
2.ffmpeg推流[他人博客](我反正没有成功)
3.ffmpeg拉流:ffmpeg -i rtsp://127.0.0.1:8554/live
(亲测有效)