0

2人のクライアントがウェブカメラを介して会話できるようにするアプリをJavaで作成したいと思います。それが機能する方法は、両方のクライアントが指定されたフレームレート(おそらく1秒あたり20)で写真を撮るWebカメラに接続し、サイズと解像度を減らしてから、UDPパケットを介して他のクライアントに送信することです。私の質問は、すべての画像を独自のデータグラムパケットで送信する必要があるかどうかです。私は彼らがせいぜい0.5キロバイトしか保持できないことを読んだので、すべての写真をそれだけ削減する必要がありますか?または、複数のパケットに分割する必要がありますか?

4

2 に答える 2

2

更新が必要なものだけを転送するアルゴリズム/コーデックを使用するのではなく、画像全体を送信してもよろしいですか?

2番目のオプションを選択した場合は、この前の質問と、その目的のためにすでに使用およびテストされているライブラリからいくつかのアイデアを取り入れることができます。やらなければならないとしたら、VLCjavaバインディングを使うと思います。特定の目的(ビットレート、品質など)に最適なコーデックを評価する必要があります。

それでも画像を送信したい場合は、画像をudpデータグラムに分割することをお勧めします。パケットが到着したときにクライアントが画像を再構築できるように、画像には何らかの番号/タグを付ける必要があることに注意してください(必ずしも同じ順序で送信されるとは限りません)。それらを送信します)、また、一部のパケットが到着しなかった場合にクライアントが何をする必要があるかを考える必要があります(画像を破棄する、前のパケットを要求するなど)。

最後に考えたのは、udpデータグラムの最大サイズも最適なオプションではない可能性があるため、サーバークライアントはおそらくアルゴリズムを実装し、送信速度に応じてudpフレームサイズをネゴシエートする必要があります。

于 2011-08-08T17:06:20.373 に答える
0

あなたがすべきことは、ビデオストリームをエンコードすることです。ネットワーク層はそのままにして、断片化を実行させます。

また、UDPを介してビデオを送信する場合は、2秒ごとにキーフレームをスローすることをお勧めします。

各フレームを独自の画像として送信しないでください。ビデオコンプレッサーを使用してください。

于 2011-08-08T16:45:29.103 に答える