2

ソケットを使用してデスクトップスクリーン キャプチャをストリーミングしたいと考えています。これを行う正確な方法がわからないので、AWT のロボットを使用しました :)

Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRectangle);

問題は、ロボットからの画像が大きすぎてストリームを作成できないことです。1440x900 のキャプチャは約0.3MBで、スムーズな 24fps ストリームを作成するのに十分な速さで転送できません。

現在、私は TCP ソケットを使用しています。これは、イメージを複数の部分に分割して UDP で送信する際に問題があったためです。

おそらくこれは正しい方法ではありませんが、それは何ですか? HD ビデオ ストリームはどのように転送されますか?

前もって感謝します

4

2 に答える 2

1

ビデオを作成するには、外部ライブラリが必要になると思います (プラットフォームに依存する場合があります)。

画像を使用したアプローチは簡単ですが、各フレームを送信する必要があります。ビデオコーデックを使用すると、一部のフレームがフルサイズで送信され、その他のフレームは画像の変更された部分のみが含まれるため、サイズが小さくなります。

http://en.wikipedia.org/wiki/Key_frame

http://en.wikipedia.org/wiki/I-frame


ここに、私がグーグルで検索したいくつかのオープンソース ライブラリがあります。

https://code.google.com/p/java-screen-recorder/

http://www.xuggle.com/xuggler/


画像からビデオストリームを作成するためのライブラリもいくつかあると思います...

于 2013-05-16T16:54:37.230 に答える