用JAVA捕获屏幕、屏幕录像、播放
http://blog.csdn.net/njchenyi/article/details/447554


版权声明:本文为博主原创文章,未经博主允许不得转载。
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
private Rectangle rectangle;
private Robot robot;
private long i = 0;
private JPEGImageEncoder encoder;
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
rectangle = new Rectangle(screenSize);//可以指定捕获屏幕区域
try{
robot = new Robot();
}catch(Exception e){
e.printStackTrace();
System.out.println(e);
}
}
new WnetWScreenRecord().start();
}
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);
}
}
用JAVA捕获屏幕、屏幕录像、播放的更多相关文章
- java原生实现屏幕设备遍历和屏幕采集(捕获)等功能
前言:本章中屏幕捕获使用原生java实现,屏幕图像显示采用javacv1.3的CanvasFrame 一.实现的功能 1.屏幕设备遍历 2.本地屏幕图像采集(也叫屏幕图像捕获) 3.播放本地图像(采用 ...
- PotPlayer 如何设置多屏幕全屏播放
如何在播放器中,设置扩展播放模式? 全屏设置/主全屏显示设备:Display2 如何使视频播放时,没有黑边并且全屏充满? 高宽比/处理方式:保持全屏宽高比 如果取消掉视频上方的文字提示信息 ...
- 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向
[源码下载] 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向 作者:webabcd 介绍背水一战 Windows 10 之 UI UI 设计概述 启动屏幕(闪屏) 屏 ...
- 【Java】集合综合案例 - 播放器管理
集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...
- [Selenium] Java代码获取屏幕分辨率
import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java. ...
- Java Swing 窗体屏幕居中
Java开发桌面程序用AWT或SWING,可以用设置主窗口位置,使主窗口居中一般使用下面的方法: 01.第一种方法 int windowWidth = frame.getWi ...
- 利用纯java捕获和播放音频
参考: 1.http://www.cjsdn.net/doc/jdk60/javax/sound/sampled/package-summary.html 2.http://www.cjsdn.net ...
- Java获取显示器屏幕大小
public static void main(String[] args) { Dimension screensize = Toolkit.getDefaultToolkit().getScree ...
- UI: 概述, 启动屏幕, 屏幕方向
UI 设计概述 启动屏幕(闪屏) 屏幕方向 示例1.UI 设计概述UI/Summary.xaml <Page x:Class="Windows10.UI.Summary" x ...
随机推荐
- LeetCode OJ 230. Kth Smallest Element in a BST
Total Accepted: 46445 Total Submissions: 122594 Difficulty: Medium Given a binary search tree, write ...
- MC 自己平均
using System; using System.Drawing; using System.Linq; using System.Collections; namespace PowerLang ...
- JavaScript CSS Style属性对照表
JavaScript CSS Style属性对照表 盒子标签和属性对照 CSS语法 (不区分大小写) JavaScript语法 (区分大小写) border border border-bottom ...
- Hibernate写入Oracle Date类型处理
Hibernate写入Oracle数据库时,数据库设计字段为Date类型时,只能保存年月日,不能保存时分秒,如果要保存时分秒,需修改Hibernate.cfg.xml文件 <property n ...
- on-tap和on-click
简单的说,当你点击移动设备屏幕上的一个点之后,on-tap会立刻触发,而on-click(可能)需要等待300ms才触发——这是移动设备浏览器为了检测是否存在双击的一个检测周期长度. 在移动设备上,应 ...
- bjective-C 中核心处理字符串的类是 NSString 与 NSMutableString
Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...
- Java学习笔记之接口和抽象类
接口(interface)1.interface创建一个接口,implements实现接口 interface jiekou{} class lie implements jiekou{}2.接口可以 ...
- VS2010+PCL+openni配置
PCL中文论坛:http://www.pclcn.org/bbs/forum.php 1.安装 pcl 的完全安装包可以到: http://pointclouds.org/downloads/wind ...
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围
OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章) 所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符. ...
- LightOJ 1259 Goldbach`s Conjecture 素数打表
题目大意:求讲一个整数n分解为两个素数的方案数. 题目思路:素数打表,后遍历 1-n/2,寻找方案数,需要注意的是:C/C++中 bool类型占用一个字节,int类型占用4个字节,在素数打表中采用bo ...