99设计网站济宁网站建设 企业谷

当前位置: 首页 > news >正文

99设计网站,济宁网站建设 企业谷,网站标题更新,如何使用记事本做网站1 前言 RTSP协议作为音视频实时监控一个非常重要的协议#xff0c;具有非常广泛的应用。RTSP由RFC 2326规范化#xff0c;它允许客户端通过请求不同的媒体资源来控制流媒体服务器。RTSP是一种应用层协议#xff0c;通常基于TCP连接#xff0c;用于建立和控制媒体会话。这使…1 前言 RTSP协议作为音视频实时监控一个非常重要的协议具有非常广泛的应用。RTSP由RFC 2326规范化它允许客户端通过请求不同的媒体资源来控制流媒体服务器。RTSP是一种应用层协议通常基于TCP连接用于建立和控制媒体会话。这使得RTSP成为了许多实时流媒体应用的核心组成部分包括视频会议、IP摄像头、流媒体服务器等。本文将深入探讨RTSP协议的原理、交互流程、高级用法以及如何进行抓包分析。 2 RTSP协议 RTSP协议定义主要是是在RFC2326规定这是一个文本类的协议用于控制实时的音视频流的传输协议。 2.1 RTSP协议交互流程 将重点讨论协议协商的过程RTSP采用的是服务器客户端的模式一个服务器可以承载多个客户端同时连接。这里需要注意的是服务器一直监听某个端口默认端口554。客户端发起TCP连接后即开始进行RTSP协商。下图是一个基本的RTSP协商流程
OPTIONS 客户端行为客户端发送OPTIONS请求以了解服务器支持哪些方法。 服务器响应服务器将支持的方法列表包含在响应中这有助于客户端了解服务器的功能。DESCRIBE 客户端行为客户端发送DESCRIBE请求以获取关于媒体资源的描述信息如编码、分辨率等。 服务器响应服务器返回媒体资源的描述信息通常是SDP会话描述协议格式包括媒体流的属性和相关参数。SETUP 客户端行为客户端发送SETUP请求用于建立媒体会话指定传输通道如UDP或TCP并请求分配端口。 服务器响应服务器确认SETUP请求指定了媒体流的传输通道和端口允许客户端与服务器建立连接。PLAY 客户端行为客户端发送PLAY请求以开始媒体流的播放。 服务器响应服务器确认PLAY请求并启动媒体流的传输。GET_PARAMETER 客户端行为客户端发送GET_PARAMETER请求以获取有关媒体会话的参数信息如媒体流的播放状态或其他参数。 服务器响应服务器通常返回与GET_PARAMETER请求相关的参数信息。TEARDOWN 客户端行为客户端发送TEARDOWN请求以终止媒体会话停止播放并释放资源。 服务器响应服务器确认TEARDOWN请求关闭会话并释放与媒体流相关的资源。 2.2 RTSP媒体描述 RTSP协商核心的流程是媒体信息的交换主要是通过DESCRIBE请求来完成。服务器是通过SDP将媒体信息回复给客户端这里主要是携带媒体的信息分为音频和视频两部分。 音频媒体描述字段 m媒体行指定媒体类型通常为audio以及用于传输媒体的协议和端口号。例如maudio 5004 RTP/AVP 0表示音频流使用RTP协议在端口5004上传 输媒体格式为0通常对应PCMU或G.711u编码。 artpmapRTP映射指定RTP负载类型Payload Type和媒体格式。例如artpmap:0 PCMU/8000表示Payload Type为0的RTP流使用PCMU编码采样率 为8000Hz。 acontrol控制URL指定控制媒体流的URL。例如acontrol:audio表示控制音频流的URL。 arecvonly只接收指定该媒体流为只接收模式表示该端只接收媒体不发送。例如arecvonly。视频媒体描述字段 m媒体行指定媒体类型通常为video以及用于传输媒体的协议和端口号。例如mvideo 5006 RTP/AVP 96表示视频流使用RTP协议在端口5006上 传输媒体格式为96通常对应H.264编码。 artpmapRTP映射指定RTP负载类型Payload Type和媒体格式。例如artpmap:96 H264/90000表示Payload Type为96的RTP流使用H.264编码 时钟速率为90000。 acontrol控制URL指定控制媒体流的URL。例如acontrol:video表示控制视频流的URL。 arecvonly只接收指定该媒体流为只接收模式表示该端只接收媒体不发送。例如arecvonly。这些字段描述了媒体流的基本信息包括媒体类型、传输协议、端口号、编码格式、时钟速率等。这些描述对于RTSP客户端和服务器之间的媒体会话建立和控制非常重要因为它们帮助确定如何处理媒体数据以及如何与媒体流进行交互。不同的媒体格式和参数可能会导致不同的媒体流配置。 2.3 RTSP端口协商 SETUP命令的主要作用是建立媒体会话的传输通道它告知服务器客户端希望使用什么协议和端口来接收媒体流。服务器会响应SETUP请求确认媒体会话的建立并提供了实际的传输通道信息以便客户端开始接收媒体流。 音频SETUP 客户端 音频SETUP请求用于建立音频媒体会话的传输通道。以下是音频SETUP请求的一般形式 SETUP rtsp://server-address/audio-resource RTSP/1.0 CSeq: [Sequence Number] Transport: RTP/AVP;unicast;client_port5000-5001 rtsp://server-address/audio-resource指定音频资源的URL路径。Transport: RTP/AVP这部分说明音频传输使用的协议和配置通常为RTP/AVP表示使用RTP传输协议。 client_port5000-5001客户端指定了用于接收音频的端口范围即5000到5001这意味着服务器应该将音频流发送到这个端口范围。 服务器 服务器将响应音频SETUP请求确认了传输通道的建立并提供实际的传输参数如服务器分配的端口号。 RTSP/1.0 200 OK CSeq: [与请求中的CSeq相同] Transport: RTP/AVP;unicast;client_port5000-5001;server_port6000-6001视频SETUP 客户端 视频SETUP请求用于建立视频媒体会话的传输通道。以下是视频SETUP请求的一般形式 SETUP rtsp://server-address/video-resource RTSP/1.0 CSeq: [Sequence Number] Transport: RTP/AVP;unicast;client_port6000-6001 rtsp://server-address/video-resource指定视频资源的URL路径。Transport: RTP/AVP这部分说明视频传输使用的协议和配置通常为RTP/AVP表示使用RTP传输协议。 client_port6000-6001客户端指定了用于接收视频的端口范围即6000到6001这意味着服务器应该将视频流发送到这个端口范围。 服务器 服务器将响应视频SETUP请求确认了传输通道的建立并提供实际的传输参数如服务器分配的端口号。 RTSP/1.0 200 OK CSeq: [与请求中的CSeq相同] Transport: RTP/AVP;unicast;client_port6000-6001;server_port7000-70012.4 RTSP 播放确认 RTSP实时流媒体传输协议中的PLAY字段用于启动或继续媒体流的播放。它是RTSP协议的一种请求命令通常在SETUP之后用于开始媒体流的传输。以下是PLAY字段的详细解释 客户端 PLAY命令格式PLAY命令通常以如下的格式发送到RTSP服务器 PLAY rtsp://server-address/resource RTSP/1.0 CSeq: [Sequence Number] Session: [Session ID] Range: [播放范围]rtsp://server-address/resource这是RTSP服务器的地址和媒体资源的路径。客户端通过此URL指定要播放的资源。 RTSP/1.0指定了使用的RTSP协议版本。 CSeq用于命令序列的计数器以确保命令的顺序性和唯一性。 Session在SETUP请求成功建立媒体会话后服务器分配的会话ID以标识正在播放的会话。 Range可选字段用于指定播放的时间范围。这允许客户端进行时间范围内的媒体流播放如跳转到某个时间点或从某个时间点开始播放。 服务器 PLAY命令的响应通常遵循RTSP协议的响应格式以确认播放操作并提供相关信息。以下是PLAY响应的一般格式 RTSP/1.0 200 OK CSeq: [与请求中的CSeq相同] Session: [Session ID] RTP-Info: [媒体信息]RTSP/1.0 200 OK这表示服务器成功接受并处理了PLAY请求通信正常。 CSeq响应中的CSeq与请求中的CSeq相同以维护命令的顺序性。 Session在SETUP请求成功建立媒体会话后服务器分配的会话ID以标识正在播放的会话。这个会话ID是客户端和服务器之间识别会话的关键。 RTP-Info这是一个可选字段它包含有关媒体流的信息如媒体流的SSRC同步信源标识符和RTP序列号。这些信息可以用于帮助客户端更好地解析和处理媒体流。 2.5 异常流程 在RTSP实时流媒体传输协议中异常流程通常涉及客户端或服务器遇到问题时通过特定的状态码来表示错误或异常情况。以下是一些常见的RTSP状态码用于标识异常流程的情况。状态代码的第一位数字定义了响应的类别。这最后两位数字没有任何分类作用。有 5 个 第一个数字的值具体状态码需要查RFC2326文档。 1xx信息 - 已收到请求正在继续处理 2xx成功 - 操作已成功接收、理解并接受 3xx重定向 - 必须采取进一步的操作才能完成请求 4xx客户端错误 - 请求包含错误语法或无法实现了 5xx服务器错误 - 服务器未能完成明显的任务有效请求3 RTSP高级用法 3.1 RTSP over TCP RTSP over TCP允许使用可靠的TCP连接来进行RTSP握手和媒体传输与RTSP over UDP相比具有更高的可靠性和更容易穿越防火墙和代理服务器。在协商过程中主要差异包括TCP连接的建立Transport字段的参数以及双工通道的使用。这种方式适用于需要可靠传输和高级控制的实时流媒体应用。RTSP over TCP采用与默认的UDP传输音视频不一样的地方是音视频也是走服务器端口比如是554公用一个连接进行数据的传输。协商主要是在SETUP字段上完成。 RTSP over TCP传输格式 SETUP rtsp://server-address/resource/trackID RTSP/1.0 CSeq: 3 Transport: RTP/AVP/TCP;interleaved[双数开始的RTP通道号]-[双数开始的RTCP通道号]注意RTSP over TCP使用Transport字段的RTP/AVP/TCP参数来指示TCP传输而interleaved参数指示了双工通道的RTP和RTCP通道号。 RTSP over UDP传输格式 SETUP rtsp://server-address/video-resource RTSP/1.0 CSeq: [Sequence Number] Transport: RTP/AVP;unicast;client_port6000-6001媒体数据封装RTSP over TCP采用的是Magic头部来进行音视频数据的区分一般第一个字节是固定的 Magic:0x24第二个字节是指定媒体的通道第三和第四个字节是指定RTP包的长度一般不用直接用Magic头进行分割。 所描述的 “Interleaved Channel” 头部是一种特定于 RTSP over TCP 的私有协议扩展用于标识和传输 RTP 和 RTCP 数据。这个头部的格式如下 第一个字节byte 1为 $通常用作 Interleaved Channel 的开始标志。 第二个字节byte 2用于指示通道的 ID其取值由 RTSP-SETUP 消息中确定。 通常0 表示视频的 RTP 数据1 表示视频的 RTCP 数据2 表示音频的 RTP 数据3 表示音频的 RTCP 数据。 第三和第四个字节byte 3-4用于指示 RTP 包的长度4 抓包分析 rtsp协商过程中抓包分析是一个非常重要的手段很多时候兼容性问题都需要通过wareshark进行抓包分析首先抓包后第一步是利用流追踪将抓包转换为文本流进一步分析下面是rtsp over tcp的一个抓包。 从抓包中可以看出这里做了两次options操作第一次没有携带账号密码服务器回复了401,第二次客户端带上账号密码才协商成功。 RTSP over TCP协商主要体现在SETUP字段。 下面是一个完整的RTSP over UDP的协商过程
OPTIONS rtsp://192.168.88.101:554/ch0 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)RTSP/1.0 200 OK CSeq: 2 Date: Sun, Jun 25 2023 01:16:55 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETERDESCRIBE rtsp://192.168.88.101:554/ch0 RTSP/1.0 CSeq: 3 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28) Accept: application/sdpRTSP/1.0 200 OK CSeq: 3 Date: Sun, Jun 25 2023 01:16:55 GMT Content-Base: rtsp://192.168.88.101/ch0/ Content-Type: application/sdp Content-Length: 605v0 o- 1687655781765442 1 IN IP4 192.168.88.101 sface recognition live iLIVE555 Streaming Media v2023.05.10 t0 0 atool:LIVE555 Streaming Media v2023.05.10 atype:broadcast acontrol:* arange:nptnow- ax-qt-text-nam:face recognition live ax-qt-text-inf:LIVE555 Streaming Media v2023.05.10 mvideo 0 RTP/AVP 96 cIN IP4 0.0.0.0 bAS:100 artpmap:96 H264/90000 afmtp:96 packetization-mode1;profile-level-id640033;sprop-parameter-setsZ2QAM6zoBQBbJsgAAB9AAAdTBCA,aO48sA acontrol:track1 maudio 0 RTP/AVP 96 cIN IP4 0.0.0.0 bAS:100 artpmap:96 PCMA/8000 acontrol:track2 SETUP rtsp://192.168.88.101/ch0/track1 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28) Transport: RTP/AVP;unicast;client_port52624-52625RTSP/1.0 200 OK CSeq: 4 Date: Sun, Jun 25 2023 01:16:55 GMT Transport: RTP/AVP;unicast;destination192.168.88.171;source192.168.88.101;client_port52624-52625;server_port6970-6971 Session: 71F8DA1A;timeout65SETUP rtsp://192.168.88.101/ch0/track2 RTSP/1.0 CSeq: 5 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28) Transport: RTP/AVP;unicast;client_port52626-52627 Session: 71F8DA1ARTSP/1.0 200 OK CSeq: 5 Date: Sun, Jun 25 2023 01:16:55 GMT Transport: RTP/AVP;unicast;destination192.168.88.171;source192.168.88.101;client_port52626-52627;server_port6972-6973 Session: 71F8DA1A;timeout65PLAY rtsp://192.168.88.101/ch0/ RTSP/1.0 CSeq: 6 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28) Session: 71F8DA1A Range: npt0.000-RTSP/1.0 200 OK CSeq: 6 Date: Sun, Jun 25 2023 01:16:55 GMT Range: npt0.000- Session: 71F8DA1A RTP-Info: urlrtsp://192.168.88.101/ch0/track1;seq50270;rtptime1941266457,urlrtsp://192.168.88.101/ch0/track2;seq32464;rtptime2232875491TEARDOWN rtsp://192.168.88.101/ch0/ RTSP/1.0 CSeq: 7 User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28) Session: 71F8DA1ARTSP/1.0 200 OK CSeq: 7 Date: Sun, Jun 25 2023 01:17:02 GMT