RTSP实例解析
以下是某地IPTV的RTSP协商过程:
1、DESCRIBE
请求:
- //方法和媒体URL
- DESCRIBE rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2&TSTVTimeLife=1800&contname=&authid=0&UserLiveType=1&nodelevel=3 RTSP/1.0
- //协商用于描述媒体信息协议
- Accept: application/sdp
- CSeq: 1
- //User Agnet信息,显示是中兴的服务器,1.0的版本。如果是Helix服务器的话会有Helix 服务器的标识。
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
- //主要用于NAT穿透
- x-NAT:2.1.1.100:20081
- x-zmssRtxSdp: yes
响应:
- RTSP/1.0 200 OK
- //应答编号
- Server: ZXUSS100 1.0
- Cache-Control: no-cache
- Content-Base: rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/
- //内容长度信息
- Content-Length: 320
- //描述内容信息所用的协议
- Content-Type: application/sdp
- CSeq: 1
- Date: Wed, 29 Sep 2010 10:20:38 GMT
- Expires: Wed, 29 Sep 2010 10:20:38 GMT
- // SDP 描述信息
- v=0
- o=- 296874273 1 IN IP4 118.122.89.27
- s=envivio
- c=IN IP4 0.0.0.0
- b=AS:1500
- t=0 0
- a=range:clock=20100929T095038.00Z-20100929T102038.00Z
- m=video 5140 RTP/AVPF 33 96
- a=control:trackID=2
- a=rtpmap:33 MP2T/90000
- a=3GPP-Adaptation-Support:5
- a=rtcp-fb:33 nack
- a=rtpmap:96 rtx/90000
- a=fmtp:96 apt=33;rtx-time=0
2、SETUP
请求:
- //用于建立RTSP连接,协商传输用的协议。
- SETUP rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2 RTSP/1.0
- CSeq: 2
- 3GPP-Adaptation: url=rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2;size=1061400;target-time=2200
- Transport: MP2T/RTP/UDP;unicast;destination=2.1.1.100;client_port=8360-8361,MP2T/RTP/TCP;unicast;destination=2.1.1.100;interleaved=0-1,MP2T/UDP;unicast;destination=2.1.1.100;client_port=8360-8361,MP2T/TCP;unicast;destination=2.1.1.100;interleaved=0-1
- // MP2T/RTP/UDP表示是TS流用于RTP打包,基于UDP传输。MP2T/RTP/TCP表示是TS流用于RTP打包,基于TCP。
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
响应:
- RTSP/1.0 200 OK
- Server: ZXUSS100 1.0
- CSeq: 2
- Date: Wed, 29 Sep 2010 10:20:38 GMT
- Expires: Wed, 29 Sep 2010 10:20:38 GMT
- Session: 65565885
- Transport: MP2T/RTP/UDP;unicast;destination=2.1.1.100;client_port=8360-8361;server_port=13306-13307;source=118.122.89.29
- // 通过协商MP2T/RTP/UDP表示是TS流用于RTP打包,基于UDP传输。server端端口:13306-13307。client端端口:8360-8361
- 3GPP-Adaptation:url=rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2;size=1061400;target-time=2200
3、PLAY
请求:
- //播放视频。对于有些视频可能会分别要对音频视频进行play。
- PLAY rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2&TSTVTimeLife=1800&contname=&authid=0&UserLiveType=1&nodelevel=3 RTSP/1.0
- CSeq: 3
- Session: 65565885
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
- Scale: 1.0
- //npt=end-在IPTV2.0里面有其自身的定义(可参看上海电信IPTV2.0标准)
- Range: npt=end-
响应:
- RTSP/1.0 200 OK
- Server: ZXUSS100 1.0
- CSeq: 3
- Range: npt=end-
- Scale: 1.0
- Session: 65565885
- RTP-Info: url=rtsp://118.122.89.29:13306/live/ch10083121594790060557.sdp/trackID=2
play的另一种用法(快进和快退)。
请求:
- //play的另外一种用法。用于快进和快退。
- PLAY rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2&TSTVTimeLife=1800&contname=&authid=0&UserLiveType=1&nodelevel=3 RTSP/1.0
- CSeq: 43
- Session: 65565885
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
- //Scale: -32.0,表示以32倍速快退。Scale: 32.0,表示以32倍速快进。
- Scale: -32.0
- Range: npt=now-
响应:
- RTSP/1.0 200 OK
- Server: ZXUSS100 1.0
- CSeq: 43
- Range: clock=20100929T102609.02Z-20100929T095637.75Z
- Scale: -32.0
- Session: 65565885
- RTP-Info: url=rtsp://118.122.89.36:10084/live/ch10083121594790060557.sdp/trackID=2;seq=22277;rtptime=1792329138
4、GET_PARAMETER
请求:
- //获取当前的一些播放参数。
- GET_PARAMETER rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2&TSTVTimeLife=1800&contname=&authid=0&UserLiveType=1&nodelevel=3 RTSP/1.0
- CSeq: 44
- Session: 65565885
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
- //请求时移的范围
- x-Timeshift_Range
- //获取当前的时间点
- x-Timeshift_Current
响应:
- RTSP/1.0 200 OK
- //返回当前的媒体信息。
- Server: ZXUSS100 1.0
- CSeq: 44
- Session: 65565885
- x-Timeshift_Range: clock=20100929T095638.83Z-20100929T102638.83Z
- x-Timeshift_Current: clock=20100929T102530.20Z;rtptime=1788844914
- //中间省去了45,46,47三个包。通过CSeq: 48字段可以看出来
5、PLAY
请求:
- //用于恢复正常的播放速度。
- PLAY rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2&TSTVTimeLife=1800&contname=&authid=0&UserLiveType=1&nodelevel=3 RTSP/1.0
- CSeq: 48
- Session: 65565885
- User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
- Scale: 1.0
- Range: npt=beginning-
响应:
- RTSP/1.0 200 OK
- Server: ZXUSS100 1.0
- CSeq: 48
- Range: clock=20100929T095730.00Z-20100929T102730.61Z
- //可以时移的范围。
- Scale: 1.0
- Session: 65565885
- RTP-Info: url=rtsp://118.122.89.36:10084/live/ch10083121594790060557.sdp/trackID=2;seq=39900;rtptime=1637595010
RTSP实例解析的更多相关文章
- 【转】RTSP实例解析
原文网址:http://www.cnblogs.com/qq78292959/archive/2010/08/12/2077039.html. 核心提示:rtsp简介(ZT) Real Time St ...
- exec函数族实例解析
exec函数族实例解析 fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- [Reprint]C++普通函数指针与成员函数指针实例解析
这篇文章主要介绍了C++普通函数指针与成员函数指针,很重要的知识点,需要的朋友可以参考下 C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)
相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/ ...
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...
- easyUI:ComboTree and comselector使用实例解析
ComboTree 使用场景:故名思意,ComboTree是combox和Tree的结合体,在需要通过选择得到某一个node值的时候触发. 栗子: 定义: 使用标签创建树形下拉框. Comselect ...
- Maven--多模块依赖实例解析(五)
<Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...
随机推荐
- 1067 - Combinations
1067 - Combinations PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Giv ...
- Python Revisited Day10 (进程与线程)
目录 10.1 使用多进程模块 10.2 将工作分布到多个线程 <Python 3 程序开发指南>学习笔记 有俩种方法可以对工作载荷进行分布,一种是使用多进程,另一种是使用多线程. 10. ...
- [CodeLife]记毕业后第一份工作
记毕业后第一份工作与公司 写在前面--前言 已然临近21年五月,很快又是一年毕业季了,公司里来了应届的新人,忽然才意识到自己已经不是公司年龄最小的了((笑~).依稀还记得两年前,自己也是如他们那般青涩 ...
- CS5212Capstone|DP转VGA方案设计芯片|CS5212设计资料
CS5212是台湾CAPSTONE最新开发出一款用于DP转VGA方案设计芯片,其周围器件较少,设计简单,整体BOM成本低,市场性价比较高. CS5212内置MCU是工业标准8051核心单片机处理器.C ...
- Java高级程序设计笔记 • 【第6章 设计模式】
全部章节 >>>> 本章目录 6.1 设计模式 6.1.1 设计模式概述和分类 6.1.2 单列模式介绍 6.1.3 单例模式的实现 6.1.4 实践练习 6.2 单例模式 ...
- 疯狂的类构造器Builder模式,链式调用
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...
- CSS实战 模拟 新闻列表
总结:所使用的知识点:1.padding应用以及box-sizing: border-box自动内减撑大的盒子 2.ul>li 的使用,去除黑圆圈 3.a标签的使用,去除默认样式<下划线& ...
- 更加高效的遍历 Map
https://stackoverflow.com/questions/46898/how-do-i-efficiently-iterate-over-each-entry-in-a-java-map ...
- nginx 配置 ^~ 的用法妙处,403阻断
看看这个 location /css/ { alias D:/我的项目/2-代码/express/src/main/resources/static/css/ ; } 咋一看貌似没有毛病,访问 htt ...
- Samba服务器搭建与配置
Samba服务简介Samba的起源:对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议. 但是Linux和Wi ...