私はそのサーバーでクライアント/サーバーアプリを作成しており、外部デバイス(マイクなど)からキャプチャされたオーディオサンプルをキャプチャしてクライアントに送信するライブオーディオデータを送信しています。次に、クライアントはそれらのサンプルを再生したいと考えています。私のアプリはローカル ネットワークで実行されるので、帯域幅に問題はありません (私のネット カードは 1000Mb ですが、私のサウンドは 8k、8 ビット ステレオです)。クライアントでは、データを短時間バッファリングしてから再生を開始します。サーバーからデータが到着すると、サウンドカードに送信します。これは問題なく動作しているように見えますが、問題があり
ます。クライアント側のバッファが終了すると、再生されたサウンドにギャップが発生します。
これは、サーバーとクライアントのサンプリング時間の違いによるものだと思います。つまり、サーバーの 8K とクライアントの 8K は同じではありません。
クライアントの再生とバッファを一時停止することでこれを解決できますが、適切な帯域幅があり、ギャップや一時停止なしでサウンドを再生できるはずなので、上司はそれを受け入れません。
そのため、クライアントで再生速度を動的に変更することにしましたが、方法がわかりません。
私は Windows (ネイティブ) でプログラミングしており、現在 waveOutXXX を使用してサウンドを再生しています。他のネイティブ ライブラリ (DirectX/DirectSound、Jack など) を使用できますが、クライアントでスムーズに再生できるはずです。
問題なく何度も waveOutXXX をプログラムしましたが、問題がないことはわかっていますが、動的リサンプリングの問題を解決できません。