如何仅使用音频编解码器制作 iOS VOIP/SIP 应用程序 [关闭]

Posted

技术标签:

【中文标题】如何仅使用音频编解码器制作 iOS VOIP/SIP 应用程序 [关闭]【英文标题】:How to make an iOS VOIP/SIP Application with audio codec's only [closed] 【发布时间】:2013-09-04 06:53:18 【问题描述】:

谁能帮我解决我正在尝试实现 SIP 应用程序的疑虑,我已经设置了 sip 服务器,并且我有我的 sip 帐户的用户名和密码。

现在我尝试使用 PJSIP 和 SIPHON 但不知何故失败并出现很多错误。 然后我尝试了LinPhone,效果很好。 然后将 LinPhone 项目中的文件复制到我的项目中,并且仍在处理它。 (我还应该在我的项目中复制什么才能开始 - 我已经在我的应用程序中复制了 apple-darwin include & lib 文件夹) 我想在应用程序中使用 G711(A 和 u)编解码器,但我找不到任何头文件,请任何人建议我如何在我的应用程序中将 G711 编解码器与 LinPhone 库一起使用?

还有谁能告诉我,掩盖没有视频功能的 SIP 应用程序需要多少天? (使用 GSM、Speex、G711 编解码器的音频通话 - 仅限) 在没有任何 SIP 应用程序的先验知识的情况下,专家和中级开发人员将需要多少天来制作这样的应用程序? (根据您的任何粗略想法。)

是否有任何其他好的开源库可以轻松使用来制作这样的应用程序? 或者任何可用的教程? (LinPhone 的文档不合格)。

我的方向正确吗?

【问题讨论】:

【参考方案1】:

警告词

这听起来像是我在试图劝阻您不要说服这种努力。远非如此,SIP 是一个有趣的协议(最终),看到它们融合在一起是非常有益的。让这样的野兽开始工作,你会感到非常满意,我祝你好运,按照你的意愿塑造它!但是,请做好准备:SIP 是一种令人沮丧的野兽。

以下时间线是根据我自己的经验得出的,不过由于你们有两个,我稍微缩短了时间线。我们的开发周期持续了将近一年,但我既是项目的负责人,也是唯一的程序员,那段时间包括在 UI、需求协调、规划、文档等方面完成的所有工作。

第 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 世界充满了如此多的损坏产品,这将使您受益匪浅。

【讨论】:

hiii,你能帮我在 xcode 中使用 sip 构建一个应用吗? 看来我在地狱之门了。

以上是关于如何仅使用音频编解码器制作 iOS VOIP/SIP 应用程序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone/iOS 中播放 xiph.org 音频编解码器?

如何使用麦克风以 AAC 编解码器格式录制音频

使用 windows 编解码器解码音频文件

实时音频编解码之十七 Opus解码 SILK解码

实时音频编解码之十六 Opus解码

实时音频编解码之七 预加重