3

ネットワークデバイスのオーディオをミリ秒の精度で同期する必要があります。私は非常にうまく機能するものを一緒にハックしましたが、完全に信頼できるわけではありません:

1)サーバーデバイスはtimeSinceClickパラメーターを使用してrpcを送信します

2)クライアントデバイスは、RPCが転送中に費やした時間に応じてオフセットされた同じクリックを起動します。

3)System.Diagnostics.StopWatchは、接続されているすべてのデバイスを定期的にチェックして、再生が絶対時間から大きく外れていないことを確認し、必要に応じて修正します

これを行うためのよりエレガントな方法はありますか?また、iOS以外のデバイスがミックスに追加された場合、私のやり方では手動で同期する必要があります。レイテンシーの相違により、自動化が非常に困難になります...

私はすべての目です!

乾杯、

グレッグゾ

4

1 に答える 1

0

同じマシン上の複数のデバイスをミリ秒の精度で同期するのは難しいため、複数のマシンでこれを行うことができれば、うまくいっていると言えます。私はあなたが説明する手順についてiOSに十分に精通していませんが、クロスプラットフォームの方法でこれにどのようにアプローチするかを説明できます. たぶん、あなたのアプローチは同じことになります。

  1. 1 台のマシン (「マスター」) が UDP パケットを他のすべてのマシンに送信します。
  2. 他のすべてのマシンはできるだけ早く応答します。
  3. 応答を受信するのにかかる時間を 2 で割ると、(おおよそ) あるマシンから別のマシンにパケットを取得するのにかかる時間になります。(これは検証する必要があります。おそらく、パケットの処理と送信にもっと時間がかかりますか?おそらくそうではありません)
  4. 手順 1 ~ 3 を繰り返し、極端な値を無視して残りの結果を平均すると、あるマシンから別のマシンにメッセージを送信するのにかかる時間がわかります。
  5. 現在、「同期」UDP パケットをメイン マシンから「スレーブ」マシンに送信できます。同期パケットには遅延情報が含まれるため、保存マシンがパケットを受信すると、x ミリ秒前に送信されたことがわかります。ネットワークがそれらの一部を遅延またはドロップする場合に備えて、いくつかの同期パケットを送信する必要がある場合があります。
于 2012-09-14T17:20:44.990 に答える