标题简单说明:您是否可以仅使用Java命令截取屏幕并保存?或者,我是否需要使用特定于操作系统的程序来截取屏幕截图然后将其从剪贴板中取出?
我想知道如何使用java捕获截屏视频.我知道使用Robot类可以获得截图,但我该如何将其作为视频捕获然后上传到服务器?这到底有多大?
想法?
编辑:如果任何人还有任何其他建议,以提高屏幕捕获性能,请随意分享,因为它可能完全解决我的问题!
你好开发者,
我正在为自己制作一些基本的屏幕捕获软件.截至目前,我已经获得了一些概念/修补代码的证明,它使用java.awt.Robot将屏幕捕获为BufferedImage.然后我执行此捕获指定的时间,然后将所有图片转储到磁盘.从我的测试中我得到大约每秒17帧.
时长:15秒拍摄的图像:255
时长:15秒图像捕获:229
显然,这对于真正的屏幕捕获应用程序来说还不够好.特别是因为这些捕获只是在我的IDE中选择一些文本而没有任何图形密集的文本.
我现在有两个班级是Main类和一个"Monitor"类.Monitor类包含捕获屏幕的方法.我的Main类有一个基于时间的循环,它调用Monitor类并将它返回的BufferedImage存储到BufferedImages的ArrayList中.如果我修改我的主类来生成几个执行该循环的线程,并且还收集有关捕获图像的系统时间的信息,我可以提高性能吗?我的想法是使用一个共享数据结构,它将在插入时基于捕获时间自动对帧进行排序,而不是将连续图像插入到arraylist中的单个循环.
码:
public class Monitor {
/**
* Returns a BufferedImage
* @return
*/
public BufferedImage captureScreen() {
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = null;
try {
capture = new Robot().createScreenCapture(screenRect);
} catch (AWTException e) {
e.printStackTrace();
}
return capture;
}
}
Run Code Online (Sandbox Code Playgroud)
public class Main {
public static void main(String[] args) throws InterruptedException {
String outputLocation = "C:\\Users\\ewillis\\Pictures\\screenstreamer\\";
String namingScheme = "image";
String mediaFormat = "jpeg";
DiscreteOutput output …Run Code Online (Sandbox Code Playgroud) 我正在实现一个简单的眼动仪,它需要快速截屏屏幕上发生的事情,同时从网络摄像头捕获视频.
问题在于使用Robot进行操作的方法,这里提到:https://stackoverflow.com/questions/2475303/java-library-for-capturing-active-window-screenshot 非常慢.
顺便说一句,从网络摄像头检索视频的速度要快得多,并返回字节数组,这样处理速度非常快.
有人知道更快的解决方案吗?可以链接到Java的C++库也可以提供帮助.
谢谢!
更新:决定切换到OpenCV,现在正在寻找用它制作截图的方法:)
我在stackoverflow中发现了类似的问题.但我想要具体.我访问了一个网站screencast-o-matic.他们有一个java applet的web应用程序,它捕获屏幕以导出为视频.我想开发类似的应用程序.这样做需要哪些知识和步骤?
感谢致敬.
编辑另一个网站屏幕.
我目前正在使用 Java 中的 Robot 类来记录屏幕。但是,它没有达到每秒 30 帧的最小值。我不是重新创建对象,而是尽可能高效,但我平均每秒只有 15 帧左右。机器人根本不切割它。
我可以用什么来捕获屏幕?我试过 Xuggle,但我似乎也无法足够快地捕捉它。