2013-05-16 47 views
2

我想流媒体桌面使用套接字屏幕捕获。 我不知道确切的方式做到这一点,所以我AWT的机器人:)桌面TCP流(java)

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

的问题是,从机器人来的图片过大,使流去。 一个1440x900的捕获大约是0.3MB,我无法足够快地创建一个流畅的24fps流。

目前我正在使用TCP套接字,因为我有问题将图像分割成多个部分并通过UDP发送它们。

大概这不是正确的方法,但什么是?高清视频流如何传输?

在此先感谢

回答

1

我认为你需要外部库来创建视频(可能取决于平台)。

使用图像的方法很简单,但您需要发送每个帧。当您使用的视频编解码器的尺寸较小,因为它发送一些帧的全尺寸和其他只包含图片的变化部分 在这里看到:

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

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


这里一些开放-source库我只是用Google搜索:

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

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


我想你也可以找到一些库,来创建图像的视频流...

1

如何HD视频流传输?

通常作为一个视频流,'一组图像'不是。视频编解码器通常具有巧妙的方式来进一步压缩图像组,例如,通过只显示下一帧的部分不同到上一个。

您可能还想研究将图像编码为高压缩JPEG。如此说来,我怀疑你会以像素为单位获得非常好的传输速率。