zoukankan      html  css  js  c++  java
  • rtsp协议应用

    转载自:http://www.rosoo.net/a/201108/14860.html,尊重原创!
    live555 项目[5] 中的RTSP 服务器实例mediaServer 使用了 实时传输协议 RTP 、 实时传输控制协议 RTCP 和 实时流协议 RTSP 三种流媒体协议。下面首先介绍RTSP 连接建立及请求响应过程,然后介绍RTP 数据包的封装及发送过程,最后分析RTCP 包的接收处理及发送等相关内容
     

    1.   流媒体协议的具体应用

    live555 项目[5] 中的RTSP 服务器实例mediaServer 使用了 实时传输协议 RTP 、 实时传输控制协议 RTCP 和 实时流协议 RTSP 三种流媒体协议。下面首先介绍RTSP 连接建立及请求响应过程,然后介绍RTP 数据包的封装及发送过程,最后分析RTCP 包的接收处理及发送等相关内容。

    1.1.   RTSP 连接建立及请求响应过程

    mediaServer 服务器运行时,先等待客户端连接,当客户端(支持RTSP 协议的流媒体播放器)发起URL 请求(如输入rtsp://localhost/1.mpg )时,服务器建立RTSP 连接,它是基于TCP 的可靠连接。mediaServer 在刚建立的连接上等待客户发起RTSP 会话,包括OPTIONS 、DESCRIBE 、SETUP 、PLAY 等一系列请求。mediaServer 收到请求后发送响应报文的过程将详述如下。

    1.1.1.     OPTIONS 请求及响应报文

    连接建立后,客户端向服务器发送OPTIONS 请求,服务器发出的响应报文中包括能提供的方法。如表2 所示,第一项是请求报文,第二项是响应报文。响应报文的最后给出了服务器提供的可用方法。

    表2 OPTIONS 请求及响应报文

    OPTIONS rtsp://localhost/1.mpg RTSP/1.0

    CSeq: 1

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 1

    Date: Tue, Apr 14 2009 04:27:44 GMT

    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

    1.1.2.     DESCRIBE 请求及响应报文

    服务器收到DESCRIBE 请求后,如果请求的资源存在,则服务器回应一些对此会话的描述信息(sdp) ,包括视音频的相关信息。从表3 中可知,视频子会话对应track1 ,音频子会话对应track2 。

    表3 DESCRIBE 请求及响应报文

    DESCRIBE rtsp://localhost/1.mpg RTSP/1.0

    CSeq: 2

    Accept: application/sdp

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 2

    Date: Tue, Apr 14 2009 04:27:44 GMT

    Content-Base: rtsp://127.0.0.1/1.mpg/

    Content-Type: application/sdp

    Content-Length: 447

    v=0

    o=- 328484373446 1 IN IP4 100.0.0.101

    s=MPEG-1 or 2 Program Stream, streamed by the LIVE555 Media Server

    i=1.mpg

    t=0 0

    a=tool:LIVE555 Streaming Media v2009.03.22

    a=type:broadcast

    a=control:*

    a=range:npt=0-410.134

    a=x-qt-text-nam:MPEG-1 or 2 Program Stream, streamed by the LIVE555 Media Server

    a=x-qt-text-inf:1.mpg

    m=video 0 RTP/AVP 32

    c=IN IP4 0.0.0.0

    a=control:track1

    m=audio 0 RTP/AVP 14

    c=IN IP4 0.0.0.0

    a=control:track2

    1.1.3.     SETUP 请求及响应报文

    mpg 类型文件包含的音频和视频数据是分开传送的,所以客户端向服务器发送两个 SETUP 请求,分别用于建立视频和音频的 RTP 及 RTCP 连接。从接收的 SETUP 请求中获取会话属性、传输模式及客户端 RTP 和 RTCP 端口号,然后分别建立视频及音频子会话的 RTP 及 RTCP 连接。从表 4 可知, UDP 端口对 6970 和 6971 分别用于传送视频数据对应的 RTP 包和 RTCP 包,而端口对 6972 和 6973 分别用于传送音频数据对应的 RTP 包和 RTCP 包。会话描述符( session id )为 1 ,服务器将这些参数组装成响应消息返回给客户端。

    表4 SETUP 请求及响应报文

    SETUP rtsp://127.0.0.1/1.mpg/track1 RTSP/1.0

    CSeq: 3

    Transport: RTP/AVP;unicast;client_port=59532-59533

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 3

    Date: Tue, Apr 14 2009 04:27:44 GMT

    Transport:RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;

    client_port=59532-59533;server_port=6970-6971

    Session: 1

    SETUP rtsp://127.0.0.1/1.mpg/track2 RTSP/1.0

    CSeq: 4

    Transport: RTP/AVP;unicast;client_port=59534-59535

    Session: 1

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 4

    Date: Tue, Apr 14 2009 04:27:44 GMT

    Transport:RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;

    client_port=59534-59535;server_port=6972-6973

    Session: 1

    1.1.4. PLAY 请求及响应报文

    表 5 显示了服务器会话发送给客户会话的 RTP 信息,包括视音频的 URL 请求地址、起始序列号和 RTP 时间戳信息。

    表5 PLAY 请求及响应报文

    PLAY rtsp://127.0.0.1/1.mpg/ RTSP/1.0

    CSeq: 5

    Session: 1

    Range: npt=0.000-410.134

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 5

    Date: Tue, Apr 14 2009 04:27:44 GMT

    Range: npt=0.000-410.134

    Session: 1

    RTP-Info:url=rtsp://127.0.0.1/1.mpg/track1;seq=31382;rtptime=4728,

    url=rtsp://127.0.0.1/1.mpg/track2;seq=18774;rtptime=8208

    1.1.5.     TEARDOWN 请求及响应报文

    流媒体数据接收完毕后,客户端会发送 TEARDOWN 请求,此时服务器关闭该 RTSP 会话并发送响应报文,报文内容如表 6 所示。

    表6 TEARDOWN 请求及响应报文

    TEARDOWN rtsp://127.0.0.1/1.mpg/ RTSP/1.0

    CSeq: 6

    Session: 1

    User-Agent: openRTSP.exe (LIVE555 Streaming Media v2009.03.22)

    RTSP/1.0 200 OK

    CSeq: 6

    Date: Tue, Apr 14 2009 05:06:27 GMT

  • 相关阅读:
    vue:自定义指令
    vue去掉严格开发,即去掉vue-cli安装时的eslint
    vue路由6:导航钩子
    vue路由5:命名视图
    vue路由3:子路由
    vue组件通信之任意级组件之间的通信
    vue中组件通信之子父通信
    令狐冲也是个情场高手啊
    Java —— 时区(夏令时)问题
    PL/SQL 如何导出INSERT语句
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/2874958.html
Copyright © 2011-2022 走看看