以下是某地IPTV的RTSP协商过程:

1、DESCRIBE

请求:

  1. //方法和媒体URL
  2. 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
  3. //协商用于描述媒体信息协议
  4. Accept: application/sdp
  5. CSeq: 1
  6. //User Agnet信息,显示是中兴的服务器,1.0的版本。如果是Helix服务器的话会有Helix 服务器的标识。
  7. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
  8. //主要用于NAT穿透
  9. x-NAT:2.1.1.100:20081
  10. x-zmssRtxSdp: yes

响应:

  1. RTSP/1.0 200 OK
  2. //应答编号
  3. Server: ZXUSS100 1.0
  4. Cache-Control: no-cache
  5. Content-Base: rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/
  6. //内容长度信息
  7. Content-Length: 320
  8. //描述内容信息所用的协议
  9. Content-Type: application/sdp
  10. CSeq: 1
  11. Date: Wed, 29 Sep 2010 10:20:38 GMT
  12. Expires: Wed, 29 Sep 2010 10:20:38 GMT
  13. // SDP 描述信息
  14. v=0
  15. o=- 296874273 1 IN IP4 118.122.89.27
  16. s=envivio
  17. c=IN IP4 0.0.0.0
  18. b=AS:1500
  19. t=0 0
  20. a=range:clock=20100929T095038.00Z-20100929T102038.00Z
  21. m=video 5140 RTP/AVPF 33 96
  22. a=control:trackID=2
  23. a=rtpmap:33 MP2T/90000
  24. a=3GPP-Adaptation-Support:5
  25. a=rtcp-fb:33 nack
  26. a=rtpmap:96 rtx/90000
  27. a=fmtp:96 apt=33;rtx-time=0

2、SETUP

请求:

  1. //用于建立RTSP连接,协商传输用的协议。
  2. SETUP rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2 RTSP/1.0
  3. CSeq: 2
  4. 3GPP-Adaptation: url=rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2;size=1061400;target-time=2200
  5. 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
  6. // MP2T/RTP/UDP表示是TS流用于RTP打包,基于UDP传输。MP2T/RTP/TCP表示是TS流用于RTP打包,基于TCP。
  7. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347

响应:

  1. RTSP/1.0 200 OK
  2. Server: ZXUSS100 1.0
  3. CSeq: 2
  4. Date: Wed, 29 Sep 2010 10:20:38 GMT
  5. Expires: Wed, 29 Sep 2010 10:20:38 GMT
  6. Session: 65565885
  7. Transport: MP2T/RTP/UDP;unicast;destination=2.1.1.100;client_port=8360-8361;server_port=13306-13307;source=118.122.89.29
  8. // 通过协商MP2T/RTP/UDP表示是TS流用于RTP打包,基于UDP传输。server端端口:13306-13307。client端端口:8360-8361
  9. 3GPP-Adaptation:url=rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp/trackID=2;size=1061400;target-time=2200

3、PLAY

请求:

  1. //播放视频。对于有些视频可能会分别要对音频视频进行play。
  2. 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
  3. CSeq: 3
  4. Session: 65565885
  5. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
  6. Scale: 1.0
  7. //npt=end-在IPTV2.0里面有其自身的定义(可参看上海电信IPTV2.0标准)
  8. Range: npt=end-

响应:

  1. RTSP/1.0 200 OK
  2. Server: ZXUSS100 1.0
  3. CSeq: 3
  4. Range: npt=end-
  5. Scale: 1.0
  6. Session: 65565885
  7. RTP-Info: url=rtsp://118.122.89.29:13306/live/ch10083121594790060557.sdp/trackID=2

play的另一种用法(快进和快退)。

请求:

  1. //play的另外一种用法。用于快进和快退。
  2. 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
  3. CSeq: 43
  4. Session: 65565885
  5. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
  6. //Scale: -32.0,表示以32倍速快退。Scale: 32.0,表示以32倍速快进。
  7. Scale: -32.0
  8. Range: npt=now-

响应:

  1. RTSP/1.0 200 OK
  2. Server: ZXUSS100 1.0
  3. CSeq: 43
  4. Range: clock=20100929T102609.02Z-20100929T095637.75Z
  5. Scale: -32.0
  6. Session: 65565885
  7. RTP-Info: url=rtsp://118.122.89.36:10084/live/ch10083121594790060557.sdp/trackID=2;seq=22277;rtptime=1792329138

4、GET_PARAMETER

请求:

  1. //获取当前的一些播放参数。
  2. 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
  3. CSeq: 44
  4. Session: 65565885
  5. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
  6. //请求时移的范围
  7. x-Timeshift_Range
  8. //获取当前的时间点
  9. x-Timeshift_Current

响应:

  1. RTSP/1.0 200 OK
  2. //返回当前的媒体信息。
  3. Server: ZXUSS100 1.0
  4. CSeq: 44
  5. Session: 65565885
  6. x-Timeshift_Range: clock=20100929T095638.83Z-20100929T102638.83Z
  7. x-Timeshift_Current: clock=20100929T102530.20Z;rtptime=1788844914
  8. //中间省去了45,46,47三个包。通过CSeq: 48字段可以看出来

5、PLAY

请求:

  1. //用于恢复正常的播放速度。
  2. 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
  3. CSeq: 48
  4. Session: 65565885
  5. User-Agent:ZTE Ltd.co RTSP protocal verion 1.0 guid-2.1.1.100/B519D290-C0EC-EE35-7368-893BE4C0B347
  6. Scale: 1.0
  7. Range: npt=beginning-

响应:

  1. RTSP/1.0 200 OK
  2. Server: ZXUSS100 1.0
  3. CSeq: 48
  4. Range: clock=20100929T095730.00Z-20100929T102730.61Z
  5. //可以时移的范围。
  6. Scale: 1.0
  7. Session: 65565885
  8. RTP-Info: url=rtsp://118.122.89.36:10084/live/ch10083121594790060557.sdp/trackID=2;seq=39900;rtptime=1637595010

RTSP实例解析的更多相关文章

  1. 【转】RTSP实例解析

    原文网址:http://www.cnblogs.com/qq78292959/archive/2010/08/12/2077039.html. 核心提示:rtsp简介(ZT) Real Time St ...

  2. exec函数族实例解析

    exec函数族实例解析 fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的 ...

  3. [Reprint] C++函数模板与类模板实例解析

    这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下   本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...

  4. [Reprint]C++普通函数指针与成员函数指针实例解析

    这篇文章主要介绍了C++普通函数指针与成员函数指针,很重要的知识点,需要的朋友可以参考下   C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般 ...

  5. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  6. Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

    相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/ ...

  7. Android开发之IPC进程间通信-AIDL介绍及实例解析

    一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...

  8. easyUI:ComboTree and comselector使用实例解析

    ComboTree 使用场景:故名思意,ComboTree是combox和Tree的结合体,在需要通过选择得到某一个node值的时候触发. 栗子: 定义: 使用标签创建树形下拉框. Comselect ...

  9. Maven--多模块依赖实例解析(五)

    <Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...

随机推荐

  1. 1067 - Combinations

    1067 - Combinations   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Giv ...

  2. Python Revisited Day10 (进程与线程)

    目录 10.1 使用多进程模块 10.2 将工作分布到多个线程 <Python 3 程序开发指南>学习笔记 有俩种方法可以对工作载荷进行分布,一种是使用多进程,另一种是使用多线程. 10. ...

  3. [CodeLife]记毕业后第一份工作

    记毕业后第一份工作与公司 写在前面--前言 已然临近21年五月,很快又是一年毕业季了,公司里来了应届的新人,忽然才意识到自己已经不是公司年龄最小的了((笑~).依稀还记得两年前,自己也是如他们那般青涩 ...

  4. CS5212Capstone|DP转VGA方案设计芯片|CS5212设计资料

    CS5212是台湾CAPSTONE最新开发出一款用于DP转VGA方案设计芯片,其周围器件较少,设计简单,整体BOM成本低,市场性价比较高. CS5212内置MCU是工业标准8051核心单片机处理器.C ...

  5. Java高级程序设计笔记 • 【第6章 设计模式】

    全部章节   >>>> 本章目录 6.1 设计模式 6.1.1 设计模式概述和分类 6.1.2 单列模式介绍 6.1.3 单例模式的实现 6.1.4 实践练习 6.2 单例模式 ...

  6. 疯狂的类构造器Builder模式,链式调用

    疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...

  7. CSS实战 模拟 新闻列表

    总结:所使用的知识点:1.padding应用以及box-sizing: border-box自动内减撑大的盒子 2.ul>li 的使用,去除黑圆圈 3.a标签的使用,去除默认样式<下划线& ...

  8. 更加高效的遍历 Map

    https://stackoverflow.com/questions/46898/how-do-i-efficiently-iterate-over-each-entry-in-a-java-map ...

  9. nginx 配置 ^~ 的用法妙处,403阻断

    看看这个 location /css/ { alias D:/我的项目/2-代码/express/src/main/resources/static/css/ ; } 咋一看貌似没有毛病,访问 htt ...

  10. Samba服务器搭建与配置

    Samba服务简介Samba的起源:对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议. ​ 但是Linux和Wi ...