0

TCP/Live-Streaming/Synchronization (プログラミング言語: Java) について質問があります。

カメラからオーディオとビデオをキャプチャしているクライアントがあるとしましょう。2 つの異なるスレッドでオーディオとビデオのストリームを同時に受信しているサーバーに、TCP ソケットを介して (スレッド経由で) オーディオとビデオのデータを同時に送信します。

[UDP は通常、ライブ ストリーミング アプリケーションに使用されますが、TCP を使用する理由があります..]

問題は、TCP 経由で同期が失われる可能性があるかどうかです。異なるソケットに 2 つのストリーム (1 つはオーディオ用、もう 1 つはビデオ用) があり、パケットを再送信する必要があるという問題がある可能性がありますが、失われたパケットの再送信は問題になります (つまり、 TCP 経由でパケットを再送信すると、これにより永続的な遅延が発生しますか、それともクライアントは失われたパケットを送信し、次のパケットを数ミリ秒速く送信しますか?

オーディオ信号とビデオ信号を同時にサーバーに送信しています。それらは常にサーバーに同時に到着しますか? そうでない場合、問題を生成/シミュレートする方法はありますか?

いくつかのテストを行ったところ、オーディオとビデオは常に同期していました。しかし、それが常にそのようになるかどうかはわかりません(5時間以上のストリーミングの後でも)。

ありがとうございました。

4

1 に答える 1

0

2 つの異なるソケットを使用する場合、保証はありません。TCP は正しい順序でのデータ転送を保証しますが、オーディオとビデオに 2 つの異なるストリームを使用する場合は適用されません。

ただし、接続が十分に高速な場合は問題ありません。できるだけ早く送信します。ただし、1 つのストリームが「詰まる」と、遅延して同期が取れなくなりますが、ビデオを送信する場合に発生するとは思えません (FPS または解像度が高すぎない限り)。

単一のストリームを使用する方が安全だと思いますが、正直なところ、あなたの方法で問題ないと思います。それはすべて、クライアントの速度、サーバーの速度、およびネットワークの速度に依存します。

于 2012-07-12T00:16:51.727 に答える