私は C# と DirectSound を使用してオーディオを録音し、ローカル ネットワーク経由でデータを受信して wave ファイルに保存する別のコンピューターに送信しています。
録音にも同様のコードを使用し、Wave ファイルの保存にも同様のコードを使用しました (NAudio を使用)。
受信したすべてのバイトをウェーブ ファイルに保存することは機能します。しかし、複数のコンピューターからオーディオを受信し、それを 1 つの wave ファイルにマージしたいと考えています。
クライアントごとに 1 つずつ、2 つの別個の wave ファイルを記録してから、それらをマージしようとしました。ただし、私の単純なアプローチでは、同期の手段は提供されません。結果の wave ファイルの長さが少なくとも 5 秒異なり、適切にマージできません。
だから、ここに私の質問があります:
1) ネットワークから受信したオーディオ バイトを取得し、Wave ファイルに保存して、結果のファイルが正しい時間にオーディオを再生するようにするにはどうすればよいですか?
たとえば、100 秒間の音声を録音し、ネットワーク経由で送信します。ただし、実際に録音されるのは 95 秒のオーディオ バイトだけです。欠落している 5 秒は、パケットの送信中に発生する小さな遅延が累積した結果です。
では、この 95 秒間のオーディオを適切なタイミング (100 秒間) に同期して再生するにはどうすればよいでしょうか?
2) 複数のクライアントから受信したオーディオ バイトを混合して、すべてのクライアントのオーディオを同期して再生する単一の wave ファイルを取得するにはどうすればよいですか?
質問を明確にする必要がある場合はお知らせください。助けていただければ幸いです。