FreeSWITCH
此條目翻譯品質不佳。 |
FreeSWITCH是一個自由開源的軟交換。它採用Mozilla Public License(MPL)授權協議,MPL是一個開源的軟件協議。它的核心庫libfreeswitch可以嵌入其它系統或產品中,也可以做一個單獨的應用存在。
原作者 | Anthony Minessale |
---|---|
開發者 | Many contributors |
當前版本 |
|
源代碼庫 | |
操作系統 | Unix-like、Windows、Sun Solaris、Mac OS X |
平台 | Cross-platform |
語言 | multi-lingual |
類型 | VoIP software, Softswitch |
許可協議 | Mozilla Public License (MPL) |
網站 | FreeSWITCH |
歷史
FreeSWITCH項目最初於2006年1月在O'Reilly Media's ETEL會議上發布。[2] 2007年6月,FreeSWITCH 被Truphone 採用[3]。2007年8月, Gaboogie 宣布使用FreeSWITCH作為電話會議平台。[4]
FreeSWITCH的第一個官方的1.0.0版(Phoenix)發布於2008年5月26日。[5]2008年7月24日發布了一個小的更新版。[6] 1.2.1版發布於2012年8月. Anthony Minessale announced[7]在ClueCon 2012上宣布了1.2.0版的發布[8].2021年10月25號發表1.10.7版本。
設計
據其主要開發者Anthony Minessale所說,[9] FreeSWITCH 致力於做一個 軟交換,它建立於一個堅實的核心上面,由一個有限狀態機驅動。[10] 該項目的目標包括穩定,可伸縮性,以及抽象性。
為了減少複雜性及避免重複發明輪子,FreeSWITCH 使用其它開源免費的函式庫來提供必要的功能。典型的有:[11]
- 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 等等。[12]
使用FreeSWITCH庫開發程序可以使用 C/C++, Python, Perl, Lua,JavaScript, Java 以及 Microsoft .NET 通過Microsoft 的 CLR 或Mono。不管是何種語言,FreeSWITCH都能提供對外的呼叫控制接口以及IVR控制功能,以便於開發人員使用。[13]
呼叫控制接口可以使用Event Socket,它是一個 網絡套接字 連接軟件和協議。基本上任何語言都可以通過Event Socket與它通信,進而控制呼叫流程。FreeSWITCH也自帶了一個 Event Socket 庫 (ESL) 以及 "ESL-wrappers",支持 Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby.
編解碼支持
FreeSWITCH支持很多的語音編解碼:[14]
- 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轉碼卡)[15]
- 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版支持視頻轉碼):[16]
某些編碼只支持透傳,這意味着FreeSWITCH對這些媒體不進行任何處理,而把原始壓縮的內容直接「透傳」到對方。這使得雙方都有兼容的編碼時可以相互通信,而這些編碼可能因為專利等原因不能在FreeSWITCH內部提供。由於使用這些編碼里數據無法解碼,某些IVR或錄音應用就受到限制。
FreeSWITCH也支持硬件編碼軟件卡,如Sangoma的板卡。[17] 通過硬件實現編解碼,可以節約服務器端的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
問題
與其它類似的電話軟件比較
http://en.wikipedia.org/wiki/Comparison_of_VoIP_software(頁面存檔備份,存於網際網路檔案館)
FreeSWITCH 填補了簡單的僅僅是路由電話的純交換軟件如 GnuGK 和 SER, 和那些主要用於 PABX 或 IVR的應用如 Asterisk 以及其衍生品之間的空白。FreeSWITCH 可以作為,如一個 PABX,一個 voicemail 系統, 一個 電話會議系統或一個 電話卡系統 – 可以使用任何語言來構建這樣的產品。[來源請求]
衍生產品
FreeSWITCH 是很多商業的和開源的裝在盒子裡的PABX的核心組件。某些商業產品是軟硬件結合的。
例如 Barracuda Networks CudaTel VOIP PBX 系列以及 Gemeinschaft_(PBX).
參見
- 自由軟件列表 – 其它相關的軟件
參考資料
- ^ Release 1.10.12. 2024年8月3日 [2024年8月22日].
- ^ Beyond Asterisk, The Future of Telephony. What's Next?. O'Reilly Media. 2006-01-25 [2007-10-06]. (原始內容存檔於2007-12-27).
- ^ Truphone Selects FreeSWITCH and TelcoBridges to Enable VoIP Calls over WiFi on Mobile Phones (新聞稿). Truphone. June 5, 2007 [2013-06-22]. (原始內容存檔於2012-09-18).
- ^ Gaboogie Embraces Open Source For New Mobile Group Calling and Conference Calling Solution. Gaboogie. 2007-08-03 [2007-10-06]. (原始內容存檔於2008-09-08).
- ^ FreeSWITCH 1.0.0 "Phoenix" Released!. [2013-06-22]. (原始內容存檔於2008-08-10).
- ^ FreeSWITCH 1.0.1 "Phoenix" Released!. [2013-06-22]. (原始內容存檔於2008-08-19).
- ^ ClueCon 2012 Keynote Address. [2013-06-22]. (原始內容存檔於2012-06-08).
- ^ It's Official! FreeSWITCH 1.2 Has Been Released.. [2013-06-22]. (原始內容存檔於2012-09-20).
- ^ Gallagher, Kathleen. Flipping the FreeSWITCH - Brookfield is home to revolutionary software. Milwaukee Journal Sentinel. October 18, 2009 [2013年6月22日]. (原始內容存檔於2009年10月22日).
- ^ An Interview with the Creator of FreeSWITCH. O'Reilly Media. July 25, 2006 [2013-06-22]. (原始內容存檔於2012-02-17).
- ^ A complete list of dependencies can be found in the dependencies page (頁面存檔備份,存於網際網路檔案館) section of the FreeSWITCH documentation.
- ^ Modules. FreeSWITCH Documentation Wiki. 2007-10-08 [2007-10-07]. (原始內容存檔於2007-10-19).
- ^ Languages for Call Control. FreeSWITCH Documentation Wiki. 2007-10-08 [2007-10-07]. (原始內容存檔於2007-10-06).
- ^ 存档副本. [2017-07-20]. (原始內容存檔於2019-02-16).
- ^ https://billing.freeswitch.org/cart.php?a=confproduct&i=1[永久失效連結]
- ^ 存档副本. [2013-06-22]. (原始內容存檔於2013-06-30).
- ^ 存档副本. [2013-06-22]. (原始內容存檔於2013-07-05).
- ^ FreeSWITCH Wiki FAQ. [2013-06-22]. (原始內容存檔於2013-06-20).
外部連結
- FreeSWITCH Project Home Page(頁面存檔備份,存於網際網路檔案館) – FreeSWITCH官方網站
- FreeSWITCH Confluence(頁面存檔備份,存於網際網路檔案館) – FreeSWITCH官方文檔
- FreeSWITCH-CN中文社區(頁面存檔備份,存於網際網路檔案館) – 中文社區和文檔大本營
- #freeswitch[永久失效連結] on freenode