逸逸记事
逸逸记事

我的分类(专题)

首页(175)
儿子(9)
SIP技术(9)
Web2.0(12)
摄影和DVD(8)
软件开发随笔(18)
名古屋打工生活(11)
微软技术开发(47)
Java技术(12)
加拿大移民生活(20)
生活点滴(6)
第一份工作--上海贝尔(18)
完成项目(13)
回国后的生活(0)


最新日志
独行者
终于知道什么叫外包了
人生悲哀之事
水晶报表中显示动态图片
水晶报表中的简单参数设置
怀念下小黑
dotnet中的数据连接Timeout
老板的思路
又买房了
交通事故

最新回复
回复:独行者
回复:怀念下小黑
回复:老板的思路
回复:mjSip学习笔记
回复:老板的思路
回复:dotnet中的数据连接Timeo
回复:mjSip学习笔记
回复:交通事故
回复:交通事故
回复:又买房了

留言板

签写新留言

您好,很希望问您一个关于jain-sip
生活经历就是最大的财富,羡哦~
java的Web开发问题
回复:疑问
IT还不如妓女呢,呵呵
myjavaserver的空间
求助
您的子域名已开通

统计
blog名称:人在旅途
日志总数:175
评论数量:505
留言数量:13
访问次数:1676728
建立时间:2005年12月7日

链接

 

生命是过客,人在旅途。奶奶是信基督教的,没啥文化,却养育了四子二女,还带过九个孙辈。老人家对生命的看法就是“人都是客人,迟早要回去的。”就以《人在旅途》来纪念她。

 

«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

公告
  本人上传的源程序中可能引用或使用了第三方的库或程序,也可能是修改了第三方的例程甚至是源程序.所以本人上传的源程序禁止在以单纯学习为目的的任何以外场合使用,不然如果引起任何版权问题,本人不负任何责任.




     本站首页    管理页面    写新日志    退出
调整中...
[SIP技术]mjSip学习笔记
人在旅途 发表于 2006/3/13 15:38:48

1.URL:http://www.mjsip.org/   2.它也是用JAVA编写的,唯一要求的外部库是客户端使用的JMF(只要安装了JMF就可以了,编译和执行都不用特殊处理).它比SUN的JAIN的STACK简单,而且新,上次RELEASE估计在2005年十月份,所对应的SIP功能也比JAIN多,包括支持REFER等消息格式.它也提供源程序,源程序结构比JAIN简单多了,三个部分:包括SIP的STACK和SIP的SERVER和SIP的客户端.它也有BIN的下载,服务器和客户端配置都很简单,基本上看着配置文件内部说明就可以了.从我看到该网站到学习下栽编译测试和分析LOG基本上不用一天工作时间就完成了. 3.不过它的MAKE文件是GNU的不是ANT的,对NETBEANS来说使用不便,不过由于它结构简单,我很方便的用NETBEANS5.0生成了三个PRJ(STACK,SERVER,UA),再从源程序中拷贝JAVA文件和配置文件到这三个PRJ中,很方便地就再编译和执行成功了. 这三个NETBEANS5.0的PRJ源程序和项目文件在这里:500)this.width=500'>MjSIP.rar(只用于学习,版权问题盖不负责,请去http://www.mjsip.org/查询). 4.它的SERVER缺省运行在STATELESS中,当然也可是STATEFUL的. 5.和JAIN的SAMPLE一样,大概是JMF的缘故它的UA在通话中也有很大的延迟,大约一秒多吧. 6.可惜没有商业开发的免费许可(要购买). 7.测试了下,一次INITE对话大概要用0.2秒多点时间,其他简单的TRANSACTION只要用0.1妙左右. 8.2006年4月13日,发现各致命的错误:    当INVITE或REGISTER等消息因为认证(407,401)而被打回后,再加入了认证HEADER 再送时,消息的BRANCH值仍然和第一次的一样.这样一来就和第一次同一个TRANSACTION了(尽管程序是NEW了个新TRANSACTION,但它是用上次消息经过加工后NEW的,所以BRANCH值仍然是上次旧的),而RFC要求是两个不同的TRANSACTION,这样一来服务器就可能因为新消息仍然属于旧TRANSACTION而拒绝响应.    我在ExtendedInviteDialog.onTransFailureResponse中把旧消息的BRANCH值更新了下(在BaseMessage.refreshBranch()中增加了更新函数),测试了下INVITE或REGISTER的情况,正常.

阅读全文(70749) | 回复(52) | 编辑 | 精华

回复:mjSip学习笔记
feige(游客)发表评论于2006/3/29 18:49:08

我根据您说的修改了配置文件,但如果用 audio_codec=PCMU 就还是没有声音, 但如果是 audio_codec=GSM 打电话的一方的耳机中有吱吱的声音,但对方那边还是没有声音, 我再看看,非常感谢您的帮助! 我的主要配置信息如下: #via_addr=192.168.68.13#host_port=4000transport_protocols=udp tcpoutbound_proxy=192.168.68.16:5060 from_url="2224" <sip:2224@192.168.68.16>username=2224realm=192.168.68.16passwd=debug_level=8log_path=logmax_logsize=2000 contacts_file=config/contacts.lst keepalive_time=8000 audio=yesaudio_port=4002#audio_avp=0#audio_codec=PCMUaudio_codec=GSMaudio_sample_rate=8000  audio_sample_size=1audio_frame_size=500  use_jmf=yes   没列出来的都注释掉啦 以下为blog主人的回复:  建议除audio=yes以外的audio项全都comment掉,让程序自己去选择SDP参数.你的问题也许是两个UA之间不能建立相同SDP参数选择,可以用两台一个牌子的PC试一下(我就是这样的,问题就不大).

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/29 17:15:36

1.您是在实验室里面使用保留地址192.168.*.13与192.168.*.16 进行通讯,是吗? 2.在局域网内是不用使用诸如注册(REGISTRATION)和重定向(REDIRECTION)的,你的配置文件里面的一行: #do_register=yes,前面的“#”符号已经删除了,是吗? 我昨天是在同一台电脑上测试,通过了。你也先在同一台电脑上测试吧! 今天,我连接了同一局域网上面的两台电脑,测试通过了,接收方听到的音乐像是从其本机播放出来的一样清晰!!! 我的配置是这样的: #        MjSip UA configuration file# ___________________________________________# #via_addr=127.0.0.8host_port=5080transport_protocols=udp tcp#outbound_proxy=211.66.17.147:5060 from_url="Bob" <sip:bob@211.66.17.147>username=bobrealm=211.66.17.147#passwd=pippo debug_level=8log_path=logmax_logsize=2000 contacts_file=config/contacts.lst #do_register=yes#do_unregister=yes#do_unregister_all=yes keepalive_time=8000 #call_to=sip:127.0.0.9:5090     #accept_time=0#hangup_time=20#redirect_to=sip:127.0.0.9:5090#no_offer=yes#transfer_to=sip:127.0.0.9:5090#transfer_time=10#re_invite_time=5 #recv_only=yes#send_only=yes#send_tone=yes#send_file=yes audio=yesaudio_port=4002audio_avp=0audio_codec=PCMUaudio_sample_rate=8000  audio_sample_size=1audio_frame_size=500 #video=yes#video_port=4002#video_avp=101 use_jmf=yes#use_rat=yes#use_vic=yes#bin_rat="c:\program files\mbone\rat"#bin_vic="c:\program files\mbone\vic"#bin_rat=rat#bin_vic=vic     以下引用feige(游客)在2006-3-29 10:33:17的评论:首先非常感谢您的回复!可我按照您说的做了,问题依旧。每次UA(A)打电话给UA(B)后,B一旦接起电话A端就输出到:Graphical MJSIP UA 1.0UA: REGISTRATIONUA: Registration success: 200 OKUA: RINGINGUA: ACCEPTED/CALLSelected format: LINEAR, 8000.0 Hz, 8-bit, Mono ……………………然后就陷入死循环。我看过他的源代码,就是执行到:while(player.getState()!=player.Realized);这句(我看了一下player.getState() = 200 也就是Realizing而Realized=300),但不知道为什么?过很久后A端输出:UA: Registration failure: Timeout……………………AckTransactionClient#3: changed transaction state: T_TerminatedUA: onCallAccepted()UA: ACCEPTED/CALLJMFAudioLauncher: launching JMF-Audio...
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
feige(游客)发表评论于2006/3/29 10:33:17

首先非常感谢您的回复! 可我按照您说的做了,问题依旧。 每次UA(A)打电话给UA(B)后,B一旦接起电话 A端就输出到: Graphical MJSIP UA 1.0 UA: REGISTRATION UA: Registration success: 200 OK UA: RINGING UA: ACCEPTED/CALL Selected format: LINEAR, 8000.0 Hz, 8-bit, Mono List of devices: 1 device 0:DirectSoundCapture MediaLocator: dsound:// Processor created Processor configured ContentDescriptor=raw.rtp Processor realized Receiver URL= rtp://:21000/audio JMFAudioLauncher: launching JMF-Audio... streams is [Lcom.sun.media.multiplexer.RawBufferMux$RawBufferSourceStream;@13e75a5 : 1 sink: setOutputLocator rtp://192.168.68.16:16108/audio/1 DataSink created Dest= rtp://192.168.68.16:16108/audio/1 , RTP DataSink opened Start sending Trying to realize the player 然后就陷入死循环。我看过他的源代码,就是执行到:while(player.getState()!=player.Realized); 这句(我看了一下player.getState() = 200 也就是Realizing而Realized=300),但不知道为什么? 过很久后A端输出: UA: Registration failure: Timeout events.log文件的内容如下: SipProvider-5060: Date: 10:29:55.234 Wed 29 Mar 2006 SipProvider-5060: SipStack: mjsip stack 1.6 SipProvider-5060: new SipProvider(): 5060/udp SipProvider-5060: udp is up ExtendedInviteDialog#0: changed dialog state: D_INIT ExtendedInviteDialog#0: changed dialog state: D_WAITING TransactionServer#0: id: INVITE TransactionServer#0: created TransactionServer#0: start TransactionServer#0: changed transaction state: T_Waiting SipProvider-5060: adding SipProviderListener: INVITE SipProvider-5060: 1 listeners: INVITE, UA: REGISTRATION RegisterAgent: Registering contact <sip:2223@192.168.68.13> (it expires in 3600 secs) TransactionClient#1: id: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 TransactionClient#1: created TransactionClient#1: start TransactionClient#1: changed transaction state: T_Trying SipProvider-5060: adding SipProviderListener: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 SipProvider-5060: 2 listeners: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453, INVITE, SipProvider-5060: using transport udp SipProvider-5060: Resolving host address '192.168.68.16' SipProvider-5060: Sending message to udp:192.168.68.16:5060 10:29:56.250 Wed 29 Mar 2006, 192.168.68.16:5060/udp (368 bytes): REGISTER sip:192.168.68.16 SIP/2.0, sent 10:29:56.250 Wed 29 Mar 2006, 192.168.68.16:5060/udp (425 bytes): SIP/2.0 100 Trying, received SipProvider-5060: received new SIP message SipProvider-5060: DEBUG: transaction-id: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 SipProvider-5060: message passed to transaction: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 TransactionClient#1: changed transaction state: T_Proceeding 10:29:56.281 Wed 29 Mar 2006, 192.168.68.16:5060/udp (501 bytes): SIP/2.0 200 OK, received SipProvider-5060: received new SIP message SipProvider-5060: DEBUG: transaction-id: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 SipProvider-5060: message passed to transaction: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 TransactionClient#1: changed transaction state: T_Completed RegisterAgent: Registration success: 200 OK UA: Registration success: 200 OK ExtendedInviteDialog#0: inside refuse() ExtendedInviteDialog#0: inside refuse(403,Forbidden) ExtendedInviteDialog#0: inside respond(403,Forbidden) ExtendedInviteDialog#0: WARNING: Dialog isn't in "invited" state: cannot respond (403/D_WAITING/null) ExtendedInviteDialog#0: inside cancel() SipProvider-5060: removing SipProviderListener: INVITE SipProvider-5060: 1 listeners: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453, TransactionServer#0: changed transaction state: T_Terminated ExtendedInviteDialog#0: inside bye() ExtendedCall: calling "2224" <sip:2224@192.168.68.16> ExtendedInviteDialog#1: changed dialog state: D_INIT ExtendedInviteDialog#1: inside invite(callee,caller,contact,sdp) ExtendedInviteDialog#1: inside invite(invite) ExtendedInviteDialog#1: changed dialog state: D_INVITING ExtendedInviteDialog#1: new dialog id: 729822251965@192.168.68.13-z9hG4bK78067334-null SipProvider-5060: adding SipProviderListener: 729822251965@192.168.68.13-z9hG4bK78067334-null SipProvider-5060: 2 listeners: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453, 729822251965@192.168.68.13-z9hG4bK78067334-null, TransactionClient#2: id: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 TransactionClient#2: created TransactionClient#2: start TransactionClient#2: changed transaction state: T_Trying SipProvider-5060: adding SipProviderListener: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 SipProvider-5060: 3 listeners: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453, 729822251965@192.168.68.13-z9hG4bK78067334-null, 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758, SipProvider-5060: using transport udp SipProvider-5060: Resolving host address '192.168.68.16' SipProvider-5060: Sending message to udp:192.168.68.16:5060 10:29:59.765 Wed 29 Mar 2006, 192.168.68.16:5060/udp (563 bytes): INVITE sip:2224@192.168.68.16 SIP/2.0, sent 10:29:59.765 Wed 29 Mar 2006, 192.168.68.16:5060/udp (423 bytes): SIP/2.0 100 Trying, received SipProvider-5060: received new SIP message SipProvider-5060: DEBUG: transaction-id: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 SipProvider-5060: message passed to transaction: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 TransactionClient#2: changed transaction state: T_Proceeding ExtendedInviteDialog#1: inside onTransProvisionalResponse(tc,mdg) 10:29:59.796 Wed 29 Mar 2006, 192.168.68.16:5060/udp (439 bytes): SIP/2.0 180 Ringing, received SipProvider-5060: received new SIP message SipProvider-5060: DEBUG: transaction-id: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 SipProvider-5060: message passed to transaction: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 ExtendedInviteDialog#1: inside onTransProvisionalResponse(tc,mdg) UA: onCallRinging() UA: RINGING TransactionClient#1: Clearing timeout expired SipProvider-5060: removing SipProviderListener: 334060406272@192.168.68.13-1-REGISTER-192.168.68.13:5060-z9hG4bK65453 SipProvider-5060: 2 listeners: 729822251965@192.168.68.13-z9hG4bK78067334-null, 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758, TransactionClient#1: changed transaction state: T_Terminated 10:30:01.968 Wed 29 Mar 2006, 192.168.68.16:5060/udp (652 bytes): SIP/2.0 200 OK, received SipProvider-5060: received new SIP message SipProvider-5060: DEBUG: transaction-id: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 SipProvider-5060: message passed to transaction: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 TransactionClient#2: changed transaction state: T_Terminated SipProvider-5060: removing SipProviderListener: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758 SipProvider-5060: 1 listeners: 729822251965@192.168.68.13-z9hG4bK78067334-null, ExtendedInviteDialog#1: inside onTransSuccessResponse(729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK70758,msg) ExtendedInviteDialog#1: inside onTransSuccessResponse(tc,msg) ExtendedInviteDialog#1: changed dialog state: D_CALL SipProvider-5060: removing SipProviderListener: 729822251965@192.168.68.13-z9hG4bK78067334-null SipProvider-5060: 0 listeners: ExtendedInviteDialog#1: new dialog id: 729822251965@192.168.68.13-z9hG4bK78067334-as278e6c90 SipProvider-5060: adding SipProviderListener: 729822251965@192.168.68.13-z9hG4bK78067334-as278e6c90 SipProvider-5060: 1 listeners: 729822251965@192.168.68.13-z9hG4bK78067334-as278e6c90, AckTransactionClient#3: id: 729822251965@192.168.68.13-1-INVITE-192.168.68.13:5060-z9hG4bK53471 AckTransactionClient#3: created AckTransactionClient#3: start SipProvider-5060: using transport udp SipProvider-5060: Resolving host address '192.168.68.16' SipProvider-5060: Sending message to udp:192.168.68.16:5060 10:30:01.968 Wed 29 Mar 2006, 192.168.68.16:5060/udp (378 bytes): ACK sip:2224@192.168.68.16 SIP/2.0, sent AckTransactionClient#3: changed transaction state: T_Terminated UA: onCallAccepted() UA: ACCEPTED/CALL JMFAudioLauncher: launching JMF-Audio...
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

求助
人在旅途发表评论于2006/3/29 10:11:41

各位朋友,我碰到各问题. 当我用MjSIP的UA和其他SIPSERVER测试时,在REGISTER时返回了401(认证要求,MD5),UA添加了认证信息后再送,被SERVER接受;随后,UA发送了INVITE消息,SERVER又返回了407(认证要求,MD5),我又同样得添加了认证信息后再送,但SERVER就再也没有反映了.SERVER应该没问题,因为我用HARDPHONE试过了,同样有认证要求,但都顺利通过了,我想是MjSIP的UA和它不匹配吧,有人有这个问题的经验吗? 以下为blog主人的回复:  已经解决,是BRANCH值没变的原因,请看更改后的主贴.
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:51:14

非常感谢blog主人的提供源码和配置的热诚。 Thanks a lot!!!
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:48:23

不好意思,现在好了。 声音混浊的缘故是我打开了不必打开的很多播放选项。现在听到的声音很清,但有回音,延迟应该小于半秒吧!我是在同一台电脑上测试的。
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:41:52

连接刚成功的时候,听到的声音是很不错的。 但是,渐渐地,会出现很大的钻井似的噪音,越来越大以致盖过了要传输的原音。不知何故。
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:30:40

接下面的那条信息。 注意要把配置文件*.cfg里面的“use_jmf=yes”前面的#去掉。
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:27:49

这位朋友,我找到没能通话的原因了。下面我测试的log提示: Selected format: LINEAR, 8000.0 Hz, 8-bit, Mono (-----注意这里,原因就出在这里-----)List of devices: 1device 0:DirectSoundCaptureMediaLocator: dsound://Processor createdProcessor configuredContentDescriptor=raw.rtpProcessor realizedReceiver URL= rtp://:4000/audioJMFAudioLauncher: launching JMF-Audio...streams is [Lcom.sun.media.multiplexer.RawBufferMux$RawBufferSourceStream;@1b09468 : 1sink: setOutputLocator rtp://211.66.17.147:3000/audio/1DataSink createdDest= rtp://211.66.17.147:3000/audio/1 , RTPDataSink openedStart sendingTrying to realize the playerPlayer realizedStop sendingPlayer stopped 注意到红色部分文字,程序是通过系统的mono来录音,然后再发送出去的. 所以您如果要测试的话,请打开你的windows(如果是这种系统的话)的音频属性,选择录音选项,会发现一个“mono mix”,然后选择这个来录音,就会听到你要传输的音频了。 我在同一台电脑上试了一下,简单地播放一个音乐文件,可以顺利听到由UA返传回来的声音,不过很混浊难听。   以下引用feige(游客)在2006-3-28 17:27:46的评论:不好意思再次打扰拉,我UA联系对方,对方的电话铃可以响,但就是无法听到双方的声音。每次都输出JMFAudioLauncher: launching JMF-Audio...streams is [Lcom.sun.media.multiplexer.RawBufferMux$RawBufferSourceStream;@7be8c2 : 1sink: setOutputLocator rtp://192.168.68.16:13596/audio/1DataSink createdDest= rtp://192.168.68.16:13596/audio/1 , RTPDataSink openedStart sendingTrying to realize the player然后就停在这啦,看了他的Log后也不太清楚:…………………………………………………………………………上面是他的部分log其实我的目的是想利用MJSIP提供的电话转接功能我之前用Jain-Sip-Applet-Phone已经实现了Phone to Pc 和Pc to Phone但 Refer功能做不出来,我按照SIP中对Refer的定义写了Refer,但每次执行完毕后refer-by一方已经收到了Accepted信息,但refer-to一方死活就是没有任何反应,我感觉Accepted好像是VOIPServer发送过来的,不知搂主有没有这方面的经验,还望给予帮忙,先谢谢啦
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:mjSip学习笔记
fchenscut(游客)发表评论于2006/3/28 19:10:43

配置文件a.cfg中有这么几行: #bin_rat="c:\program files\mbone\rat"#bin_vic="c:\program files\mbone\vic"bin_rat=ratbin_vic=vic 谁知道是干什么用的?是用来配置多媒体选项的吗? 按照上面提示的路径我找不到那些文件.请问是不是要额外安装的? 以下为blog主人的回复:  这大概是和JMF不同的语音系统吧,没研究过.
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 2 3 4 5 6 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144811038 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号