视频类问题。 你好: 我想用java实现截取屏幕并保存成视频格式,相当于实现屏幕录像机功能。你能提供给我一些思路或是一些代码吗?谢谢:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Robot抓取屏幕,然后多幅图片合成应该可以 //记录屏幕、类似录像package com.wnetw.project.media; import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*;import java.io.*; public class WnetWScreenRecorder extends Thread{ private Dimension screenSize; private Rectangle rectangle; private Robot robot; private long i = 0; private JPEGImageEncoder encoder; public WnetWScreenRecord() { screenSize = Toolkit.getDefaultToolkit().getScreenSize(); rectangle = new Rectangle(screenSize);//可以指定捕获屏幕区域 try{ robot = new Robot(); }catch(Exception e){ e.printStackTrace(); System.out.println(e); } } public static void main(String[] args) { new WnetWScreenRecord().start(); } public void run(){ FileOutputStream fos = null; while (true){ try{ BufferedImage image = robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域 fos = new FileOutputStream("C:\\records\\" + i + ".jpg"); JPEGCodec.createJPEGEncoder(fos).encode(image);//图像编码成JPEG fos.close(); i = i + 1; Thread.sleep(40);//每秒25帧 }catch(Exception e){ e.printStackTrace(); System.out.println(e); try{ if (fos != null)fos.close(); }catch(Exception e1){} } } }}//播放屏幕录像package com.wnetw.project.media;import java.awt.*;import javax.swing.*;import java.io.*;public class WnetWScreenRecordPlayer extends JFrame{ BorderLayout borderLayout1 = new BorderLayout(); Dimension screenSize; public WnetWScreenRecordPlayer() { super(); screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(screenSize); Screen p = new Screen(); Container c = this.getContentPane(); c.setLayout(borderLayout1); c.add(p,"Center"); new Thread(p).start(); this.show(); } public static void main(String[] args){ new WnetWScreenRecordPlayer(); }}class Screen extends JPanel implements Runnable{ private BorderLayout borderLayout1 = new BorderLayout(); private Image cimage; public void run(){ int i = 0; while(true){ try{ cimage = loadImage(i + ".jpg"); i = i + 1; repaint(); Thread.sleep(40);//与录像时每秒帧数一致 }catch(Exception e){ e.printStackTrace(); System.out.println(e); } } } public Image loadImage(String name) { Toolkit tk = Toolkit.getDefaultToolkit(); Image image = null; image = tk.getImage("C:/records/" + name); MediaTracker mt = new MediaTracker(this); mt.addImage(image, 0); try { mt.waitForID(0); }catch (Exception e) { e.printStackTrace(); System.out.println(e); } return image; } public Screen() { super(); this.setLayout(null); } public void paint(Graphics g){ super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.drawImage(cimage, 0, 0, null); }} JSP网页引用JAVA里的方法就报错 JAVA初学者,关于JAVA中METHOD调用的问题 转贴:Pocket PC上Jeode JVM中文显示解决之道 java oracle 连接中出现的 SQLException 有关Jfreechart画折线图的问题 问:java正则表达式中如何一次取多条分开的信息 刚发的帖子为什么看不见? 关于float数和double数的精确问题 请教关于JAVA APPLET。。。。。。 请教JDBC是否可以跨网段(路由器)访问数据库?? awt 计算器 求解决方法!!!谢谢
package com.wnetw.project.media;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
public class WnetWScreenRecorder extends Thread{ private Dimension screenSize;
private Rectangle rectangle;
private Robot robot;
private long i = 0;
private JPEGImageEncoder encoder;
public WnetWScreenRecord() {
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
rectangle = new Rectangle(screenSize);//可以指定捕获屏幕区域
try{
robot = new Robot();
}catch(Exception e){
e.printStackTrace();
System.out.println(e);
}
}
public static void main(String[] args) {
new WnetWScreenRecord().start();
}
public void run(){
FileOutputStream fos = null;
while (true){
try{
BufferedImage image = robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域
fos = new FileOutputStream("C:\\records\\" + i + ".jpg");
JPEGCodec.createJPEGEncoder(fos).encode(image);//图像编码成JPEG
fos.close();
i = i + 1;
Thread.sleep(40);//每秒25帧
}catch(Exception e){
e.printStackTrace();
System.out.println(e);
try{
if (fos != null)fos.close();
}catch(Exception e1){}
}
}
}
}
//播放屏幕录像package com.wnetw.project.media;import java.awt.*;
import javax.swing.*;
import java.io.*;public class WnetWScreenRecordPlayer extends JFrame{
BorderLayout borderLayout1 = new BorderLayout();
Dimension screenSize; public WnetWScreenRecordPlayer() {
super();
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(screenSize);
Screen p = new Screen();
Container c = this.getContentPane();
c.setLayout(borderLayout1);
c.add(p,"Center");
new Thread(p).start();
this.show();
} public static void main(String[] args){
new WnetWScreenRecordPlayer();
}}class Screen extends JPanel implements Runnable{
private BorderLayout borderLayout1 = new BorderLayout();
private Image cimage; public void run(){
int i = 0;
while(true){
try{
cimage = loadImage(i + ".jpg");
i = i + 1;
repaint();
Thread.sleep(40);//与录像时每秒帧数一致 }catch(Exception e){
e.printStackTrace();
System.out.println(e);
}
}
} public Image loadImage(String name) {
Toolkit tk = Toolkit.getDefaultToolkit();
Image image = null;
image = tk.getImage("C:/records/" + name);
MediaTracker mt = new MediaTracker(this);
mt.addImage(image, 0);
try {
mt.waitForID(0);
}catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
return image;
} public Screen() {
super();
this.setLayout(null);
} public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(cimage, 0, 0, null);
}
}