SIPp之播放rtp语音/视频流

欢迎大家转载,为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也可以下载!如果你没有积分,可以联系我!


经过多天的努力,用脚本呼叫eyebeem电话,在电话端终于听到录制的语音包了,费话不多说,描述环境:

192.168.0.20是一个有注册认证的SIP服务器,服务器端口为5060;
192.168.0.101是我在windows安装的cygwin软件后 测试机器;
branchc1.xml 中的50000 呼叫 eyebeem号码50010
sipp版本: SIPp v3.2-TLS-PCAP, version unknown, built Jul 17 2013, 21:50:11

user.csv脚本:
SEQUENTIAL
50000;50010;[authentication username=50000 password=50000]



流程如下:
                              
    REGISTER ----------> SIP_server     
         401 <---------- SIP_server       
    REGISTER ----------> SIP_server        
         200 <---------- SIP_server        
       INVITE ----------> SIP_server       
         407 <---------- SIP_server       
         ACK ----------> SIP_server       
      INVITE ----------> SIP_server -- INVITE--------->50010(eyebeem)     
         100 <---------- SIP_server---100 <---------- 50010(eyebeem)  
         180 <---------- SIP_server---180 <---------- 50010(eyebeem)    
         200 <---------- SIP_server---200 <---------- 50010(eyebeem)
         ACK ----------> SIP_server---ACK ---------->50010(eyebeem) 
       -----------RTP语音流(wireshark抓的语音包G711u.pcap)-----------
       Pause [    50.0s]      
         BYE ---------->       
         200 <----------       

脚本如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">

<!-- This program is free software; you can redistribute it and/or  -->
<!-- modify it under the terms of the GNU General Public License as -->
<!-- published by the Free Software Foundation; either version 2 of the-->
<!-- License, or (at your option) any later version.            -->
<!--                                                            -->
<!-- This program is distributed in the hope that it will be useful, -->
<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of -->
<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -->
<!-- GNU General Public License for more details.                -->
<!--                                                            -->
<!-- You should have received a copy of the GNU General Public License-->
<!-- along with this program; if not, write to the              -->
<!-- Free Software Foundation, Inc.,                            -->
<!-- 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA     -->
<!--                                                           -->
<!--                 Sipp default 'branchc' scenario.          -->
<!--                                                           -->
<!-- 首先发送SIP注册消息,Register。里面的From与To是注册的号码  -->
<scenario name="branch_client">
  <send retrans="500">
    <![CDATA[
 
      REGISTER sip:[remote_ip] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number];rport
      To: [field0] <sip:[field0]@[remote_ip]:[remote_port]>
      Call-ID: [call_id]
      CSeq: 1 REGISTER
      Contact: sip:[field0]@[local_ip]:[local_port]
      Content-Length: 0
      Expires: 300
    ]]>
  </send>

  <recv response="100" ptional="true">
  </recv>

  <!--  SIPp会收到来自AST要求验证的401 消息体,Recv意思为Receive,接收到来自AST的401要求验证的消息,Next为如果收到401,那么转至Label为1的地方进行操作 -->
  <recv response="401" auth="true" next="1">
  </recv>

  <!--  send invite with authentication messages -->
  <!--  开始发送Register消息,里面将把验证的密码消息发送给对方,在消息体里面是抓不到密码消息的,而且已经被md5方式加密过。-->

  <label id="1"/>
  <send retrans="500">
    <![CDATA[
 
      REGISTER sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number];rport
      To: [field0] <sip:[field0]@[remote_ip]:[remote_port]>
      Call-ID: [call_id]
      CSeq: 2 REGISTER
      Contact: sip:[field0]@[local_ip]:[local_port]
      [field2]
      Content-Length: [len]
      Expires: 3600
    ]]>
  </send>

  <recv response="100" ptional="true">
  </recv>

  <!--   收到来自AST的200 ACK消息后,系统转至等待1000ms,或者可以直接去掉该设置 -->

  <recv response="200"  next="2">
  </recv>

  <label id="2"/>
  <pause milliseconds="1000"/>
 
 
  <send retrans="500">
    <![CDATA[

      INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>
      Call-ID: [call_id]
      CSeq: 1 INVITE
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Type: application/sdp
      Content-Length: [len]

       v=0
      o=[local_ip] 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[local_ip_type] [local_ip]
      t=0 0
      m=audio [auto_media_port] RTP/AVP 8 0 101
      a=rtpmap:8 PCMA/8000
      a=rtpmap:0 PCMU/8000
      a=rtpmap:101 telephone-event/8000
      a=fmtp:101 0-16
      a=recvonly
    ]]>
  </send>

  <recv response="407" auth="true">
  </recv>

  <!-- By adding rrs="true" (Record Route Sets), the route sets    -->
  <!-- are saved and used for following messages sent. Useful to test-->
  <!-- against stateful SIP proxies/B2BUAs.                     -->
  <!-- Packet lost can be simulated in any send/recv message by  -->
  <!-- by adding the 'lost = "10"'. Value can be [1-100] percent.-->
  <send>
    <![CDATA[

      ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 1 ACK
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Length: 0
    ]]>
  </send>

  <send retrans="500">
    <![CDATA[

      INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>
      Call-ID: [call_id]
      CSeq: 2 INVITE
      Contact: sip:[field0]@[local_ip]:[local_port]
      [field2]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Type: application/sdp
      Content-Length: [len]

       v=0
      o=[local_ip] 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[local_ip_type] [local_ip]
      t=0 0
      m=audio [auto_media_port] RTP/AVP 8 0 101
      a=rtpmap:8 PCMA/8000
      a=rtpmap:0 PCMU/8000
      a=rtpmap:101 telephone-event/8000
      a=fmtp:101 0-16
      a=recvonly
    ]]>
  </send>

  <recv response="100" ptional="true">
  </recv>

  <recv response="183" ptional="true">
  </recv>

  <recv response="180" ptional="true">
  </recv>

  <recv response="200" rtd="true">
  </recv>

  <!-- Packet lost can be simulated in any send/recv message by -->
  <!-- by adding the 'lost = "10"'. Value can be [1-100] percent. -->
  <send>
    <![CDATA[

      ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 2 ACK
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Length: 0
    ]]>
  </send>

  <!-- Play a pre-recorded PCAP file (RTP stream)           -->
  <nop>
    <action>
      <exec play_pcap_audio="pcap/G711u.pcap"/>
    </action>
  </nop>


  <!-- Pause 8 seconds, which is approximately the duration of the-->
  <!-- PCAP file                                            -->
  <pause milliseconds="50000"/>

 
  <!-- The 'crlf' option inserts a blank line in the statistics report.-->
  <send retrans="500">
    <![CDATA[

      BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 2 BYE
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      Subject: Performance Test
      Content-Length: 0
    ]]>
  </send>

  <recv response="200" crlf="true">
  </recv>

 <pause milliseconds="5000"/>


  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

  <!-- definition of the call length repartition table (unit is ms)     -->

  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>



     
执行结果如下:

$ sipp -r 1 -i 192.168.0.102 -l 1 -sf branchc1.xml -inf user.csv 192.168.0.20
prepare_pcap.c: Ignoring non UDP packet!
In pcap pcap/G711u.pcap, npkts 3789
max pkt length 180
base port 10546
Warning: open file limit > FD_SETSIZE; limiting max.
# of open files to FD_SETSIZE = 64
       Resolving remote host '192.168.0.20'... Done.
----------------------- Scenario Screen -------- [1-9]: Change Screen --
  Call-rate(length)   Port   Total-time  Total-calls  Remote-host
   1.0(0 ms)/1.000s   5060     144.66 s            3  192.168.0.20:5060(UDP)

  0 new calls during 21.408 s period     1 ms scheduler resolution
  1 calls (limit 1)                      Peak was 1 calls, after 1 s
  0 Running, 0 Paused, 0 Woken up
  0 dead call msg (discarded)            1 out-of-call msg (discarded)
  3 open sockets
  7809 Total RTP pckts sent              0.000 last period RTP rate (kB/s)

                                 Messages  Retrans   Timeout   Unexpected-Msg
    REGISTER ---------->         3         0         0
         100 <----------         0         0         0         0
         401 <----------         3         0         0         0
    REGISTER ---------->         3         0         0
         100 <----------         0         0         0         0
         200 <----------         3         0         0         0
       Pause [   1000ms]         3                             0
      INVITE ---------->         3         0         0
         407 <----------         3         0         0         0
         ACK ---------->         3         0
      INVITE ---------->         3         0         0
         100 <----------         3         0         0         0
         183 <----------         0         0         0         0
         180 <----------         3         0         0         0
         200 <----------  E-RTD1 3         0         0         0
         ACK ---------->         3         0
              [ NOP ]
       Pause [    50.0s]         3                             0
         BYE ---------->         2         0         0
         200 <----------         2         0         0         0

       Pause [   5000ms]         2                             0
--------------------------- Test Terminated -----------------


------------- Statistics Screen ------- [1-9]: Change Screen--
       Start Time             | 2013-07-25   20:20:35:856    1374754835.856243
  Last Reset Time        | 2013-07-25   20:22:39:148    1374754959.148399
      Current Time           | 2013-07-25   20:23:00:557    1374754980.557117
-------------------------+---------------------------+--------
          Counter Name           | Periodic value            |     Cumulative value
-------------------------+---------------------------+---------
          Elapsed Time           | 00:00:21:408              | 00:02:24:700
             Call Rate              |    0.000 cps              |    0.021 cps
-------------------------+---------------------------+-------
  Incoming call created  |        0                  |        0
  OutGoing call created  |        0                  |        3
     Total Call created     |                           |        3
            Current Call           |        1                  |
-------------------------+---------------------------+----------
         Successful call        |        0                  |        2
             Failed call            |        0                  |        0
-------------------------+---------------------------+---------
        Response Time 1        | 00:00:00:000              | 00:00:03:336
            Call Length            | 00:00:05:113              | 00:00:40:770
------------------------------ Test Terminated ----------------



以后再尝试视频包是否能在EYEBEE中播放视频与音频,到时候成功了再把脚本贴出来啊!

好了,下面是广告时间:
测试SIP协议的同志们可以加入群: 323827101,共同探讨哦!
群共享里可能会有你需要的资料!
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值