AirPlayには固有のラグ/レイテンシーがあることに気づいていますが、(現在は架空の)iPhoneアプリがそのレイテンシーを検出する方法があるかどうか疑問に思っています。もしそうなら、そのレイテンシー値はどれくらい正確でしょうか?私は、アプリが単にそれを最小化するのではなく、それ自身のAirPlayレイテンシーを「知る」ことができるかどうかにもっと興味があります。
遅延はネットワークジッターによるものではなく、ソースデバイス(iPhone)によって決定されます。
短編小説:
複数の出力を同期して再生できるように、オーディオのレイテンシーは非常に正確である必要があります。
AirPlayの実装に関するいくつかの説明:
rtpTime
を送信します。これは、再生が開始される時間であり、これはレイテンシーでもあります。通常の値は88200 = 2s x 44100Hzです。SYNC
パケットを送信してオーディオの遅延を調整し、すべてのデバイスがまだ同期していることを確認します。カスタム実装を使用する場合、レイテンシーを変更することは可能ですが、Appleは通常それらを拒否します。
詳細については、これを確認してください writeup 。 非公式のプロトコルドキュメント も読むことができます。
簡単な答えは次のとおりです。いいえ、Appleはこれを行う方法を提供していません。AppStoreでアプリを承認する必要があると仮定すると、運が悪いことになります。ジェイルブレイクされたデバイスでアプリを実行でき、ドキュメント化されていないAPIを検索して、より多くのことを実行できます。
アプリをAppleのAppStoreで利用できるようにする必要がある場合、ネットワークに関して実行できるほとんどのことは、「到達可能性」サンプルアプリに概説されています。
良い推測を得るために私が考えることができる唯一の方法は、Bonjourを使用してホストを識別することです(ここのサンプルコードを参照してください https://developer.Apple.com/library/ios/#samplecode/BonjourWeb/Introduction /Intro.html )次に、ホストにpingを実行します。
しかしながら:
これに多くの時間を費やす代わりに、AirPlay用にオーディオを準備してAirPlay用にアプリを強化するためのAppleのガイドラインに従う必要があります: http://developer.Apple.com/library/ios/#documentation/AudioVideo/ Conceptual/AirPlayGuide/PrepareingYourMediaforAirPlay/PrepareingYourMediaforAirPlay.html#// Apple_ref/doc/uid/TP40011045-CH4-SW1
お役に立てれば! :)
-[AVAudioSession outputLatency]
で、iOSの現在のハードウェアオーディオレイテンシーを照会できます。
outputLatency
のドキュメントによると:
オーディオコンテンツにAirPlay対応デバイスを使用すると、2秒の遅延が発生する可能性があります。ゲームコンテンツのこの遅延を確認してください。
そして私の経験によれば、この値は出力デバイスを切り替えると変化します。例: