想用java写个录制软件,但是鼠标一直闪,画面没鼠标,求救!!! 20C

代码如下

 package image;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.IOException;

//开始
public class ImageDistinguish {

    public static void main(String[] args) throws IOException, AWTException {
        Paint p = new Paint();
        p.show();
    }
//返回屏幕的流
    public static BufferedImage imageDistinguish(){
        return GetRobot.getRobot().createScreenCapture(new Rectangle(1920, 1080));

    }

}

//画图

 package image;


import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ImageObserver;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Paint{

    JFrame jf = new JFrame();

    public Paint() {    

    }

    public void show() {
        jf.setSize(1000, 800);          
        jf.setLocation(300, 100);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setTitle("画布");
        jf.add(new MyCavanse());
        jf.setResizable(false);
        jf.setVisible(true);
    }

    public static class MyCavanse extends JPanel{
        @Override
        public void update(Graphics g){ paint(g); }
        public void paint(Graphics g) {     
            g.drawImage(ImageDistinguish.imageDistinguish(), 0, 0, 1000, 800, new ImageObserver() {             
                @Override
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {                 
                    return false;
                }
            }); 
            repaint();
        }

    } 



}

//单利获取Robot,应该会快一点吧= =

package image;

import java.awt.AWTException;
import java.awt.Robot;

public class GetRobot {
    private static Robot r = null;
    public static Robot getRobot() {
        try {
            if(r == null)
                r = new Robot();
        } catch (AWTException e) {

        }
        return r;
    }
}

还有如果知道怎么把这个弄成一个视频,知道的花还请大佬告诉一下^_^

2个回答

java里面不停刷屏不是反过来影响你录制的内容吗?大概思路是悄悄地一帧帧截图然后做成视频。
不要死循环去截,太耗系统资源,每秒截个十来张就差不多了。参考片段:

。。。
    rt = new Robot();
    while (record) {
        BufferedImage img = rt.createScreenCapture(new Rectangle(screenWidth, screenHeight));
        ImageIO.write(img, "jpeg", new File("./capture/"+ System.currentTimeMillis() + ".jpeg"));
        Thread.sleep(captureInterval);
    }
。。。   

截一张图 30-60 ms 更新一次 需要 1-3ms 截图这个速度跟不上

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!