loadrunner rtsp协议模拟

  1. RTSP 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数据传输.
  2. RTSP信令交互过程

    C表示rtsp客户端, S表示rtsp服务端

        1. C->S:OPTION request //询问S有哪些方法可用
        1. S->C:OPTION response //S回应信息中包括提供的所有可用方法
    
        2. C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息
        2. S->C:DESCRIBE response //S回应媒体初始化描述信息, 主要是sdp
    
        3. C->S:SETUP request //设置会话的属性, 以及传输模式, 提醒S建立会话
        3. S->C:SETUP response //S建立会话, 返回会话标识符, 以及会话相关信息
    
        4. C->S:PLAY request //C请求播放
        4. S->C:PLAY response //S回应该请求的信息
    
        S->C:发送流媒体数据
    
        5. C->S:TEARDOWN request //C请求关闭会话
        5. S->C:TEARDOWN response //S回应该请求
  3. 通过ffmpeg播放视频。

  

  

  4.使用wireshark抓包。作为rtsp报文的基准数据。

   5.使用loadrunner新建win socket action。编辑脚本内容如下:

#include "lrs.h"

Action() { 

    int rc = 0;

    rc = lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=192.168.1.51:554", LrsLastArg);

    if (rc==0)

        lr_output_message("Socket was successfully created ");

    else

        lr_output_message("An error occurred while creating the socket, Error Code: %d", rc);

     lrs_send("socket1", "option", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );

     lrs_receive("socket1", "option200",  LrsLastArg); 

     lrs_send("socket1", "describe", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );

     lrs_receive("socket1", "describe200", LrsLastArg); 

    //setup
     lrs_send("socket1", "setup", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );

     lrs_receive("socket1", "setup200", LrsLastArg);
     lrs_save_param("socket1", NULL, "session", 155, 8);
     lr_output_message ("session: %s", lr_eval_string("<<session>>"));
    // lr_save_string("{session}", "session1");
    //play

     lrs_send("socket1", "play", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );
     lrs_receive_ex("socket1", "play200", "NumberOfBytesToRecv=8000", LrsLastArg);
     //lrs_receive("socket1", "play200",  LrsLastArg); 

     //lr_think_time(20);

     //lrs_send("socket1", "pause", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );
     //lrs_receive_ex("socket1", "pause200","NumberOfBytesToRecv=1000", LrsLastArg);

    //teardown
     lrs_send("socket1", "teardown", "TargetSocket=rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0",LrsLastArg  );

     lrs_receive_ex("socket1", "teardown200","NumberOfBytesToRecv=500",  LrsLastArg); 

     lrs_close_socket("socket1"); 

    return 0;
}

  

  6.编辑工程data.ws文件,写入如下内容(信令消息来源于上一步抓包内容):

;WSRData 2 1

send option 518
    "OPTIONS rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0\r\n"
    "CSeq: 1\r\n"
    "User-Agent: Lavf57.51.103\r\n"
    "\r\n"

recv option200 152
    "RTSP/1.0 200 OK\r\n"
    "CSeq: 1\r\n"
    "Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER\r\n"

send describe 250
        "DESCRIBE rtsp://192.168.1.51:554/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj RTSP/1.0\r\n"
        "Accept: application/sdp\r\n"
        "CSeq: 2\r\n"
        "User-Agent: Lavf57.51.103\r\n"
        "\r\n"

recv describe200 637

    "RTSP/1.0 200 OK\r\n"
    "CSeq: 2\r\n"
    "Content-Base: rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/\r\n"
    "Content-Type: application/sdp\r\n"

    "v=0\r\n"
    "o=- 1490233027406551 1 IN IP4 192.168.1.51\r\n"
    "s=MPEG Transport Stream, streamed by the LIVE555 Media Server\r\n"
    "i=FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj\r\n"
    "t=0 0\r\n"
    "a=tool:LIVE555 Streaming Media v2016.09.22\r\n"
    "a=type:broadcast\r\n"
    "a=control:*\r\n"
    "a=range:npt=0-\r\n"
    "a=x-qt-text-nam:MPEG Transport Stream, streamed by the LIVE555 Media Server\r\n"
    "a=x-qt-text-inf:FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj\r\n"
    "m=video 0 RTP/AVP 33\r\n"
    "c=IN IP4 0.0.0.0\r\n"
    "b=AS:5000\r\n"
    "a=control:track1\r\n"

send setup 300
    "SETUP rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/ RTSP/1.0\r\n"
    "Transport: RTP/AVP/TCP;unicast;interleaved=0-1\r\n"
    "CSeq: 3\r\n"
    "User-Agent: Lavf57.51.103\r\n"
    "\r\n"
recv setup200 178
    "RTSP/1.0 200 OK\r\n"
    "CSeq: 3\r\n"
    "Transport: RTP/AVP/TCP;unicast;destination=0.0.0.0;source=0.0.0.0;interleaved=0-1\r\n"
    "\r\n"

send play 500
    "PLAY rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/ RTSP/1.0\r\n"
    "Range: npt=0.000-\r\n"
    "CSeq: 4\r\n"
    "User-Agent: Lavf57.51.103\r\n"
    "Session: <session>\r\n"
    "\r\n"

recv play200 200
    "RTSP/1.0 200 OK\r\n"
    "CSeq: 4\r\n"
    "Range: npt=0.000-\r\n"
    "RTP-Info: url=rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/track1\r\n"
    "\r\n"

send pause 200
    "PAUSE rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/ RTSP/1.0\r\n"
    "CSeq: 5\r\n"
    "User-Agent: Lavf57.51.103\r\n"
    "Session: <session>\r\n"
    "\r\n"

recv pause200 10018
    "RTSP/1.0 200 OK\r\n"
    "CSeq: 5\r\n"
    "Session: <session>\r\n"
    "\r\n"

send teardown 200
    "TEARDOWN rtsp://192.168.1.51:10754/FGElMXXgGRd8KKBSmV8JcJUWHQkYiwTfj/ RTSP/1.0\r\n"
    "CSeq: 6\r\n"
    "User-Agent: Lavf57.51.103\r\n"
    "Session: <session>\r\n"
    "\r\n"

recv teardown200 65
    "RTSP/1.0 200 OK\r\n"
    "CSeq: 6\r\n"
    "Session: <session>\r\n"
    "\r\n"

-1

  7.调试结果

  也可以在调试的时候,抓包对比之前的抓包。验证消息的正确性

时间: 2024-08-08 01:26:19

loadrunner rtsp协议模拟的相关文章

流媒体传输协议系列之--RTSP协议详解

流媒体传输协议介绍 一.RTSP协议介绍 什么是rtsp? RTSP协议以客户服务器方式工作,,如:暂停/继续.后退.前进等.它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制, 因此 RTSP 又称为"因特网录像机遥控协议". RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealN

RTSP协议学习笔记

一.        RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTS

RTSP协议详解

RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制.服 务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟.而且允许同时多个串流需求控制(Multicast),除了可以降低服务器端的

HTTP协议/RTSP协议/RTMP协议的区别

RTSP. RTMP.HTTP的共同点.区别 共同点: 1:RTSP RTMP HTTP都是在应用应用层. 2: 理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP,做点播用HTTP.做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了. 区别: 1:HTTP: 即超文本传送协议(ftp即文件传输协议). HTTP:(Real Time Streaming Protocol),实时流传输协议. HTTP全称Routing Table Maintena

RTSP协议

Real Time Streaming Protocol 实时流协议 RTSP 协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制, 如:暂停.继续.后退.前进等. RTSP 协议简介 要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体服务器(media server).媒体服务 器与媒体播放器的关系是服务器与客户的关系. RTSP 仅仅是使媒体播放器能控制多媒体流的传送.因此,RTSP

RTSP协议媒体数据发包相关的细节

最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交互流程去读rfc2326就可以了,这里就不赘述了.这里说一些实际用VLC/MPlayer进行测试时,发现的与媒体数据收发相关的细节问题,如下 1,SETUP请求之后,播放器会向在SETUP请求中协商的通讯端口发送NAT穿透UDP消息(模式UDP作为底层传输协议时),其作用如下 当播放器与服务器之间隔

RTSP协议介绍

1. 实时流协议RTSP RTSP[3]协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续.后退.前进等.因此 RTSP 又称为"因特网录像机遥控协议". 1.1.   RTSP协议简介 要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体服务器(media server).媒体服务器与媒体播放器的关系是服务器与客户的关系. 媒体服务器与普通的万维网服务器的最大区别

RTSP协议学习

目录 RTSP协议学习笔记... 1 第一部分:RTSP协议... 3 一.       RTSP协议概述... 3 二.       RTSP协议与HTTP协议区别... 3 三.       RTSP重要术语... 4 1.       集合控制(Aggregatecontrol ):. 4 2.       实体(Entity):... 4 3.       容器文件(Containerfile):... 4 4.       RTSP会话(RTSP session ):... 4 四. 

【转】RTSP协议学习笔记

第一部分:RTSP协议 一. RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演"网络远程控制"的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是: 1> 客户端连