首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测AirPlay延迟

检测AirPlay延迟
EN

Stack Overflow用户
提问于 2012-04-03 16:55:43
回答 3查看 17.8K关注 0票数 21

虽然我意识到AirPlay存在固有的滞后/延迟,但我想知道是否有一种方法(目前假设的) iPhone应用程序可以检测该延迟是什么。如果是这样的话,这个延迟值能有多精确?我更好奇的是,一个应用程序是否能够“知道”它自己的AirPlay延迟,而不是简单地最小化它。

EN

回答 3

Stack Overflow用户

发布于 2012-08-06 22:39:17

延迟不是来自网络抖动,而是由源设备(您的iPhone)决定的。

长话短说:

  • ,苹果设备总是精确的2秒(下到毫秒)。
  • 没有办法用公共API来调整它.

音频延迟需要非常准确,以便多个输出可以同步播放。

对AirPlay实施的几点解释:

  • 协议从几个RTSP命令开始。在此握手过程中,源发送rtpTime,即回放开始的时间,这也是您的延迟。典型值为88200 = 2s x 44100 Hz,
  • AirPlay设备可以将时钟与源同步,以减少网络SYNC的回放,源定期发送SYNC数据包以调整音频延迟,并确保所有设备仍保持同步。

如果使用自定义实现,可以更改延迟,但Apple通常会拒绝它们。

有关更多信息,请查看此writeup。您还可以阅读unofficial protocol documentation

票数 38
EN

Stack Overflow用户

发布于 2012-06-27 04:10:21

简单的回答是:不,苹果并没有提供一种方法来做到这一点。假设你需要你的应用程序在应用商店获得批准,你就有点倒霉了。如果你可以在一个破门而入的设备上运行你的应用程序,你可以到处搜索没有文档的API,这样你就可以做更多的事情了。

如果你需要你的应用程序可以在苹果的应用商店中使用,你可以在网络上做的大多数事情都在"Reachability“示例应用中概述。

我唯一能猜到的方法是使用Bonjour来识别主机(参见这里的示例代码https://developer.apple.com/library/ios/#samplecode/BonjourWeb/Introduction/Intro.html),然后对主机进行ping。

然而:

  • 如果有超过一个Airplay站点,您需要猜测或询问用户连接的是哪个,或者是平均值。
  • 设备可能根本不响应ping (Apple和Airport都响应ping,不确定第三方设备)。
  • 可能没有反映出音频

的实际延迟。

不要花太多时间在这上面,你应该遵循苹果为AirPlay准备音频和为AirPlay:http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AirPlayGuide/PreparingYourMediaforAirPlay/PreparingYourMediaforAirPlay.html#//apple_ref/doc/uid/TP40011045-CH4-SW1丰富应用程序的指导方针

希望这会有帮助!)

票数 4
EN

Stack Overflow用户

发布于 2018-02-27 11:04:28

您可以通过-[AVAudioSession outputLatency]查询iOS当前的硬件音频延迟,

根据outputLatency的文档

对于您的音频内容,使用启用

设备的AirPlay可能会导致2秒的延迟.检查游戏内容中的延迟。

根据我的经验,这个值在开关输出装置时会发生变化,例如:

~10ms

  • Bluetooth:~100+ms

  • AirPlay: 2s
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9997882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档