2013-10-11 24 views
5

ある時点で複数のデバイスで一度にアクションを実行する必要があります。私の要件は、アプリケーションはインターネット接続を使用すべきではないということです。2つ以上のiosデバイスでオーディオを同期する方法

  1. は、すべてのデバイス上の5秒後に曲を再生する:データを再生するとき、だから私は、私はすでに次のことを試してみました

    ](Audio)の時間の正確なポイントを必要としています。 (まだミリ秒の遅れを引き起こします)

  2. 小さなテキスト通知を送信して、曲の再生を識別し、すべてのデバイスで再生を開始します。しかし、送信側と受信側のこの通知をミリ秒単位の時間がかかる:(:(
  3. 設定時間を自動にすべてのデバイスで、その後、パッシングテキストメッセージの時間差を確認し、それは各テストでミリ秒のギャップを有する。
+0

私がデータを送信するためにソケット接続を使用しています。データは非常に速く送信されていますが、私はまだ正確な時間形式を再生する必要があります。 –

+1

あなたの質問はおそらく努力を示さないので閉じられるでしょう。また、重複した質問があるため、既存の投稿をまだ検索していないことがわかります。 http://stackoverflow.com/questions/17377390/what-is-the-best-method-of-synchronizing-audio-across-ios-devices-with-wifiそれは別の問題ではありますが、この回答はhttp://stackoverflow.com/questions/8357514/ios-stream-audio-from-one-ios-device-to-another/8492598#8492598 –

+0

私はこの4日間からこれを検索しています。これらのリンクもスキャンしていましたが、助けはありません.... –

答えて

6

まず、 2つのデバイス内部の時刻を同期する必要が はどうやらあなたはiOSの上で持つことができる最も正確なクロックが絶対時間で行うことによって:。

CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); 

は、その後、あなたが違いを取得するデバイスBにデバイスAからこの時間を送信する必要がありますオンデバイスBを入力してAに送り返し、その差とネットワークトランザクションで費やされた時間を比較します。このようにして、2つのデバイスの時間を非常に正確に同期させることができます。 (これは、ネットワーク時間が要求と応答の間で対称であり、デバイスBの計算に大きなオーバーヘッドがないと仮定しています)。

enter image description here

そこから簡単にデバイス上の2 AVAudioPlayer曲を設定するインスタンス化し、prepareToPlayを呼び出し、最後に同期の遅延に応じたプレイ方法を発射することができます。 これは目立った精度ではありません。

あなたが取ることのできるもう1つのルートは、最初のデバイスの放出音に合わせて音楽を同期させるために、マイクに接続された2番目のデバイスにAudioUnitを置くことです。

+0

ありがとうございます、それはほとんど働いた...乾杯...:) –

+0

非対称ネットワークの要求/応答に関連する問題がある場合は、プロセスの最初の部分をもう一度(BからAへ)繰り返してから結果を平均することが価値があります。 – cescofry

関連する問題