现在我尝试使用PJSIP& SIPHON但不知何故失败了很多错误.
然后我尝试了LinPhone,它工作正常.
然后将LinPhone项目中的文件复制到我的项目中,并继续处理它. (我还应该在项目中复制什么才能开始 – 我在我的应用程序中复制了apple-darwin include& lib文件夹)
我想在应用程序中使用G711(A和u)编解码器,我找不到任何头文件,请任何人建议我如何在我的应用程序中使用G711编解码器和LinPhone库?
任何人都可以告诉我在没有视频功能的情况下掩盖SIP应用程序需要多少天? (仅限GSM,Speex,G711编解码器的音频通话)
多少天会和专家&中级开发人员将在没有任何SIP应用程序的任何先验知识的情况下制作这样的应用程序? (根据你的任何粗略想法.)
有没有其他好的开源库可供轻松使用来制作这样的应用程序?
或者任何类型的教程可用? (LinPhone的文档不符合标准).
我正朝着正确的方向前进吗?
解决方法
这可能听起来像是在试图阻止你继续这种努力.除此之外,SIP是一个有趣的协议(最终),看到它们聚集在一起是非常有益的.让这样的野兽上班,你会非常满意,我祝你好运,按照自己的意愿塑造它!但是,要做好准备:SIP是一个令人沮丧的野兽.
以下时间表是基于我自己的经验,虽然我已经缩短了时间表,因为有两个人.我们的开发周期持续了将近一年,但我既是项目的主管,又是项目的程序员,那时候包括在UI上完成的所有工作,需求协调,计划,文档等.
第1周和第1周2
SIP是一个复杂的规范,具有许多扩展和特性,特别是与防火墙,转发,分支和连接有关.我建议你开始查找RFC,只需花费大量时间来阅读信令规范,以及应用程序所需的任何扩展,包括至少包括基本规范,SDP规范和ICE协议规格.
如果你做得对,全职,这应该占用一周左右.对于第2周,请考虑您需要哪些扩展规范(在线指示,前置条件,会议,GRUU等),并花时间阅读这些规范.在它们上互相钻取,这是很多信息,而且它们彼此之间的相互关系相对复杂.
打破协议分析器(Wireshark等),看看你的应用程序在线上做了什么.阅读完规范后,您现在可以很好地了解为什么各种SIP产品难以互相玩耍,以及如何开始使用自己的应用程序.
第3-6周
即使使用了不错的工具包,您也可以花费大约一个月的时间让SIP在传递信令信息时可靠地完成您想要的工作,并编写所需的基础设施来响应SIP信号.有一些疯狂的边缘情况,你可以想象在并发处理中的每一个陷阱现在都放大了,因为你有三个独立的代理,其中一些将具有非常高的延迟,不可靠的网络连接,都试图协调关于同一笔交易.
不要采取快捷方式,代码,测试,代码更多,寻找故障和边缘情况,并继续前进. RFC有助于理解您将遇到的问题,但其中一些问题只是必须通过.
第7周& 8
根据您的应用程序的要求,只需在最终用户代理之间建立基础连接,就可以正确地占用您创建可靠产品的大部分工作.在你们两个人之间,你们可能会在接下来的几个星期内第一次使这部分工作,并且在应用程序的开发周期的剩余时间内可能无数小时诊断边缘条件.请记住,这里存在需要媒体代理的边缘情况,以及用户严重防火墙以至于无法完成任何操作的无赢边缘情况.别忘了处理它们.
第9-11周
此时,您的手机应该(相当)可靠地相互连接,具体取决于您的经验和网络知识,以及相当严格的防火墙.前置条件规范对于减少感知延迟非常有用,因为您可以暂停振铃直到网络层已经连接.我的经验不会很好地告知下一层(协议),就像Java一样,媒体编码和解码是在一个银盘上交给我的,除了quicktime,我必须自己做.我会用一两个星期的时间来使协议正常工作,并通过SDP可靠地传递协议信息,但这对我来说可能是一个非常乐观的估计.
如果您以前从未使用过RTP / RTCP,那么再添加一周,因为虽然它们并不复杂,但是从RTCP获得的反馈正确回应可能具有挑战性,并且在某种程度上是一种黑暗的艺术,尽管非常关键确保最佳的网络利用率和媒体质量.
第12周
可能,在这一点上,您将意识到您希望能够连接的一个或另一个SIP产品,不喜欢您的实现,有时出于完全无法解释的原因.如果您需要支持挑剔的产品,您将在接下来的几周到一个月内诊断为什么.如果你的产品是专有产品,你可能不关心这一步,但它也是一种双重检查你是否严重破坏规范的方法. (我们都这样做,所以不要假设你使用的测试产品也是正确的!总是仔细检查!)
额外
请记住,上述内容主要用于估算基于SIP / SDP / ICE的解决方案运行良好所需的时间,而不是使用此类基础架构的应用程序. UX在iOS世界中是最重要的,因此请确保您的应用程序引人注目,并花费大量时间来正确使用它.
即使您使用库来简化编码,学习底层协议!理解为什么事情按照他们的方式运作,以及为什么SIP世界充满了这么多破碎的产品,这将使您受益匪浅.