SIPp之播放rtp语音/视频流
来源:互联网 发布:怎么彻底清除手机数据 编辑:程序博客网 时间:2024/05/17 17:46
欢迎大家转载,为保留作者成果,转载请注明出处,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脚本:
SEQUENTIAL50000;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.20prepare_pcap.c: Ignoring non UDP packet!In pcap pcap/G711u.pcap, npkts 3789max pkt length 180base port 10546Warning: 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,共同探讨哦!
群共享里可能会有你需要的资料!
0 0
- SIPp之播放rtp语音/视频流
- SIPp之播放rtp语音/视频流
- 【转载】SIPp之播放rtp语音/视频流
- RTP发送音视频流vlc播放
- DM365发送264RTP视频流VLC播放成功
- 播放抓取的H263 RTP视频
- 从后台下载语音/视频并播放
- Qt5.4.1播放视频语音文件
- 视频和语音播放(进行中)
- H264 视频流rtp打包之我理解
- VLC播放 RTP流的 音频 视频的 sdp描述文件
- VLC播放 RTP流的 音频 视频的 sdp描述文件
- VLC播放 RTP流的 音频 视频的 sdp描述文件
- RTP - 视频流广播
- RTP - 视频流广播
- RTP - 视频流广播
- RTP - 视频流广播
- RTP - 视频流广播
- SQL ExecuteNonQuery(), ExecuteScalar()返回值及DataAdapter
- Grand Central Dispatch (GCD) 用法详细介绍
- Git基本命令
- 贪心算法(2)
- 在VC6.0-MFC中嵌入HALCON10代码 最小工程
- SIPp之播放rtp语音/视频流
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别(转)
- Hibernate01
- jsp01-基本认识
- UDP学习笔记要点心得
- ArcGIS 粘帖数据 唯一主键错误
- android涂鸦绘图功能部分实现
- sda免费打扫房间都是看了就飞快的
- 打扫房间都是开房间看房价肯定是