Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 实时音频对话_Ios_Audio_Real Time_Livechat - Fatal编程技术网

Ios 实时音频对话

Ios 实时音频对话,ios,audio,real-time,livechat,Ios,Audio,Real Time,Livechat,我正在为一位客户设计一款iOS应用程序,该客户希望允许用户之间进行实时(最小延迟,最大50毫秒)对话(类似于Teamspeak)。延迟必须很低,因为音频也可以是现场音乐,可以用乐器播放,所以所有用户都需要同步。我需要一个服务器,它将向每个客户请求录音并发送给其他客户(并使他们在同一时间听到相同的声音)。 HTTP易于管理/实现,易于扩展,但性能非常低,因为一个HTTP请求的平均时间>50ms。。。(使用中级硬件),所以我想到了客户端和服务器之间保持开放的TCP/UDP连接。 但我有一些问题:

我正在为一位客户设计一款iOS应用程序,该客户希望允许用户之间进行实时(最小延迟,最大50毫秒)对话(类似于Teamspeak)。延迟必须很低,因为音频也可以是现场音乐,可以用乐器播放,所以所有用户都需要同步。我需要一个服务器,它将向每个客户请求录音并发送给其他客户(并使他们在同一时间听到相同的声音)。 HTTP易于管理/实现,易于扩展,但性能非常低,因为一个HTTP请求的平均时间>50ms。。。(使用中级硬件),所以我想到了客户端和服务器之间保持开放的TCP/UDP连接。 但我有一些问题:

  • 如果我用Python开发服务器(例如使用TwistedMatrix),它的性能如何
  • 由于C++难以管理(可扩展)和开发,所以不能开发C++服务器。
  • 有人使用Nodejs(易于扩展)来管理TCP/UDP连接吗
  • 如果我使用HTTP,使用Keep Alive是否足够快?因为通常执行HTTP请求所需的时间大于50ms(因为打开和关闭连接很困难),我希望整个过程少于该时间
  • 服务器将在Linux计算机上运行
最后:你能给我推荐哪种压缩方式?我认为Ogg Vorbis会很好,但如果有更好的(并且可以在iOS中使用),我愿意接受改变

谢谢,,
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和服务器之间的通信很少,但延迟很低