題:
.NET VoIP庫
BatteryBackupUnit
2014-07-03 12:13:10 UTC
view on stackexchange narkive permalink

我正在尋找一個符合以下條件的VoIP庫:

  • 用.NET或至少使用.NET接口編寫的
  • 代碼”之類的)接口將是一個很大的優勢
  • 必須支持直接IP呼叫
  • 必須支持G711(PCMA)律8kHz單聲道
  • 必須同時支持錄製實際交談
  • 我必須能夠訂閱SIP INFO消息並發送具有自定義有效負載的SIP INFO消息
  • 應支持SRTP或通過TLS加密所有傳輸
  • 許可證:
    • 不得要求我們開源軟件
    • 費用必須低於30,000美元
    • 不應為每台售出設備產生費用(我們只要求一個線路/端口,但將出售幾台設備)

我非常高興收到有關支持級別的第一手資料(如何他們反應很快,答案有多有用...),界面也很好。我可以而且必須在上面驗證的技術細節

由於我已經進行了一些自我挖掘,因此,這是我目前正在研究的圖書館清單,並根據它們對我們的需求進行了分類(初步分析):

有前途的:

不太樂觀:

完全沒有:
Ozeki相機SDK僅使用其他免費軟件。 http://net7mma.codeplex.com ff mpeg和Fluorixe FX
MS-SIP庫@ http://www.eyeball.com/products/ms-sip-library/
五 答案:
BatteryBackupUnit
2014-07-17 12:31:21 UTC
view on stackexchange narkive permalink

我們已經對圖書館程序進行了廣泛的研究,我想與您分享我們的發現。

現在,基本上我已經開始接受基本上所有VoIP庫的接口質量。好..不好!至少從Clean Code開發人員的角度來看。諸如“許可證無效或已過期或發生任何其他錯誤”之類的異常是標準的。有些可能永遠不會拋出異常,而是引發一個事件作為響應。該事件包含一個將被“初始化”的字符串,否則將被“初始化”,這是錯誤原因。請注意,該事件不是異步的,它發生在方法完成之前。

其他具有隱名(很多我不是說像DTMF之類的東西,您可以輕鬆地在Google上搜索並找出其含義)。一個庫中有很多Typos。

其他庫再次提供了Native C ++ Imports,您將不得不大量使用 unsafe 。有些提供COM甚至是.net DLL包裝器,但是如果您想做更高級的事情,例如緩衝,您仍然需要使用指針/不安全的代碼。這些甚至沒有被包裝到 IntPtr 中,而是 long bufferPointer 。對於各種類型的庫,也很常見的是有諸如 int IsLoopbackInterfaceEnabled 之類的屬性。您需要自己從 int 轉換為 bool 的地方。

更新-Ozeki的問題

我們做得有些不好Ozeki的經驗,所以我不得不撤回之前的聲明。因此,這裡出了問題所在(除了我們已經發現並修復的幾個錯誤):首先,我們檢測到音頻質量問題。由於涉及到一些定制的VoIP-HW和無線電設備(這確實會影響質量),因此我們進行了許多測試。最後,我們可以將其精確定位到Ozeki SDK,並向Ozeki詢問了它。 Ozeki SDK使用的Windows Audio API(Wasapi或Waveform API)的默認設置是一個已知問題。

現在這還沒有結束。在我們自己編寫的示例應用程序(由Ozeki提供的示例程序)或少量演示應用程序中切換音頻API效果很好。但是,在我們的實際應用程序中,僅更改一條配置線就根本不會從揚聲器輸出任何音頻。再次,我已向Ozeki尋求幫助。我認為這可能只是另一個已知問題。不是。因此,經過一番討論,我們同意他們應該調查一個完全正常的repro。因此,我給他們發送了一封郵件。他們的回復是,該問題與揚聲器實例化有關。因此,他們並未對此問題進行徹底調查,而是試圖通過一些通用答案來欺騙我。 las,還有更多討論,他們的下一個建議是,初始化應在另一個時間進行(儘管它們的含義有所不同)。所以我花了更多的時間並嘗試了很多組合,包括在GUI線程中進行初始化,不在GUI線程中進行初始化等。它沒有幫助。 他們的最終回應是,它可以在他們的示例應用程序中運行,因此問題必須與我們的應用程序有關。如果我聽說過,這真是la腳的藉口。 :在將配置更改為其他API時,它可以“完美無瑕”地工作(不良的音頻質量)-並且根據Ozeki的更改,API應該沒有任何副作用)。

我已提交了Repro- Ozeki的案例發生在2014年12月12日,但直到現在(2015年6月8日)仍未解決。

Ozeki SDK還有其他問題,這會減緩開發速度。對於其中一些,有變通辦法(這是很痛苦的),而對於其中一些則沒有變通辦法(甚至是更大的痛苦)。

最後,我們已經決定要求C ++開發部門為我們編寫基於 PJSIP的VoIP服務。根據我們的開發人員的說法,這是一種享受。

這是有關Ozeki SDK的原始文本:

最後,我們決定使用 Ozeki SDK。我們認為它們的API是所有檢查過的庫中最好的(儘管還很不完善)。請注意,異常不是很清楚(哦,所以您告訴我地址不正確,為什麼不給我一個正確地址的示例?)並且對象的“狀態機”也不是很清楚(p例如,對於 IPhoneCall ,您可以調用 .Start()兩次,第二次也不例外,什麼也沒有,但是不管您是否使用,都行不通之前是否調用過 .HangUp(),這意味著您只能使用一次該對象(一次調用),這很好,如果該方法拋出異常並告訴我,那會更好我無法使用它。)Ozeki支持似乎還可以。它們在網站上提供了豐富的VoIP文檔,還提供了許多示例C#項目,所有這些都是最容易使用的界面。而且功能/音頻質量也可以。價格方面也可以(至少就我們的情況而言)。

以下是我針對其他SDK所做的簡短記錄:

  • Abto :可以使用ActiveX,COM和DLL。
    • 對於某些方法,需要使用長指針 /不安全代碼
    • 特定於異常的消息
    • boolean s表示為 int
    • typos
    • 基本上沒有面向對象的抽象-一切都使用 CAbtoPhoneClass
    • 有大量事件。界面不整潔且易於理解,您需要閱讀大量文檔才能知道該怎麼做。
  • pjsip包裝器
    • 直接包裝到c lib(基本上是本機導入)
  • PCBest
    • 只有一個示例C#代碼隨附最新的VS2013解決方案
    • ,需要子類 GTAPIEnv 。這有多醜?
    • 通過類似 SetInteger(string name,int value)的方法配置設置。界面乾淨的相反!
  • LanScape VoIP媒體引擎
    • 無對象抽象
    • 取而代之的是數組。 .PhoneLineRecording [2] .PhoneLineState [2] 之類的東西。因此,1990年!
    • 錯誤表示為Enums。它們是縮寫-可以理解的一半。
  • PortSIP VoIP SDK
    • 直接DLL導入接口
  • Conaito SIP客戶端SDK
    • 僅通用異常,例如“ VOIP SDK失敗”。如果我沒記錯的話,那麼您將必須閱讀一個屬性,以獲得有關該問題的一些(一點)信息。您好,並發嗎?當然。
    • 實例化API類需要引用 Windows.Forms.Control 。 WPF,有人嗎?沒有GUI服務,有人嗎?
  • VaxVoIP SIP電話SDK
    • 再一次, bool s表示為 int s
    • 每個方法都返回一個int。 C風格編碼。始終將返回碼與0進行比較,以找出是否可行。要獲取更多信息,您必須讀取一個 .Error 屬性(線程安全?再見!)
    • 文檔記錄不充分,您需要研究以下示例:再次發現事情。
    • 還有很多事件-請閱讀文檔數小時。
  • IntTalk VoIP SDK
    • 他們實際上最近停止銷售SDK。現在,他們可以為您編程自定義VoIP軟件。
他們使用開源軟件並將其出售給您。您可以自己修復或報告錯誤,而無需支付任何費用。
@Jay:我知道,FluorineFX等產品就是這種情況。但是整個SIP,RTP和SRTP處理如何?他們為此使用什麼庫?問題在於,將這些內容組合在一起才能使它們可靠地工作需要大量的專業知識。但是,我不得不承認,最近我對Ozeki SDK的質量感到非常失望。
Sip和SRTP的Sipsorcery。剩下的我的圖書館。看我的答案。最終,該公司除了付費支持開源軟件外什麼也不做。
您是否曾經考慮過@Jay:-支持收費的開源軟件?因為將其“出售”給我的老闆而不是捐贈會更容易... ;-)
我的圖書館有免費的支持,如果他從項目中賺錢,捐贈應該和買東西一樣好,並且可以用作減免稅。
@Jay:您是否有支持SLA?許多公司都喜歡開源模型,但是要求支持在一定範圍內。
我敢肯定,如果您需要一個解決方案,那麼我可以確定,但是如果問題出在我的軟件上,則可以免費獲得支持。請參閱項目頁面以證明:P
net4u
2014-12-09 17:49:54 UTC
view on stackexchange narkive permalink

我還評估了Ozaki幾個星期。看起來非常有希望,但是作為一個新手,我發現它沒有得到充分的記錄(至少對我來說,我沒有VoIP領域的經驗,我希望有更多的詳細信息,例如在涉及錯誤的方面),在連續發布之間有些矛盾,對我來說,他們的網站似乎雜亂無章,但信息井井有條。我也發現這是非常昂貴的。

您還看過其他圖書館嗎?我和大概其他人可能會對比較非常感興趣-甚至是主觀和不完整的比較。如果我將其與其他庫進行比較,我實際上認為Ozeki根本不貴-它取決於您需要多少個通道/並發連接。如果您需要很多,那是的,它很昂貴。
首先,我對此很陌生。我對價格和其他方面不是很熟悉。我剛剛下載了Conaito,VaxVOIP和Abto VoIP。例如,我對VaxVoip網絡軟件電話很感興趣。但是不幸的是,我絕對無法在Win 8.1 x64筆記本電腦上簡單地對其regsvr32的DLL進行壓縮,因此無法深入了解。所以我和Ozaki呆了一段時間。讓Ozaki感到沮喪的是,我是在兩個版本之間開始的,而最後一個版本的示例不能很好地工作,而且在我看來,它們在提供一些線索方面並不十分合作。
而且,如果至少我無法設法使他們的基本示例成功,那麼我真的想不到購買昂貴的SDK。
我不會為ozeki支付任何費用,該軟件是裝箱的免費軟件,已被混淆。
什麼免費軟件?無論如何,對我來說這似乎太昂貴了,但否則看起來很有希望。另外,我不喜歡他們的支持。不是很友好。
Jay
2015-01-04 00:31:12 UTC
view on stackexchange narkive permalink

我的項目 Managed Media Aggregation ,可以使用rtp和rtsp完成您所需的一切,它包括高效且符合標準的客戶端和服務器。

服務器支持1000多個客戶端,沒有任何問題,即使那些使用媒體的客戶端,內存使用也很少超過150 mb。

該解決方案還提供了一些編解碼器實現,但是,儘管幾乎所有記錄在案的編解碼器和容器格式(包括h264和mpeg)都有有用的工具,但目前僅完全支持Jpeg。

很快將支持播放和解碼以及編碼。

如果需要編解碼器,則可以從sipsorcery.codeplex.com

獲得sip內容。現在:

可以使用 naudio bass實現音頻轉碼。

視頻將成為您的問題領域,但是我不確定這是否是您項目的一個方面。

這裡的淨成本只是您的時間或您的捐贈。

MMA 使用 Apache License 2.0

感謝您的精彩文章,以及有關VoIP庫(尤其是Ozeki庫)的信息。我一直想知道即使在重負載下(尤其是在GC運行時-也會干擾其他線程的處理),用.net編寫的媒體處理如何才能保持穩定。如果您能詳細闡述這個主題,我將不勝感激。也許您已經寫了一篇博客文章?也許是“簡單”的,因為一切都已經由現有的非託管代碼處理了嗎? ...
我特別想知道,因為Ozeki聲稱這不是問題。我具體詢問了他們如何確保GC不會造成卡頓現象。他們說他們已經做了“優化”以防止這種情況。不幸的是,他們從來沒有更詳細地了解技術細節,我仍然持懷疑態度……
不幸的是,Ozeki沒有使用ffmpeg進行託管解碼,研究cscodec。如果您最初沒有足夠的內存壓力導致gc,則gc可能不會引入studder。我還沒有博客,但是我在項目頁面上回答了問題,該頁面上確實有討論h264解碼的線程。
Ferit
2016-05-10 14:06:54 UTC
view on stackexchange narkive permalink

我正在使用Ozeki SDK,根據我的經驗,在某些情況下,最新版本(1.3.7和1.3.8)無法正常工作。

幾乎完全沒有支持。 / p>

我現在正在測試 https://sites.google.com/site/sipekvoip/的嚴格性,這是有希望的。

Thomas Young
2017-05-08 09:04:15 UTC
view on stackexchange narkive permalink

嘗試PortSIP VoIP SDK( https://www.portsip.com/portsip-voip-sdk/)。

這是易於使用且功能強大的SDK,支持多種平台;可以下載免費的示例項目進行測試。

這是最重要的一點:PortSIP VoIP SDK並非來自任何其他開源項目。據我所知,很多SDK只是從linphone等開放源代碼項目中修改而來,然後以商業形式出售。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...