2012-01-15 24 views
0

jlibrtpを使用して、クライアントからサーバーにバッファリングされたイメージを送信するだけです。jlibrtpでJavaのRTPを使用してパケットのレートを減らす方法

各パケットは1480バイトに制限されているので、各画像をいくつかの部分に分割し、サーバーに送信する必要があり、すべてのバイトを受信して​​バッファードイメージを改訂するまで待機する必要があります。

ただし、バッファイメージのサイズが大きすぎると、パケットの一部が失われることがよくあります。しかし、サイズを小さくしようとすると、この問題は起こりません。

実際に送信する画像は、ウェブカメラからの連続的なフレームキャプチャです。そのため、「完全ではない」画像を削除しようとすると、画像画面は非常に「非連続的に」表示されます。

この状況を改善する方法はありますか?

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

+0

フレームをエンコードするにはどのコーデックを使用しますか? –

+0

私はちょうどjavaCVを使用してウェブカメラから画像を取得し、バイト配列に画像を変換してそれを送信します – Kenny910

+0

なぜあなたはMPEGストリーム上のデータを送り、ネットワーク上でこのストリームを送りませんか?(これはJMF/FMJライブラリを探す)。 MPEGはネットワーク上でいくつかの回復力を提供し、フレーム損失に対処できます。 –

答えて

0
  • MPEG-2、MPEG-4、Theora、WebMなどのビデオエンコード形式に切り替えます。
  • 送信者に、一部のパケットが届かず、再送信する必要があることを返信することができます。ここでのTCPの優位性は、パケットが古すぎるときにタイムアウトして、要求を止めることができるということです。私はjlibrtpのためにそれをすぐに見つけることができませんが、他のRTPライブラリは再送信要求機能を持っています。
  • イメージの解像度を下げ、データを少なくすることができます。
  • さらにデータを送信できます。この余分なデータがforward error correction systemの一部である場合、失われたパケットを再構築することができます。
  • 両方を行うことができます。解像度を下げてエラー訂正を増やすと、帯域幅は同じままです。
関連する問題