【问题标题】:Detecting the AirPlay latency检测 AirPlay 延迟
【发布时间】:2012-04-03 16:55:43
【问题描述】:

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

【问题讨论】:

  • 发送一个信号然后听麦克风返回的声音?
  • 我正在寻找前置扬声器延迟。信号通过网络传输需要多长时间。等待扬声器和声音传输会增加我不一定感兴趣的额外延迟。谢谢!

标签: ios audio airplay


【解决方案1】:

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

长话短说:

  • 对于 Apple 设备,它总是精确到 2 秒(精确到毫秒)。
  • 无法使用公共 API 对其进行调整。

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

关于 AirPlay 实现的一些解释:

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

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

查看writeup 了解更多信息。您也可以阅读unofficial protocol documentation

【讨论】:

  • 感谢洛朗的链接。我一直在努力解决这个延迟问题,你的 2 秒评论解决了很多问题。 AVPlayer over Airplay 似乎没有这种延迟,但有其他限制。
  • 很棒的参考!清除了一些不必要的谜团,该功能可以通过更多控制变得更棒。
【解决方案2】:

简短的回答是:不,Apple 不提供执行此操作的方法。假设您需要您的应用程序在 App Store 中获得批准,那么您有点不走运。如果您可以在越狱设备上运行您的应用程序,您可以四处搜索未记录的 API,这些 API 可以让您做更多事情。

如果您需要在 Apple 的 App Store 中提供您的应用,您可以通过网络执行的大部分操作都在“可达性”示例应用中进行了概述。

我能想到的准确猜测的唯一方法是使用 Bonjour 来识别主机(请参阅此处的示例代码 https://developer.apple.com/library/ios/#samplecode/BonjourWeb/Introduction/Intro.html),然后 ping 主机。

但是:

  • 如果有超过 1 个 Airplay 电台,您需要猜测或询问用户连接到哪个,或者取平均值。
  • 设备可能根本不响应 ping(Apple TV 和 Airport Express 都响应 ping,不确定第 3 方设备。)
  • ping 可能无法反映音频的实际延迟

您应该遵循 Apple 的指南来为 AirPlay 准备音频并为 AirPlay 丰富您的应用程序,而不是花费太多时间:http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AirPlayGuide/PreparingYourMediaforAirPlay/PreparingYourMediaforAirPlay.html#//apple_ref/doc/uid/TP40011045-CH4-SW1

希望这会有所帮助! :)

【讨论】:

    【解决方案3】:

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

    根据outputLatency的文档:

    为您的音频内容使用支持 AirPlay 的设备可能会导致 2 秒延迟。检查游戏内容是否存在延迟。

    而且根据我的经验,这个值在切换输出设备时会发生变化,例如:

    • 扬声器:~10ms
    • 蓝牙:~100+ms
    • 隔空播放:2 秒

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2017-10-29
      • 2014-08-22
      • 1970-01-01
      相关资源
      最近更新 更多