编写一个SIP软电话所需要的组件

444 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

介绍

从字面理解FreeSWITCH就是将各种终端连接在一起.

 

配置一个SIP电话向FreeSWITCH注册

大部分使用中的FreeSWICH要允许用户之间进行通信,SIP电话或其他SIP设备要能向其发起注册.当一个电话或其他设备向FreeSWITCH服务器注册,意味着它将提供一些信息(比如说IP地址和端口)来说明如何通过局域网或互联网来访问自己.FreeSWITCH将保存这些信息为将来如果有人想联络这个电话的时候使用.

在这个例子中,你将注册一个电话到FreeSWITCH.你需要将认证信息分别写入你的电话和FreeSWITCH(两边要匹配).在本书中我们将只说明在FreeSWITCH服务器端的配置.

开始

确保mod_sofia模块已经编译并加载(Sofia是SIP协议栈).

你还需要确定你注册用的IP地址已经允许作为一个特殊的域名.

确认的步骤:

1:运行FreeSWITCH的命令行界面(CLI)

2:执行命令sofia status来确认现在服务器正在监听的IP和端口

3:查看输出结果,特别留意标记ALIASED那行

freeswitch@internal> sofia status

Name           Type   Data                                 State

======================================================================

external          profile  sip:mod_sofia@192.168.0.100:5080       RUNNING (0)

my.company.com  alias    internal                              ALIASED

internal          profile  sip:mod_sofia@127.0.0.1:5060          RUNNING (0)

2 profiles 1 aliases

标记为ALIASED的那行意味着在系统中已经识别域名并用来注册.重命名的域名将关联到一个特别的端口和IP地址.在这个例子中,my.company.com被关联到一个叫做internal的接口.该接口是监听在127.0.0.1的IP和5060的端口上.也就是说,如果要向FreeSWITCH上的my.company.com注册,就必须发生在服务器的127.0.0.1和5060端口.

如何做

下面的步骤将说明如何配置一个SIP电话:

1:选择你想要的注册时用到的用户名和密码

2:打开FreeSWITCH配置目录下的directory/default/USERNAME.xml文件. USERNAME需要使用用户名或分机号码来替换(比如说2000)

3:添加以下内容到文件中并保存

代码中的USERNAME和PASSWORD使用你选择的用户名和密码来替换.

4:重新进入FreeSWITCH的命令行界面(CLI)

5:在FreeSWITCH的CLI上执行命令reloadxml 来重新加载当前的配置. 1.  SIP协议栈:主要用于会话的建立,修改以及终止。

开源SIP协议栈:

[1]The GNU oSIP library – www.gnu.org/software/os…

[2] reSIProcate – www.resiprocate.org/Main_Page

[3] libmsip – www.minisip.org/download.ht…

[4] Sofia – SIP – sofia-sip.sourceforge.net/

[5] pjsip – www.pjsip.org/

更多的内容可参考网站:www.pernau.at/kd/voip/ind…

 

2.  SDP协议栈:主要用于会话的媒体协商。

3.  RTP协议栈:为数据提供了具有实时特征的端对端传送服务。

[1] jrtplib – lumumba.luc.ac.be/jori/jrtpli…

[2] ortp – www.linphone.org/ortp

[3] GNU ccRTP – www.gnu.org/software/cc…

更多的内容可参考网站:www.pernau.at/kd/voip/ind…

 

4.  音频编解码库:主要用于对音频数据编解码,以适应网络传输。

G.711 A-law

G.711 Mu-law

GSM

G729

Speex – www.speex.org/

还有好多,不一一列举。

 

5.  视频编解码库:主要用于对视频数据编解码,以适应网络传输。

Xvid – www.xvid.org/

X264 – www.videolan.org/developers/…

Ffmpeg – ffmpeg.org/

 

6.  界面皮肤及操作库:主要用于软电话界面的显示以及逻辑的控制。

7.  音频数据处理库:对音频数据的基本处理,例如通过声卡获取,然后播放等。

8.  视频数据处理库:对视频数据的基本处理,例如通过显卡获取,然后播放等。

9.  NAT以及防火墙穿越技术:穿越私网和防火墙。

  1. 防窃听防封杀加密技术:防黑客窃听,防有关部门封杀