任何人都可以帮助我清除我的疑虑,我正在尝试实施SIP应用程序,我已经有sip服务器设置,我有我的SIP帐户的用户名和密码.

现在我尝试使用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世界充满了这么多破碎的产品,这将使您受益匪浅.

如何使用音频编解码器制作iOS VOIP / SIP应用程序的更多相关文章

  1. 如何使用音频编解码器制作iOS VOIP / SIP应用程序

    任何人都可以告诉我在没有视频功能的情况下掩盖SIP应用程序需要多少天?多少天会和专家&中级开发人员将在没有任何SIP应用程序的任何先验知识的情况下制作这样的应用程序?理解为什么事情按照他们的方式运作,以及为什么SIP世界充满了这么多破碎的产品,这将使您受益匪浅.

  2. Linphone如何支持Android / iOS上的推送通知

    >我如何知道给定的SIP服务器是否兼容?>这一切都仅限于Linphone自己的服务器吗?

  3. android – 如何创建点对点连接?

    11个在阅读了有关如何创建P2P网络功能的更多内容之后,我想开始创建自己的对等套接字.我正在研究Android平台的一些应用程序,我有问题,我不太确定如何处理,两者密切相关.>如何将一个相对较小的数据文件从一个Android设备发送到另一个?>是否可以从一个Android设备创建临时p2p实时数据流到另一个?

  4. linphone-sdk-android版本号生成解析

    这篇文章主要为大家介绍了linphone-sdk-android版本号生成解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. sip – 如何检查端口5060是否以centos开放?

    如何测试我的linux是否真的有真正的IP地址并且我没有设置iptables阻止规则,或者我可以在我的linux中运行任何工具,以便我的互联网提供商的IP或网关能够通过端口5060收听或发送?nmap-v-sVlocalhost-p5060会说实话.您还可以使用:netstat-apnt|grep5060要么ss-aln

  6. 用于ubuntu的简单Voip服务器

    我有一个连接2个家庭的网络,并希望设置一个简单的voip服务器,以便我可以在房屋之间打电话.它需要为ubnutu,我使用免费的3CX系统,虽然它的工作非常出色,它不支持Linux,我可以得到一个Windows框.用户永远不需要呼叫外线.他们只会在笔记本电脑/电脑之间进行“通话”.有人可以提出建议,甚至是我可以遵循的教程您只能使用带有SIP或IAX2协议的星号.apt-getinstallaster

  7. 如何在Ubuntu中配置PyQt4 for Python 3?

    我使用python3,所以我需要在eclipse中配置PyQt4的路径,但似乎突触只安装PyQt4forpython2,因为我只在python2.6和2.7中找到相对的文件和文件夹。那么我该如何使PyQt4与Python3和eclipse一起使用?打开包装并进入目录:下载最新的PyQt–PyQt-x11-gpl-4.8.5.tar.gz的源代码,并安装它:注意,我正在发布python3而不是python。

  8. ubuntu – PyQt5 – SIP API 10级错误.需要API 11

    )site-pacakges目录的内容是:但在以前的安装中它是不同的.不知道为什么!:我无法弄清问题在哪里,我对这个产品的工作越多,我理解的就越少.我正在Ubuntu13.10上进行此安装,因为由于Python3.3-5编译错误,PyQt5无法在Ubuntu12.04上运行..仍然没有答案.…)并重新安装自定义版本.顺便说一下,我对所有PyQt5包都做了同样的事情.根据您不完整的站点包列表,您可能还安装了一些较旧的PyQt5发行版包.目前的模块有更多模块.

  9. Skype连接作为Asterisk的SIP / Trunk

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. windows – 我们局域网内的视频会议有哪些软件

    还有其他软件包可以做同样的事情吗?

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部