zoukankan      html  css  js  c++  java
  • 如何对EasyNVR分发出的rtsp流进行抓包分析?

    EasyNVR视频监控综合管理平台支持多种格式视频流的直播播放,包括HLS、FLV、RTSP等,今年我们在此基础上又开发了WebRTC格式的播放。EasyNVR的功能为拉取RTSP流分发出HLS、HTTP-FLV、RTMP、RTSP等流,为了熟悉RTSP流,因此针对RTSP流进行抓包分析。

    使用 WireShark 抓包分析如下,红色字体为请求,蓝色字体为响应:

    一、操作

    OPTIONS rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0
    CSeq: 2
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    
    RTSP/1.0 200 OK
    Server: tsingsee0.23.0
    CSeq: 2
    Public:DESCRIBE, ANNOUNCE, SETUP, PLAY, PAUSE, RECORD, TEARDOWN
    

    二、视频描述

    以下代表为视频流,控制的streamid=0,并且对应的类型为96:

    DESCRIBE rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0
    CSeq: 3
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Accept: application/sdp
    
    RTSP/1.0 200 OK
    CSeq: 3
    Date: Thu, 15 Jul 2021 10:34:36 CST
    Content-Type: application/sdp
    Content-Length: 473
    
    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    c=IN IP4 127.0.0.1
    t=0 0
    a=tool:lal 0.22.0
    
    m=video 0 RTP/AVP 96
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAIKw05AFAFuwEQAAA+kAAdTAjxgxkgA==,aO6yyLA=; profile-level-id=640016
    a=control:streamid=0
    
    

    以下代表为音频流,控制的streamid=1。并且对应的类型为97:

    m=audio 0 RTP/AVP 97
    b=AS:128
    a=rtpmap:97 MPEG4-GENERIC/48000/2
    a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1190
    a=control:streamid=1
    

    三、获取传输端口及通道

    以下streamed=0,代表为视频流服务端的端口为30004和30005传输数据:

    SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=0 RTSP/1.0
    CSeq: 4
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Transport: RTP/AVP;unicast;client_port=54374-54375
    
    RTSP/1.0 200 OK
    CSeq: 4
    Date: Thu, 15 Jul 2021 10:34:36 CST
    Session: 191201771
    Transport:RTP/AVP/UDP;unicast;client_port=54374-54375;server_port=30004-30005
    

    以下streamed=1,代表为音频流服务端的端口为30006和30007传输音频数据:

    SETUP rtsp://192.168.99.162:5544/live/YKiavBi7g/streamid=1 RTSP/1.0
    CSeq: 5
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Transport: RTP/AVP;unicast;client_port=54376-54377
    Session: 191201771
    
    RTSP/1.0 200 OK
    CSeq: 5
    Date: Thu, 15 Jul 2021 10:34:36 CST
    Session: 191201771
    Transport:RTP/AVP/UDP;unicast;client_port=54376-54377;server_port=30006-30007
    

    四、开始播放

    PLAY rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0
    CSeq: 6
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Session: 191201771
    Range: npt=0.000-
    
    RTSP/1.0 200 OK
    CSeq: 6
    Date: Thu, 15 Jul 2021 10:34:36 CST
    
    

    五、传输数据

    传输音频,使用的是30006端口,对应的类型为97,代表为音频类型。

    一般音频流存在的时候会有多个mark数据。

     传输视频,使用的是30004端口,对应的类型96,代表为视频类型。如下图:

    六、结束

    TEARDOWN rtsp://192.168.99.162:5544/live/YKiavBi7g RTSP/1.0
    CSeq: 7
    User-Agent: LibVLC/3.0.12 (LIVE555 Streaming Media v2016.11.28)
    Session: 191201771
    
    RTSP/1.0 200 OK
    CSeq: 7
  • 相关阅读:
    【JVM】模板解释器--如何根据字节码生成汇编码?
    你会swap吗,按值传递还是按引用?
    你了解实时计算吗?
    Hadoop的Server及其线程模型分析
    机会
    storm如何分配任务和负载均衡?
    storm基础框架分析
    storm如何保证at least once语义?
    学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
    学习笔记:Twitter核心数据类库团队的Hadoop优化经验
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/15630036.html
Copyright © 2011-2022 走看看