**FreeSWITCH**是一个自由开源的软交换。它采用Mozilla Public License（MPL）授权协议，MPL是一个开源的软件协议。它的核心库libfreeswitch可以嵌入其它系统或产品中，也可以做一个单独的应用存在。

历史
--

FreeSWITCH项目最初于2006年1月在O'Reilly Media's ETEL会议上发布。 2007年6月，FreeSWITCH 被Truphone 采用。2007年8月, Gaboogie 宣布使用FreeSWITCH作为电话会议平台。

FreeSWITCH的第一个官方的1.0.0版（Phoenix）发布于2008年5月26日。2008年7月24日发布了一个小的更新版。 1.2.1版发布于2012年8月. Anthony Minessale announced在ClueCon 2012上宣布了1.2.0版的发布.2021年10月25号发表1.10.7版本。

设计
--

据其主要开发者Anthony Minessale所说， FreeSWITCH 致力于做一个 软交换，它建立于一个坚实的核心上面，由一个有限状态机驱动。 该项目的目标包括稳定，可伸缩性，以及抽象性。

为了减少复杂性及避免重复发明轮子，FreeSWITCH 使用其它开源免费的函式库来提供必要的功能。典型的有：

* Apache Portable Runtime (APR and APR-Util)
* SQLite – 一个轻量级的SQL引擎
* PCRE – Perl兼容的正则表达式引擎
* Sofia-SIP – 一个开源的 SIP UA 库
* libspeex – Speex DSP 库
* mod\_spandsp（页面存档备份，存于） 支持 T.38 传真
* libSRTP – Secure Real-time Transport ProtocolSRTP的一个开源实现

编译FreeSWITCH时并不是所有这些库都是必要的，只是在某些模块需要用到它们，如Codec模块等。FreeSWITCH是一个模块化结构的程序，模块可以扩展核心的功能，而内部的抽象层则可以避免模块间的相互依赖关系。目标是避免加载一个模块时又依赖其它模块。[來源請求]

特性
--

FreeSWITCH包含大量的模块，如缺省的包括视频会议，使用XML-RPC 控制呼叫，Interactive voice response (IVR), TTS/ASR (语音合成和语音识别), Public switched telephone network (PSTN) 接口，可连接模拟和数字中继，VoIP 协议包括 SIP，SCCP, H.323, XMPP, GoogleTalk, t.38 等等。

使用FreeSWITCH库开发程序可以使用 C/C++, Python， Perl， Lua，JavaScript， Java 以及 Microsoft .NET 通过Microsoft 的 CLR 或Mono。不管是何种语言，FreeSWITCH都能提供对外的呼叫控制接口以及IVR控制功能，以便于开发人员使用。

呼叫控制接口可以使用Event Socket，它是一个 网络套接字 连接软件和协议。基本上任何语言都可以通过Event Socket与它通信，进而控制呼叫流程。FreeSWITCH也自带了一个 Event Socket 库 (ESL) 以及 "ESL-wrappers"，支持 Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby.

编解码支持
-----

FreeSWITCH支持很多的语音编解码:

* PCMU – G.711 µ-law
* PCMA – G.711 A-law
* G.722
* G.722.1
* G.722.1c
* G.726
* G.726 with AAL2 packing
* G.729 (默认透传模式，转码可以在FreeSWITCH官网购买许可，每通道10美金，或使用Sangoma转码卡)
* GSM
* CELT
* iLBC
* DVI4 (IMA ADPCM)
* BroadVoice
* SILK
* Speex
* CODEC2
* Siren
* LPC-10
* G.723.1 (默认透传模式，转码可以使用Sangoma转码卡)
* AMR (默认透传模式，转码可以使用Sangoma转码卡-仅限AMR-NB)
* iSAC
* Opus（测试阶段）

FreeSWITCH支持的视频编码（1.7版支持视频转码）:

* H261
* H263
* H263+ (H263-1998)
* H263++ (H263-2000)
* H264
* VP8
* Theora
* MP4

某些编码只支持透传，这意味着FreeSWITCH对这些媒体不进行任何处理，而把原始压缩的内容直接"透传"到对方。这使得双方都有兼容的编码时可以相互通信，而这些编码可能因为专利等原因不能在FreeSWITCH内部提供。由于使用这些编码里数据无法解码，某些IVR或录音应用就受到限制。

FreeSWITCH也支持硬件编码软件卡，如Sangoma的板卡。 通过硬件实现编解码，可以节约服务器端的CPU，而且通过硬件实现的转码都已经包含正常的许可证，这也解决了上面的透传问题。

操作系统与编译环境支持
-----------

* AuroraUX (LLVM+Clang/gmake)
* Sun Solaris 10 UNIX (Sun Studio)
* BSD系统（包括FreeBSD 8-10，NetBSD 6，OpenBSD 5） (gmake)
* Mac OS X (make)
* Linux系统（包括Red Hat Enterprise Linux，CentOS，Debian(可以运行于树莓派)，Ubuntu等）
* Microsoft Windows (原生支持，有二进制安装程序)
* Pfsense

问题
--

* BRI 支持需要基于Sangoma硬件板卡

与其它类似的电话软件比较
------------

条目：Comparison of VoIP software 
FreeSWITCH 填补了简单的仅仅是路由电话的纯交换软件如 GnuGK 和 SER, 和那些主要用于 PABX 或 IVR的应用如 Asterisk 以及其衍生品之间的空白。FreeSWITCH 可以作为，如一个 PABX，一个 voicemail 系统, 一个 电话会议系统或一个 电话卡系统 – 可以使用任何语言来构建这样的产品。[來源請求]

衍生产品
----

FreeSWITCH 是很多商业的和开源的*装在盒子里的PABX*的核心组件。某些商业产品是软硬件结合的。

例如 Barracuda Networks CudaTel VOIP PBX 系列以及 Gemeinschaft\_(PBX).

参见
--

* 自由软件主题

* 自由软件列表 – 其它相关的软件

参考资料
----

1. ↑ . 2023年8月13日  [2023年9月18日].
2. ↑ . O'Reilly Media. 2006-01-25  [2007-10-06]. （原始内容存档于2007-12-27）.
3. ↑   (新闻稿). Truphone. June 5, 2007  [2013-06-22]. （原始内容存档于2012-09-18）.
4. ↑ . Gaboogie. 2007-08-03  [2007-10-06]. （原始内容存档于2008-09-08）.
5. ↑ .  [2013-06-22]. （原始内容存档于2008-08-10）.
6. ↑ .  [2013-06-22]. （原始内容存档于2008-08-19）.
7. ↑ .  [2013-06-22]. （原始内容存档于2012-06-08）.
8. ↑ .  [2013-06-22]. （原始内容存档于2012-09-20）.
9. ↑  Gallagher, Kathleen.. Milwaukee Journal Sentinel. October 18, 2009  [2013年6月22日]. （原始内容存档于2009年10月22日）.
10. ↑ . O'Reilly Media. July 25, 2006  [2013-06-22]. （原始内容存档于2012-02-17）.
11. ↑  A complete list of dependencies can be found in the dependencies page （页面存档备份，存于） section of the FreeSWITCH documentation.
12. ↑ . FreeSWITCH Documentation Wiki. 2007-10-08  [2007-10-07]. （原始内容存档于2007-10-19）.
13. ↑ . FreeSWITCH Documentation Wiki. 2007-10-08  [2007-10-07]. （原始内容存档于2007-10-06）.
14. ↑ .  [2017-07-20]. （原始内容存档于2019-02-16）.
15. ↑
16. ↑ .  [2013-06-22]. （原始内容存档于2013-06-30）.
17. ↑ .  [2013-06-22]. （原始内容存档于2013-07-05）.
18. ↑ .  [2013-06-22]. （原始内容存档于2013-06-20）.

外部链接
----

* FreeSWITCH Project Home Page（页面存档备份，存于） – FreeSWITCH官方网站
* FreeSWITCH Confluence（页面存档备份，存于） – FreeSWITCH官方文档
* FreeSWITCH-CN中文社区（页面存档备份，存于） – 中文社区和文档大本营
* #freeswitch[永久] on freenode

Template:Instant messaging