rtsp协议详解(代码片段)

音视频开发老舅 音视频开发老舅     2023-04-04     783

关键词:

RTSP协议以客户服务器方式工作它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。

1. 实时流协议RTSP

RTSP[3]协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。

1.1. RTSP协议简介

要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体服务器(media server)。媒体服务器与媒体播放器的关系是服务器与客户的关系。

媒体服务器与普通的万维网服务器的最大区别就是媒体服务器支持流式音频和视频的传送,因而在客户端的媒体播放器可以边下载边播放(需要先缓存一小段时间的节目)。但从普通万维网服务器下载多媒体节目时,是先将整个文件下载完毕,然后再进行播放。

图1 RTSP与RTP和RTCP的关系

RTSP 仅仅是使媒体播放器能控制多媒体流的传送。

因此,RTSP 又称为带外协议,而多媒体流是使用 RTP 在带内传送的。

1.2.    RTSP的报文结构

RTSP有两类报文:请求报文和响应报文。请求报文是指从客户向服务器发送请求报文,响应报文是指从服务器到客户的回答。

由于 RTSP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。

RTSP报文由三部分组成,即开始行、首部行和实体主体。在请求报文中,开始行就是请求行,RTSP请求报文的结构如图2所示。

图2 RTSP请求报文的结构

RTSP请求报文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、GET_PARAMETER和SET_PARAMETER。RTSP请求报文的常用方法及作用如表1所示。

表1 RTSP请求报文的常用方法及作用

响应报文的开始行是状态行,RTSP响应报文的结构如图3所示。

图3 RTSP响应报文的结构

1.3.    RTSP交互过程

C表示RTSP客户端,S表示RTSP服务端

 C->S: OPTION request            //询问S有哪些方法可用

S->C: OPTION response        //S回应信息中包括提供的所有可用方法

 C->S: DESCRIBE request      //要求得到S提供的媒体初始化描述信息

S->C: DESCRIBE response      //S回应媒体初始化描述信息,主要是sdp

 C->S: SETUP request         //设置会话属性,以及传输模式,提醒S建立会话

S->C: SETUP response         //S建立会话,返回会话标识符及会话相关信息

 C->S: PLAY request          //C请求播放

S->C: PLAY response          //S回应请求信息

S->C: 发送流媒体数据

 C->S: TEARDOWN request     //C请求关闭会话

S->C: TEARDOWN response     //S回应请求

上述的过程是标准的RTSP流程,其中第3步和第4步是必需的。

本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

RTSP(Real Time Streaming Protocol), 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealNetworks公司提交的IETF RFC标准. 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数据传输.

RTSP 提供了一个可扩展框架, 使实时数据, 如音频与视频的受控点播成为可能. 数据源包括现场数据与存储在剪辑中数据. 该协议目的在于控制多个数据发送连接, 为选择发送通道, 如UDP, 组播UDP与TCP, 提供途径, 并为选择基于RTP上发送机制提供方法.

它的语法和运作跟HTTP 1.1类似, 但并不特别强调时间同步, 所以比较能容忍网络延迟.

HTTP与RTSP相比, * HTTP传送HTML. HTTP请求由客户机发出, 服务器作出响应 * RTSP传送的是多媒体数据. 使用RTSP时, 客户机和服务器都可以发出请求, 即RTSP可以是双向的.

RTSP是用来控制声音或影像的多媒体串流协议, 并允许同时多个串流需求控制, 传输时所用的网络通讯协议并不在其定义的范围内, 服务器端可以自行选择使用TCP或UDP来传送串流内容.

而 前面提到的允许同时多个串流需求控制(Multicast), 除了可以降低服务器端的网络用量, 更进而支持多方视讯会议(Video Conference). 因为与HTTP1.1的运作方式相似, 所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP, 并因RTSP具有重新导向功能, 可视实际负载情况来转换提供服务的服务器, 以避免过大的负载集中于同一服务器而造成延迟.

该协议用于C/S模型, 是一个基于文本的协议, 用于在客户端和服务器端建立和协商实时流会话.

实 时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体. 尽管连续媒体流与控制流交换是可能的, 通常它本身并不发送连续流. 换言之, RTSP充当多媒体服务器的网络远程控制. RTSP连接没有绑定到传输层连接, 如TCP. 在RTSP连接期间, RTSP用户可打开或关闭多个对服务器的可传输连接以发出RTSP请求. 此外, 可使用无连接传输协议, 如UDP. RTSP流控制的流可能用到RTP, 但RTSP操作并不依赖用于携带连续媒体的传输机制.

协 议支持的操作如下: (1)从媒体服务器上检索媒体: 用户可通过HTTP或其它方法提交一个演示描述. 如演示是组播, 演示式就包含用于连续媒体的的组播地址和端口. 如演示仅通过单播发送给用户, 用户为了安全应提供目的地址. (2)媒体服务器邀请进入会议: 媒体服务器可被邀请参加正进行的会议, 或回放媒体, 或记录其中一部分, 或全部. 这种模式在分布式教育应用上很有用, 会议中几方可轮流按远程控制按钮. (3)将媒体加到现成讲座中: 如服务器告诉用户可获得附加媒体内容, 对现场讲座显得尤其有用. 如HTTP/1.1中类似, RTSP请求可由代理, 通道与缓存处理.

最详细的流媒体传输协议-rtsp协议详解(代码片段)

流媒体传输协议-rtsp协议详解参阅:RTSP协议详解和分析从零开始写一个RTSP服务器(一)RTSP协议讲解关于RTSP_RTP_RTCP协议的深刻初步介绍rtspRTSP出现以前,最热的大概就是HTTP协议。想象一下,当你需要欣赏网络中的某... 查看详情

实时流协议---rtsp详解

...RTSP错误码一、RTSP简介RTSP(RealTimeStreamingProtocol实时流协议 查看详情

rtsp协议详解

...简介    RTSP(RealTimeStreamingProtocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETFRFC标准,该协议定义了一对多应用程序如何有效地通过IP网络传输... 查看详情

javacv开发详解之rtsp推流实战:rtsp转推到rtsp(代码片段)

...专栏文章目录(JavaCV速查手册)前言在上一篇《JavaCV开发详解之rtp推流实战:rtsp转推到rtp》我们主要进行rtp推流,本章将进行rtsp推流。还是那句话,Nocodenobb!废话少谈,直接上代码。参考资料ffmpeg官方rtsp封装格式说明:https://... 查看详情

rtsp协议格式解析(代码片段)

...支撑,理论又很难理解到位。本系列文章将从流媒体协议的基础原理开始,通过抓包分析,并结合具体的代码例程,以[原理]->[抓包]->[代码]相结合的方式,循序渐进由浅入深的介绍rtsp/rtp/rtcp开发相关的内... 查看详情

rtmp协议与rtsp协议比较(代码片段)

...可行性。框架的指定,首先取决于自己采用的流媒体协议,我们熟知的流媒体协议有RTMP,RTSP,HL 查看详情

rtsp协议分解函数(代码片段)

rtsp协议基础为了实现基础得rtsp协议,首先判断以下命令,OPTIONS,DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE这些头部描述在传输得最首位,和http协议得GETPOST基本类似下面就使用vlc来发送命令来测试在vlc中输入rtsp://127.0.0.1/live/1001实际... 查看详情

认识流媒体协议,从rtsp协议解析开始!(代码片段)

RTSP是Internet协议规范,是TCP/IP协议体系中的一个应用层协议级网络通信系统。专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器。该协议用于在端点之间建立和控制媒体会话。媒体服务器的客户... 查看详情

rtsp和rtmp推流(代码片段)

...流和rtmp推流以下为基本推流示意图1rtsp推流首先,rtsp协议有什么好处呢?相比与rtmp协议来说,他更为复杂,rtmp协议的好处是比较单一,就是基于tcp协议做的,当然,完全可以修改为udp协议来做,... 查看详情

rtsp协议详解

...简介    RTSP(RealTimeStreamingProtocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETFRFC标准,该协议定义了一对多应用程序如何有效地通过IP网络传输... 查看详情

ffmpeg入门详解之84:rtsp协议讲解

...f08;RealTimeStreamingProtocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETFRFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多... 查看详情

协议圣经-协议之服务编写(代码片段)

先写了九一、协议服务    上一章说到协议rtsp,rtsp协议本身并不难,但是写一个服务确实是需要非常细致的工作,这回我们要做一个rtsp的服务,启动摄像头并且编码成h264以后用udpoverrtsp来等待链接,将摄像... 查看详情

秒懂流媒体协议rtmp与rtsp(代码片段)

...里是网络技术联盟站。RTMP与RTSP是比较常见的两种流媒体协议,那么什么是RTMP?什么是RTSP?它们两之间有什么区别?使用的时候应该如何选择?今天瑞哥就用人话好好和大家聊聊,如果觉得对您有帮助ÿ... 查看详情

https协议详解(代码片段)

HTTPS协议安全超文本传输协议HTTPS协议概述1、HTTPS协议=HTTP协议+SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。2... 查看详情

rtsp,java实现简单的rtsp报文交换(代码片段)

这里写目录标题RTSP协议是什么报文实例:1.OPTIONS2.DESCRIBE4.SETUP5.PLAYJava实现简单的RTSP报文交换了解RTSP协议使用Java程序编写RTSP客户端访问RTSP服务端,实现拉流RTSP协议是什么RTSP是一种基于文本的协议,用CRLF(回车换行)... 查看详情

常见开源协议详解(代码片段)

...貌似从未关心过项目中使用的“轮子”涉及到了哪些开源协议。版权保护方面,虽然相关法规尚有待完善,但在研发商用软件过程中,作为软件开发者还是很有必要了解一下,我们平时使用的开源组件/框架都涉及到了哪些开源... 查看详情

http协议之详解(代码片段)

一、http协议的特性http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http协议的的特点是无状态,无连接二、http协议的请求利用抓包工具httpwatch可以获取报文http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要... 查看详情

modbus协议详解(代码片段)

Modbus协议详解一、Modbus协议简介Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,... 查看详情