Java applet屏幕截图到video

我想知道如何使用java捕获截屏video。 我知道使用Robot类可以获得截图,但我如何将其作为video捕获然后上传到服务器? 这到底有多大?

想法?

使用纯Java解决方案,我怀疑它是否有效,但它当然取决于您对“video”的解释。

在我的桌面上,分辨率为1920×1200,使用Java Robot捕获整个屏幕时,我每秒可以获得大约20帧。 由于每个映像包含> 6 MB的未压缩数据,因此我需要超过1 Gbps的带宽才能将这些映像的原始数据传输到服务器。 最有可能的是,需要如此多的带宽是不可接受的,因此您要么必须减少每秒的帧数,要么对图像应用某种压缩。

一种可能性是使用ImageIO支持的图像格式之一压缩每个图像。 压缩图像的大小当然在很大程度上取决于屏幕上实际显示的内容,但压缩机的性能并不是特别好。 压缩到PNG应该为大多数桌面内容提供最佳的无损压缩率,但至少我的计算机每秒只能处理大约2帧。 使用具有默认质量设置的JPEG压缩器可达到每秒约5帧。

通过像jffmpeg这样的抽象层使用常见的video编解码器可能会获得更好的性能和更好的压缩比,但我怀疑像WMV或H.264这样的主流video编解码器适用于常见的桌面内容。

如果你真的需要纯Java解决方案(并且不能使用任何可用的独立软件,那就是你所要求的),我会尝试实现我自己的简单压缩算法。 对于常见的桌面活动,大多数连续屏幕截图之间应该有很小的差异,所以可能工作得很好的是完全传输第一帧,然后实现一个粗略检测矩形的算法,其中已经进行了更改,然后仅传输这些与JPG或优选(质量)PNG压缩相结合。

或者使用Xuggler,它是Java中FFmpeg的更好包装器。 事实上,捕获屏幕和编码video的代码是标准教程之一 。

您可以将Java之类的东西用于本机FFMPEG构建,并在运行时执行命令行。 这是我制作的applet: http : //have2chat.net/screencast/

我已经为Screencast-O-Matic.com下载了主要的capture *.JAR文件。 要下载文件:

  1. 请访问http://screencast-o-matic.com/jars/ScreencastOMaticRun-1.0.5.jar
  2. 保存文件
  3. 提取内容(我打算在商业上使用它!)