因为要做个跟sip phone相关又跟TTS扯点关系的东西;忙活了3周了初步拿着源码可以拨电话放个录音了,因此把些东西整理下。因为要求是使用Java,当然最初定的是jain-sip sip-servlet一个做客户端一个做服务端,而且服务端是不用改的。对于sip从零开始了。
首先是了解到服务端可以用Asterisk、sip-foundry,因为采用通用的sip协议,而且不用修改,因此直接拷贝了个sip-foundry,然后下载网上的X-Lite拨打测试了下。而后得知SIP(会话初始协议)从字面看是不关心你怎么在会话中交互数据的,因此光看jain-sip似乎没多大用处,当时看到Oracle官网上是有段jain-sip的例子,只是发送即时消息的,而且示例代码也没下载下来,只好去开源社区寻找开源软件拿来修改了。前面提到的X-Lite由于不是开源,只好放弃。找到了几款,虽然有C/C++的,但是还是列出来:视频会议系统 Ekiga、Yate 下一代的电话引擎、视频通话和聊天工具 Jitsi和Java SIP softphone(peers)。
Ekiga是一个兼容SIP和H.323的视频会议程序,兼容VoIP,IP电话,通过Ekiga可以与使用任何SIP和H.323软硬件的远程用户进行视频和音频对话。Ekiga的前身是GnomeMeeting。首页是http://ekiga.org/;可惜不是Java的。
Yate (Yet Another Telephony Engine)是下一代的电话引擎,使用 VoIP 和 PSTN 协议,既可以作为VoIP服务端和客户端,支持200路的会议服务,还可以作为电话后PC间的网关,支持H.232和sip以及H.323<->SIP Proxy(忘了说明了,H.232,sip都是可用于VoIP的协议,一个是ITU-T提出的,类似于传统电话系统方式的,但是目前也在不断改进;sip是IETF提出的更符合互联网的,并不代表一定比H.323好);同时还支持Call center server和IVR engine等等,功能非常强大,首页是http://yate.null.ro/pmwiki/index.php,可惜也是C/C++的。
Jitsi是一个开源的,安全(ZRTP加密),高质量的SIP/XMPP视频通话、会议、聊天、桌面共享、文件传传输。可以安装在你喜欢的操作系统中并且支持多种IM网络。Jitsi是当最功能最完整的高级通信工具。Jitsi让你可以在同一个软件中连到Facebook、GoogleTalk、XMPP、Windows Live、Yahoo!、AIM和ICQ进行通信。看着这么强大的功能与支持的多样,我觉得就应该用它了;而且它是基于OSGi(Open Service Gateway Initiative)框架的(具体是阿帕奇的Felix开源框架),这个框架号称提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方。而且确实从下载到的源码中看到了felix.client.run.properties配置文件,里面配置了felix.auto.start的等级启动顺序;而且在源码包中sip实现看到了sip.provider.manifest.mf文件,里面详细定义了Import-Package、Export-Package等关系,架构非常清晰。而且在源码工程中直接包含了Ant编写的build文件,简单设置一下就可以编译运行了,这个激动的啊。于是我又下载了Felix框架实现,按照tutorial把示例跑一下,问题开始来了,示例跑不通,我太愚笨了又不肯下载更多的东西配置,只是知道了可以从org.apache.felix.main.Main来启动,通过配置服务(Bundle)启动,也可以直接调用这个类(jitsi中就是在net.java.sip.communicator.launcher.SIPCommunicator中调用Main.main(new String[0]);来启动的)而后发现想单独取出来使用其中的SIP协议相关的(由于它支持Facebook、GoogleTalk、XMPP、Windows Live)也不容易,和protocolProvider等牵扯的关系挺多,代码量巨大,似乎不是短期内能搞定的,因此只好放弃了最初的想法,找个功能强大的,却是不容易修改的。
否决了这些个,再找就困难了,合适的更不容易,有下了jphonelite,据说还支持Android,估计Android上是好用的,但是从界面上看,PC上不行,下载软件之后居然不会用。。。;jVoiceBridge官方找不到源码了,好像已经停止了。或者归到其它项目中,总之没找到。最后在快要放弃的时候(想去找原来实验室有用flex在mjsip上实验过的源码,准备看那个的时候)在SourceForge上找到了Java SIP softphone(peers),一个简单好用,功能又满足需要得开源软件。代码比较容易懂,直接找到录音地方,换成播放音乐文件,直接可以实现播放音乐文件;而且可以生成多个拨号见面,不知道是不是支持同时拨打多个终端,继续查看中。软件首页http://sourceforge.net/projects/peers/?source=directory
来几个图,虽然没有前面的华丽,非常简洁:


就在写这个得时候,发现mjsip貌似也非常好用啊,功能强大,代码量也适中,而且有商用和研究用的,难道我选错了。。。。。。?
首先是了解到服务端可以用Asterisk、sip-foundry,因为采用通用的sip协议,而且不用修改,因此直接拷贝了个sip-foundry,然后下载网上的X-Lite拨打测试了下。而后得知SIP(会话初始协议)从字面看是不关心你怎么在会话中交互数据的,因此光看jain-sip似乎没多大用处,当时看到Oracle官网上是有段jain-sip的例子,只是发送即时消息的,而且示例代码也没下载下来,只好去开源社区寻找开源软件拿来修改了。前面提到的X-Lite由于不是开源,只好放弃。找到了几款,虽然有C/C++的,但是还是列出来:视频会议系统 Ekiga、Yate 下一代的电话引擎、视频通话和聊天工具 Jitsi和Java SIP softphone(peers)。
Ekiga是一个兼容SIP和H.323的视频会议程序,兼容VoIP,IP电话,通过Ekiga可以与使用任何SIP和H.323软硬件的远程用户进行视频和音频对话。Ekiga的前身是GnomeMeeting。首页是http://ekiga.org/;可惜不是Java的。
Yate (Yet Another Telephony Engine)是下一代的电话引擎,使用 VoIP 和 PSTN 协议,既可以作为VoIP服务端和客户端,支持200路的会议服务,还可以作为电话后PC间的网关,支持H.232和sip以及H.323<->SIP Proxy(忘了说明了,H.232,sip都是可用于VoIP的协议,一个是ITU-T提出的,类似于传统电话系统方式的,但是目前也在不断改进;sip是IETF提出的更符合互联网的,并不代表一定比H.323好);同时还支持Call center server和IVR engine等等,功能非常强大,首页是http://yate.null.ro/pmwiki/index.php,可惜也是C/C++的。
Jitsi是一个开源的,安全(ZRTP加密),高质量的SIP/XMPP视频通话、会议、聊天、桌面共享、文件传传输。可以安装在你喜欢的操作系统中并且支持多种IM网络。Jitsi是当最功能最完整的高级通信工具。Jitsi让你可以在同一个软件中连到Facebook、GoogleTalk、XMPP、Windows Live、Yahoo!、AIM和ICQ进行通信。看着这么强大的功能与支持的多样,我觉得就应该用它了;而且它是基于OSGi(Open Service Gateway Initiative)框架的(具体是阿帕奇的Felix开源框架),这个框架号称提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方。而且确实从下载到的源码中看到了felix.client.run.properties配置文件,里面配置了felix.auto.start的等级启动顺序;而且在源码包中sip实现看到了sip.provider.manifest.mf文件,里面详细定义了Import-Package、Export-Package等关系,架构非常清晰。而且在源码工程中直接包含了Ant编写的build文件,简单设置一下就可以编译运行了,这个激动的啊。于是我又下载了Felix框架实现,按照tutorial把示例跑一下,问题开始来了,示例跑不通,我太愚笨了又不肯下载更多的东西配置,只是知道了可以从org.apache.felix.main.Main来启动,通过配置服务(Bundle)启动,也可以直接调用这个类(jitsi中就是在net.java.sip.communicator.launcher.SIPCommunicator中调用Main.main(new String[0]);来启动的)而后发现想单独取出来使用其中的SIP协议相关的(由于它支持Facebook、GoogleTalk、XMPP、Windows Live)也不容易,和protocolProvider等牵扯的关系挺多,代码量巨大,似乎不是短期内能搞定的,因此只好放弃了最初的想法,找个功能强大的,却是不容易修改的。
否决了这些个,再找就困难了,合适的更不容易,有下了jphonelite,据说还支持Android,估计Android上是好用的,但是从界面上看,PC上不行,下载软件之后居然不会用。。。;jVoiceBridge官方找不到源码了,好像已经停止了。或者归到其它项目中,总之没找到。最后在快要放弃的时候(想去找原来实验室有用flex在mjsip上实验过的源码,准备看那个的时候)在SourceForge上找到了Java SIP softphone(peers),一个简单好用,功能又满足需要得开源软件。代码比较容易懂,直接找到录音地方,换成播放音乐文件,直接可以实现播放音乐文件;而且可以生成多个拨号见面,不知道是不是支持同时拨打多个终端,继续查看中。软件首页http://sourceforge.net/projects/peers/?source=directory
来几个图,虽然没有前面的华丽,非常简洁:


就在写这个得时候,发现mjsip貌似也非常好用啊,功能强大,代码量也适中,而且有商用和研究用的,难道我选错了。。。。。。?