2

我想 使用套接字流式传输桌面屏幕截图。我不知道这样做的确切方法,所以我选择了 AWT 的机器人 :)

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

问题是来自机器人的图像太大而无法制作流。一个 1440x900 的捕获大约是0.3MB,我无法以足够快的速度传输它来创建流畅的 24fps 流。

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

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

提前致谢

4

2 回答 2

1

高清视频流如何传输?

通常作为视频流,而不是“图像组”。视频编解码器通常有巧妙的方法来进一步压缩图像组,例如只显示下一帧与前一帧不同的部分。

您可能还想研究将图像编码为高压缩 JPEG。

话虽如此,我怀疑你会以像素为单位获得非常好的传输速率。

于 2013-05-16T16:49:49.610 回答
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 回答