桌面TCP流媒体(java)

时间:2013-05-16 16:20:29

标签: java sockets tcp streaming awt

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

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

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:1)

  

如何传输高清视频流?

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

您可能还希望将图像编码为高压缩JPEG。

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

答案 1 :(得分: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/


我想您也可以找到一些用于从图像创建视频流的库...