尽管我知道AirPlay具有固有的延迟,但我想知道是否有一种方法可以让(当前假设的)iPhone应用程序检测该延迟是多少。如果可以,那么这种延迟值有多精确?我更好奇的是,一个应用程序是否可以“知道”自己的AirPlay延迟,而不仅仅是将其最小化。
音频延迟不是来自网络抖动,而是由源设备(你的 iPhone)决定。
简而言之:
音频延迟需要非常准确,以便多个输出可以同步播放。
AirPlay实现的一些解释:
rtpTime
,即播放开始时间,也就是你的延迟时间。典型值为88200 = 2s x 44100 Hz。SYNC
数据包来调整音频延迟,并确保所有设备仍然同步。如果使用自定义实现,则可以更改延迟,但通常被苹果拒绝。
不要花太多时间在这上面,你应该遵循苹果的指南为AirPlay准备您的音频并丰富您的应用程序:http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AirPlayGuide/PreparingYourMediaforAirPlay/PreparingYourMediaforAirPlay.html#//apple_ref/doc/uid/TP40011045-CH4-SW1
希望这能帮到你!:)
你可以通过-[AVAudioSession outputLatency]
查询iOS当前的硬件音频延迟。
根据outputLatency
的文档:
使用支持AirPlay的设备播放音频内容可能会导致2秒的延迟。在游戏内容中检查此延迟。
根据我的实验,当切换输出设备时,这个值会发生变化,例如: