2011-08-08 69 views
0

webcam経由で2人のクライアントが話すことができるjavaでアプリを書いてみたいと思います。それが動作する方法は、両方のクライアントが指定されたフレームレート(1秒あたり20秒)で写真​​を撮った後、サイズと解像度を減らした後、UDPパケットを介して他のクライアントに送信するWebカメラに接続することです。私の質問は - 私はそれ自身のデータグラムパケットですべての画像を送信する必要がありますか?私は彼らが最大で0.5キロバイトしか保持できないことを読んだので、すべての写真はそんなに削減されるべきですか?それとも、私はそれをいくつかのパケットに分割する必要がありますか?UDP経由で画像を送信する

+0

UDPデータグラムは64Kまで送信できます。しかし、下位レイヤ2(イーサネット)によっては、このデータグラムは多くのIPフラグメントに分割されます。フラグメント化されたパケットは受信ホストで組み立て直されますが、フラグメントの1つが失われた場合、すべてのUDPパケットは失われます。 – jfg956

答えて

2

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

2番目のオプションを選択した場合は、this previous questionのアイデアを参考にして、既に使用済みのテスト済みのライブラリを使用してください。もし私がそれをしなければならなかったら私はVLC java bindingsと一緒に行くと思います。特定の目的(ビットレート、品質など)に最適なコーデックを評価する必要があります。

画像を送信したいのであれば、udpデータグラムに分割することをお勧めします。パケットが来たときにクライアントがイメージを再構築できるように、何らかの方法で番号付け/タグ付けする必要がありますあなたがそれらを送信するのと同じ順序で)、また、あなたは、パケットのいくつかが到着しなかったとき(クライアントは画像を破棄し、前のパケットを要求するなど)、クライアントが何をする必要があるか考える必要があります。

udpデータグラムの最大サイズも最適なオプションではないかもしれませんが、サーバークライアントはアルゴリズムの実装を行い、伝送の速度に応じてUDPフレームサイズをネゴシエートする必要があります。

0

あなたがしなければならないことは、ビデオストリームのエンコードです。ネットワーク層はそのままにして、断片化させてください。

また、UDP経由でビデオを送信している場合は、2秒程度ごとにキーフレームを送信することをお勧めします。

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

+0

私はどこから始めるべきですか?私は正しい方向に向かって指摘する必要があります。 –

関連する問題