Ios 实时音频对话
我正在为一位客户设计一款iOS应用程序,该客户希望允许用户之间进行实时(最小延迟,最大50毫秒)对话(类似于Teamspeak)。延迟必须很低,因为音频也可以是现场音乐,可以用乐器播放,所以所有用户都需要同步。我需要一个服务器,它将向每个客户请求录音并发送给其他客户(并使他们在同一时间听到相同的声音)。 HTTP易于管理/实现,易于扩展,但性能非常低,因为一个HTTP请求的平均时间>50ms。。。(使用中级硬件),所以我想到了客户端和服务器之间保持开放的TCP/UDP连接。 但我有一些问题:Ios 实时音频对话,ios,audio,real-time,livechat,Ios,Audio,Real Time,Livechat,我正在为一位客户设计一款iOS应用程序,该客户希望允许用户之间进行实时(最小延迟,最大50毫秒)对话(类似于Teamspeak)。延迟必须很低,因为音频也可以是现场音乐,可以用乐器播放,所以所有用户都需要同步。我需要一个服务器,它将向每个客户请求录音并发送给其他客户(并使他们在同一时间听到相同的声音)。 HTTP易于管理/实现,易于扩展,但性能非常低,因为一个HTTP请求的平均时间>50ms。。。(使用中级硬件),所以我想到了客户端和服务器之间保持开放的TCP/UDP连接。 但我有一些问题:
- 如果我用Python开发服务器(例如使用TwistedMatrix),它的性能如何
- 由于C++难以管理(可扩展)和开发,所以不能开发C++服务器。
- 有人使用Nodejs(易于扩展)来管理TCP/UDP连接吗
- 如果我使用HTTP,使用Keep Alive是否足够快?因为通常执行HTTP请求所需的时间大于50ms(因为打开和关闭连接很困难),我希望整个过程少于该时间
- 服务器将在Linux计算机上运行
Umar.与服务器有关的是,请求本身不是瓶颈。我想您有足够的时间建立连接,因为它只发生在会话的开始。因此,该议定书没有多大相关性 <>但考虑HTTP是无状态协议,不适合音频流。有两种实时流协议可供选择。它们都将在TCP或UDP上工作(例如,使用原始套接字),并且有很多实现 在您的情况下,延迟的瓶颈不是服务器,而是网络本身。如果AP没有配置错误且连接良好,iOS设备和无线接入点(AP)之间的连接将占用约40毫秒的时间。(ping你的iPhone。)总的来说,iOS->AP->Server->AP->iOS的路径至少需要80ms。但很难保持这种延迟的稳定。(我的本地网络上AirPlay的典型延迟约为300毫秒。) 我认为在iOS设备上播放现场音乐在今天是不可行的。尝试在两台iOS设备之间使用skype,看看距离50毫秒有多近。我敢打赌没有人能做得更好,这与延迟有关 更新:新的研究成果强> 我必须修改关于iDevice wifi连接延迟的声明。显然,当你第一次ping你的设备时,延迟会很糟糕。但如果我不迟于200毫秒再次ping,我会看到AP和iDevice之间的平均延迟为2ms-3ms 我的解释是,如果AP和iDevice之间的通信时间超过200毫秒,iDevice的网络适配器将进入响应性较差的睡眠模式,可能是为了节省电池电量 看来,现场音乐又一次触手可及了……:-) 更新2 保持低延迟活动所需的ping间隔因设备而异。据报道,200毫秒用于第三代iPad。对于我的iPhone4,它更像是50ms 流式传输音频时,您可能不需要为此烦恼,因为数据交换的频率更高。在我自己的上下文中,iDevice和服务器之间的通信很少,但低延迟是至关重要的。因此,保持活力才是出路
最好的,Peter与服务器有关的是,请求本身不是瓶颈。我想您有足够的时间建立连接,因为它只发生在会话的开始。因此,该议定书没有多大相关性 <>但考虑HTTP是无状态协议,不适合音频流。有两种实时流协议可供选择。它们都将在TCP或UDP上工作(例如,使用原始套接字),并且有很多实现 在您的情况下,延迟的瓶颈不是服务器,而是网络本身。如果AP没有配置错误且连接良好,iOS设备和无线接入点(AP)之间的连接将占用约40毫秒的时间。(ping你的iPhone。)总的来说,iOS->AP->Server->AP->iOS的路径至少需要80ms。但很难保持这种延迟的稳定。(我的本地网络上AirPlay的典型延迟约为300毫秒。) 我认为在iOS设备上播放现场音乐在今天是不可行的。尝试在两台iOS设备之间使用skype,看看距离50毫秒有多近。我敢打赌没有人能做得更好,这与延迟有关 更新:新的研究成果强> 我必须修改关于iDevice wifi连接延迟的声明。显然,当你第一次ping你的设备时,延迟会很糟糕。但如果我不迟于200毫秒再次ping,我会看到AP和iDevice之间的平均延迟为2ms-3ms 我的解释是,如果AP和iDevice之间的通信时间超过200毫秒,iDevice的网络适配器将进入响应性较差的睡眠模式,可能是为了节省电池电量 看来,现场音乐又一次触手可及了……:-) 更新2 保持低延迟活动所需的ping间隔因设备而异。据报道,200毫秒用于第三代iPad。对于我的iPhone4,它更像是50ms 流式传输音频时,您可能不需要为此烦恼,因为数据交换的频率更高。在我自己的上下文中,iDevice和服务器之间的通信很少,但延迟很低