RTSP协议概况
RTSP协议概况
简单的交互命令就能实现RTSP对接,C代表Client S代表Server
例如:C1-客户端发的第一个命令 S1-服务器响应的第一个回复
【C1】OPTIONS rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
【S1】RTSP/1.0 200 OK
【C2】DESCRIBE rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
【S2】RTSP/1.0 200 OK
【C3】SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=1 RTSP/1.0
【S3】RTSP/1.0 200 OK
【C4】SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=2 RTSP/1.0
【S4】RTSP/1.0 200 OK
【C5】PLAY rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
【S5】RTSP/1.0 200 OK
【C6】TEARDOWN rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
【S6】RTSP/1.0 200 OK
1. 请求OPTION
【C1】OPTIONS
OPTIONS rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
CSeq: 5
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="29f1b8fae9acf74fc8f4c2487f8ce6ce"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
询问RTSP服务器有哪些命令可以使用
【S1】Reply
RTSP/1.0 200 OK
CSeq: 5
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
服务器回应客户端的请求。这个回应第一行为OK,则表明服务器接受查询命令,并且反馈给客户端信息,可以使用的命令有:OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER,则下一步就可以向服务器发送这些命令,如果没有,则服务器不接收这些命令。
2. 认证请求资源描述DESCRIBE
【C2】DESCRIBE
DESCRIBE rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
CSeq: 6
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="f493d85860c733643783636bc1f8f050"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
Accept: application/sdp
发送具有认证标识的信息到服务器,去获取服务器的资源列表。
【S2】Reply:
RTSP/1.0 200 OK
CSeq: 6
Content-Type: application/sdp
Content-Length: 561
v=0
o=- 1109162014219182 0 IN IP4 0.0.0.0
s=HIK Media Server
i=HIK Media Server Session Description : standard
e=NONE
c=IN IP4 0.0.0.0
t=0 0
a=control:*
a=range:npt=0.0-
m=video 0 RTP/AVP 96
i=Video Media
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=4D0014;packetization-mode=0;sprop-parameter-sets=Z00AH5WoFAFuQA==,
a=control:trackID=1
m=audio 0 RTP/AVP 0
i=Audio Media
a=rtpmap:0 PCMU/8000
a=control:trackID=2
a=Media_header:MEDIAINFO=494D4B48010100000400000110710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0
首先第一行给了OK,表明上一个命令成功--DESCRIBE成功得到服务器认证
其次,给出了服务器的媒体信息-具有两路码流--音频(audio)和视频(video) 并给出了请求两路数据的地址
3. 请求视频资源
【C3】SETUP
SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=1 RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="461640905696ab12dcbb3cac681f18fa"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
Transport: RTP/AVP;unicast;client_port=59740-59741
请求获取流媒体服务器上的视频资源 并告知服务器可以往客户端56740端口发送视频数据,56741为RTCP接收端口,发送方式为单播。传输方式为UDP
**********************传输方式与Transport string的对应关系**********************
UDP传输:Transport:RTP/AVP
TCP传输:Transport:RTP/AVP/TCP
RAW UDP传输:Transport:RAW/RAW/UDP
****************************************************************************************
【S3】Reply
RTSP/1.0 200 OK
Session: 583714312
Transport: RTP/AVP;unicast;client_port=59740-59741;server_port=62028-62029;ssrc=22cac608
CSeq: 7
服务器同意发送视频数据给客户端 56740为视频接收端,56741为RTCP接收端口,发送方式为单播。传输方式为UDP
4. 请求音频资源
【C4】SETUP
SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=2 RTSP/1.0
CSeq: 8
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="461640905696ab12dcbb3cac681f18fa"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
Transport: RTP/AVP;unicast;client_port=59742-59743
Session: 583714312
请求获取服务器上的音频资源 并告知服务器可以往客户端56742端口发送视频数据,56743为RTCP接收端口,发送方式为单播。传输方式为UDP
【S4】Reply
RTSP/1.0 200 OK
Session: 583714312
Transport: RTP/AVP;unicast;client_port=59742-59743;server_port=62030-62031;ssrc=22cac609
CSeq: 8
服务器同意发送音频数据给客户端 56742为视频接收端,56743为RTCP接收端口,发送方式为单播。传输方式为UDP
5. 开始数据接收
【C5】PLAY
PLAY rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
CSeq: 9
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="8ee54555450f6ddfec5841379e30313f"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
Session: 583714312
Range: npt=0.000-
告知服务器一切准备就绪,数据可以发过来!
【S5】Reply
RTSP/1.0 200 OK
Session: 583714312
CSeq: 9
服务器告知客户端,朋友我已经送数据过来了,你可以接收了!
这个时候我们打开Wireshark,在过滤栏输入rtp,可以看到如下数据,表明服务器已经向客户端的56740、56742端口发送数据
6. 关闭播放
【C6】TEARDOWN
TEARDOWN rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0
CSeq: 10
Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="4a6b541848b9d1c37e31f87797b32188"
User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)
Session: 583714312
关闭数据传输 释放服务器资源 如果需要重新获取码流 则需要从1~5再来一次
【S6】Reply
RTSP/1.0 200 OK
CSeq: 10
Session: 583714312
Connection: close
服务器已经成功关闭当前链接
RTSP协议概况的更多相关文章
- RTSP协议媒体数据发包相关的细节
最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交 ...
- HTTP协议/RTSP协议/RTMP协议的区别
RTSP. RTMP.HTTP的共同点.区别 共同点: 1:RTSP RTMP HTTP都是在应用应用层. 2: 理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP, ...
- 从RTSP协议SDP数据中获得二进制的SPS、PPS
在RTSP协议的交互过程中,第二步客户端发送DESCRIBE请求之后,服务端会返回SDP内容,该SDP内容中有关于媒体和会话的描述,本篇文章主要给出如何从SDP字符串中得到H264视频信息中的sps. ...
- RTSP协议详解
RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流媒体提 ...
- RTSP 协议分析
RTSP 协议分析1.概述: RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwor ...
- RTSP协议、RTMP协议、HTTP协议的区别
理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP,做点播用HTTP.做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了. RTSP. RTMP.HTT ...
- RTSP协议学习笔记
一. RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP ...
- 【转】RTSP协议学习笔记
第一部分:RTSP协议 一. RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. ...
- RTSP协议分析
RTSP 协议分析 1.概述: RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetw ...
随机推荐
- 几个不同的关键XPath概念
几个不同的关键XPath概念...... 绝对vs相对XPath(/vs .) / 引入绝对位置路径,从文档的根开始. . 从上下文节点开始引入相对位置路径. 命名元素vs任何元素(enamevs * ...
- 括号序列的dp问题模型
括号序列的dp问题模型 Codeforces314E ◦给定一个长度为n的仅包含左括号和问号的字符串,将问号变成左括号或 右括号使得该括号序列合法,求方案总数. ◦例如(())与()()都是合法的括号 ...
- 第三章 python数据规整化
本章概要 1.去重 2.缺失值处理 3.清洗字符型数据的空格 4.字段抽取 去重 把数据结构中,行相同的数据只保留一行 函数语法: drop_duplicates() #导入pandas包中的read ...
- 转载像元素周期表一样的html5的标签图集
转载请注明出处. HTML5标签集合
- 【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路
B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...
- Spring Cloud Eureka(一): 开篇说明及目录汇总
开篇简述 基于Spring Boot 和 Spring Cloud 的微服务应用,本人在工作中已经使用两年有余了,伴随着个人学习计划的实施,希望借助博文的方式,将工作中使用到的技术点体系化的总结出来, ...
- 记一次springboot+mybatis+phoenix在代码集成中的坑
场景: 希望使用phoenix做查询服务,给服务端提供接口 设计: 通过springboot做restful的接口发布,通过mybatis做phoenix的sql处理,因此是springboot+my ...
- HDU 2176 取(m堆)石子游戏 —— (Nim博弈)
如果yes的话要输出所有情况,一开始觉得挺难,想了一下也没什么. 每堆的个数^一下,答案不是0就是先取者必胜,那么对必胜态显然至少存在一种可能性使得当前局势变成必败的.只要任意选取一堆,把这堆的数目变 ...
- redis 字符串数据(string)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127. ...
- ArcGIS Python获得一个图层所有线长
import arcpy # Create an empty Geometry object # g = arcpy.Geometry() # Run the CopyFeatures tool, s ...