何台のデバイスを使用していますか?私はそれがサーバークライアントスキームだと思います。これが私がすることです(それはうまくいかないかもしれませんが、あなたは提案/アプローチを求めています)、非常に大まかなアルゴリズム:
-サーバーはタイマーを設定し、PINGパケットを使用してその値をクライアントに送信し、クライアントごとに記憶します
-クライアントはPINGパケットを受信し、応答パケットを送信します
-サーバーは応答パケットを取得し、時間をチェックして、結果のデルタをどこかに(ベクトルで)保存します
-サーバーはより多くのPINGパケットを送信し、より多くの時間デルタを取得します
-サーバーに十分なデータがある場合、サーバーは平均ping時間(CLIENTX_TIME)を計算し、最大のもの(BIGGEST_TIME)を選択します。
-サーバーはすべてのクライアントにSTARTパケットを送信します。パケットには、XX_TIMEにSTARTPLAYINGという追加情報が含まれています。
-サーバーはBIGGEST_TIMEの後に音楽の再生を開始します
-クライアントはSTARTパケットを取得し、XX時間後に音楽の再生を開始します。XXはプレーヤーごとに計算されます(したがって、最も遅いクライアントの場合は0になり、その他の場合はBIGGEST_TIME-CLIENTX_TIMEになります)
-このプロセスは何度も繰り返されます。何かをプレイしたいときはいつでも、事前にそれを行います
常にすべてを同期させることは決してできないということです-これは残念ながらネットワークの性質です;)