精华内容
下载资源
问答
  • java 屏幕录制

    千次阅读 2015-01-21 18:49:18
    转自:http://mislay.iteye.com/blog/776021昨天一朋友问我屏幕录制怎么搞。我只知不断的切图,切图后如何转成视频文件不清楚。结果今天告诉我弄成了。下面的代码没有试验过,是我朋友给我,我共享出来,免去以后要...

    
    
    package org;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.awt.event.*;
    
    import java.awt.*; 
    import java.awt.event.ActionEvent;
    import javax.swing.*;
    
    import javax.imageio.ImageIO;
    
    /*******************************************************************
     * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
     * This JavaBean is used to snapshot the GUI in a
     * Java application! You can embeded
     * it in to your java application source code, and us
     * it to snapshot the right GUI of the application
     * @see javax.ImageIO
     * @author liluqun ([email]liluqun@263.net[/email])
     * @version 1.0
     *
     *****************************************************/
    
    public class GuiCamera extends JFrame implements ActionListener, Runnable
    {
        private String fileName; //文件的前缀
        private String defaultName = "GuiCamera";
        static int serialNum=0;
        private String imageFormat; //图像文件的格式
        private String defaultImageFormat="JPEG";
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    
    	static String showname=null;
    	static int shownum=1;
    	Thread ko_Thread;
    	int flag;
    	
    	
    		JButton jb1 = new JButton("开始");
    		JButton jb2 = new JButton("暂停");
    		JButton jb3= new JButton("停止");
    		JButton jb4=new JButton("播放录象");
    		JButton jb5=new JButton("选择");
    		JPanel   jp1= new JPanel();
    		JLabel  label= new JLabel();
    
    		
    		public void paint(Graphics g){
    		
    		if(showname!=null){
    
    		Image image=getToolkit().getImage(showname);//声明一个成员变量
    
       		
    		g.drawImage(image,0,0,1440,860,this);
    
    		}
    
    		}
    
    /********************************************************************************************************/
    	//线程开始
    	public void start(){
    
              	if(ko_Thread==null){
    		
    		ko_Thread=new Thread(this);
    
    		ko_Thread.start();
    		
    		
    
    		}
    
    			}
    	//结束
    
    	 public void stop(){
    
    		if(ko_Thread!=null){
    
    			ko_Thread=null;
    
    		}
    			}
    	//执行
    
    	 public void run(){
    
    		Thread thisThread=Thread.currentThread();
    
    		while(ko_Thread==thisThread){
    
    		if(flag==0)
    
    		snapShot();
    
    		if(flag==1){
    
    		showname="hello"+shownum+".JPEG";
    		
    		if(shownum<serialNum)
    
    		shownum++;
    
    		repaint();//重画
    		
    		
    		}
    
    		try{
    
    			Thread.sleep(400);
    
    			}catch(InterruptedException e){}
    
    
    
    		
    		}
    		
    			
    		}
    
    
    
    
    /*************************************************************************************************/
    
    
    
        /****************************************************************
         * 默认的文件前缀为GuiCamera,文件格式为JPEG格式
         * The default construct will use the default
         * Image file surname "GuiCamera",
         * and default image format "JPEG"
         ****************************************************************/
        public GuiCamera() {
    
          fileName = defaultName;
          imageFormat=defaultImageFormat;
    
        }
    
        /****************************************************************
         * @param s the surname of the snapshot file
         * @param format the format of the  image file,
         * it can be "jpg" or "png"
         * 本构造支持JPG和PNG文件的存储
         ****************************************************************/
        public GuiCamera(String s,String format) {
    
    	super("欢迎使用java版的屏幕录象软件,有待改进");
    	
          	fileName = s;
          	imageFormat=format;
    
    	
    
    	
    		this.setSize(1440,900);
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		this.add(jp1,BorderLayout.SOUTH);
    
    		this.add(label,BorderLayout.CENTER);
    
    
    		this.setVisible(true);
    
    		jp1.setLayout(new GridLayout(1,4));
    
    		jp1.add(jb1);
    		jp1.add(jb2);
    		jp1.add(jb3);
    		jp1.add(jb4);
    
    		jb1.addActionListener(this);
    		jb4.addActionListener(this);
    		jb3.addActionListener(this);
    
    
    		ImageIcon icon = new ImageIcon();
    		
    		label.setIcon(icon); 
    
    		jp1.setVisible(true);
    
    		label.setVisible(true);
    
        }
    
    
    	public void actionPerformed(ActionEvent e){
    
    		Object source=e.getSource();
    		if(source==jb1){
    
    		//ImageIcon icon = new ImageIcon("hello1.JPEG");
    		
    		//label.setIcon(icon); 
    
    		//snapShot(); 
    
    		flag=0;//录制标记
    
    		start();
    
    				}
    
    
    		if(source==jb3){
    		
    
    		stop();
    
    		}
    
    
    		if(source==jb4){
    
    		flag=1;//播放标记
    
    		start();
    
    
    		}
    			}
    	
    
    
    
    
    
     	
    
        /****************************************************************
         * 对屏幕进行拍照
         * snapShot the Gui once
         ****************************************************************/
        public void snapShot() {
    
          try {
          //拷贝屏幕到一个BufferedImage对象screenshot
            BufferedImage screenshot = (new Robot()).createScreenCapture(new
                Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
            serialNum++;
            //根据文件前缀变量和文件格式变量,自动生成文件名
            String name=fileName+String.valueOf(serialNum)+"."+imageFormat;
            File f = new File(name);
            //System.out.print("Save File "+name);
          //将screenshot对象写入图像文件
            ImageIO.write(screenshot, imageFormat, f);
            //System.out.print("..Finished!\n");
    
    	//System.out.print(d.getWidth()+"        "+d.getHeight());
          }
          catch (Exception ex) {
            System.out.println(ex);
          }
        }
    
        public static void main(String[] args)
        {
    
    	
            GuiCamera cam= new GuiCamera("C:\\record\\", "JPEG");
    
            //cam.snapShot();
        }
    }
    

    这个就厉害了,好像是把图片弄成视频的样子。

    package org;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Comparator;
    
    import org.jim2mov.core.DefaultMovieInfoProvider;
    import org.jim2mov.core.ImageProvider;
    import org.jim2mov.core.Jim2Mov;
    import org.jim2mov.core.MovieInfoProvider;
    import org.jim2mov.utils.MovieUtils;
    
    public class JpgToAvi {
    
    	 public static void main(String[] args) throws Exception{
    		 
    	        //jpgs目录放置jpg图片,图片文件名为(1.jpg,2.jpg...)
    	        final File[] jpgs = new File("C:\\record\\").listFiles();
    	 
    	        //对文件名进行排序(本示例假定文件名中的数字越小,生成视频的帧数越靠前)
    	        Arrays.sort(jpgs,new Comparator<File>(){
    		   public int compare(File file1, File file2) {
    		       String numberName1 = file1.getName().replace(".jpg", "");
    		       String numberName2 = file2.getName().replace(".jpg", "");
    		       return new Integer(numberName1) - new Integer(numberName2);
    		   }
    	        });   
    	 
    	        DefaultMovieInfoProvider dmip = new DefaultMovieInfoProvider("dst.avi");
    	        dmip.setFPS(1);			//设置每秒帧数
    	         dmip.setNumberOfFrames(jpgs.length);	//总帧数
    	         dmip.setMWidth(100);
    	        dmip.setMHeight(200);     
    	 
    	        new Jim2Mov(new ImageProvider(){
    		   public byte[] getImage(int frame) {
    		       try {
    	                   //设置压缩比
    		           return MovieUtils.convertImageToJPEG((jpgs[frame]), 1.0f);  
    	                } catch (IOException e) {
    		           e.printStackTrace();
    		       }
    		       return null;
    		   } 	
    	        }, dmip, null).saveMovie(MovieInfoProvider.TYPE_AVI_MJPEG);
    	    }    
    }
    

    可以看见,需要一个jar包啦,附件已上传。

     

    我也没具体试过,朋友说可行。空了再试试。

    • Jim2mov.jar (23 KB)
    • 描述: 图片转视频的jar
    • 下载次数: 127

    展开全文
  • 昨天一朋友问我屏幕录制怎么搞。我只知不断的切图,切图后如何转成视频文件不清楚。结果今天告诉我弄成了。下面的代码没有试验过,是我朋友给我,我共享出来,免去以后要用到处找。哈哈!!!切屏的,这个代码应该...

    昨天一朋友问我屏幕录制怎么搞。我只知不断的切图,切图后如何转成视频文件不清楚。

    结果今天告诉我弄成了。下面的代码没有试验过,是我朋友给我,我共享出来,免去以后要用到处找。哈哈!!!

    切屏的,这个代码应该到处都是.

    package org;

    import java.awt.Dimension;

    import java.awt.Rectangle;

    import java.awt.Robot;

    import java.awt.Toolkit;

    import java.awt.image.BufferedImage;

    import java.io.File;

    import java.awt.event.*;

    import java.awt.*;

    import java.awt.event.ActionEvent;

    import javax.swing.*;

    import javax.imageio.ImageIO;

    /*******************************************************************

    * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"

    * This JavaBean is used to snapshot the GUI in a

    * Java application! You can embeded

    * it in to your java application source code, and us

    * it to snapshot the right GUI of the application

    * @see javax.ImageIO

    * @author liluqun ([email]liluqun@263.net[/email])

    * @version 1.0

    *

    *****************************************************/

    public class GuiCamera extends JFrame implements ActionListener, Runnable

    {

    private String fileName; //文件的前缀

    private String defaultName = "GuiCamera";

    static int serialNum=0;

    private String imageFormat; //图像文件的格式

    private String defaultImageFormat="JPEG";

    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

    static String showname=null;

    static int shownum=1;

    Thread ko_Thread;

    int flag;

    JButton jb1 = new JButton("开始");

    JButton jb2 = new JButton("暂停");

    JButton jb3= new JButton("停止");

    JButton jb4=new JButton("播放录象");

    JButton jb5=new JButton("选择");

    JPanel jp1= new JPanel();

    JLabel label= new JLabel();

    public void paint(Graphics g){

    if(showname!=null){

    Image image=getToolkit().getImage(showname);//声明一个成员变量

    g.drawImage(image,0,0,1440,860,this);

    }

    }

    /********************************************************************************************************/

    //线程开始

    public void start(){

    if(ko_Thread==null){

    ko_Thread=new Thread(this);

    ko_Thread.start();

    }

    }

    //结束

    public void stop(){

    if(ko_Thread!=null){

    ko_Thread=null;

    }

    }

    //执行

    public void run(){

    Thread thisThread=Thread.currentThread();

    while(ko_Thread==thisThread){

    if(flag==0)

    snapShot();

    if(flag==1){

    showname="hello"+shownum+".JPEG";

    if(shownum

    shownum++;

    repaint();//重画

    }

    try{

    Thread.sleep(400);

    }catch(InterruptedException e){}

    }

    }

    /*************************************************************************************************/

    /****************************************************************

    * 默认的文件前缀为GuiCamera,文件格式为JPEG格式

    * The default construct will use the default

    * Image file surname "GuiCamera",

    * and default image format "JPEG"

    ****************************************************************/

    public GuiCamera() {

    fileName = defaultName;

    imageFormat=defaultImageFormat;

    }

    /****************************************************************

    * @param s the surname of the snapshot file

    * @param format the format of the image file,

    * it can be "jpg" or "png"

    * 本构造支持JPG和PNG文件的存储

    ****************************************************************/

    public GuiCamera(String s,String format) {

    super("欢迎使用java版的屏幕录象软件,有待改进");

    fileName = s;

    imageFormat=format;

    this.setSize(1440,900);

    this.setResizable(false);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.add(jp1,BorderLayout.SOUTH);

    this.add(label,BorderLayout.CENTER);

    this.setVisible(true);

    jp1.setLayout(new GridLayout(1,4));

    jp1.add(jb1);

    jp1.add(jb2);

    jp1.add(jb3);

    jp1.add(jb4);

    jb1.addActionListener(this);

    jb4.addActionListener(this);

    jb3.addActionListener(this);

    ImageIcon icon = new ImageIcon();

    label.setIcon(icon);

    jp1.setVisible(true);

    label.setVisible(true);

    }

    public void actionPerformed(ActionEvent e){

    Object source=e.getSource();

    if(source==jb1){

    //ImageIcon icon = new ImageIcon("hello1.JPEG");

    //label.setIcon(icon);

    //snapShot();

    flag=0;//录制标记

    start();

    }

    if(source==jb3){

    stop();

    }

    if(source==jb4){

    flag=1;//播放标记

    start();

    }

    }

    /****************************************************************

    * 对屏幕进行拍照

    * snapShot the Gui once

    ****************************************************************/

    public void snapShot() {

    try {

    //拷贝屏幕到一个BufferedImage对象screenshot

    BufferedImage screenshot = (new Robot()).createScreenCapture(new

    Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));

    serialNum++;

    //根据文件前缀变量和文件格式变量,自动生成文件名

    String name=fileName+String.valueOf(serialNum)+"."+imageFormat;

    File f = new File(name);

    //System.out.print("Save File "+name);

    //将screenshot对象写入图像文件

    ImageIO.write(screenshot, imageFormat, f);

    //System.out.print("..Finished!\n");

    //System.out.print(d.getWidth()+" "+d.getHeight());

    }

    catch (Exception ex) {

    System.out.println(ex);

    }

    }

    public static void main(String[] args)

    {

    GuiCamera cam= new GuiCamera("C:\\record\\", "JPEG");

    //cam.snapShot();

    }

    }

    这个就厉害了,好像是把图片弄成视频的样子。

    package org;

    import java.io.File;

    import java.io.IOException;

    import java.util.Arrays;

    import java.util.Comparator;

    import org.jim2mov.core.DefaultMovieInfoProvider;

    import org.jim2mov.core.ImageProvider;

    import org.jim2mov.core.Jim2Mov;

    import org.jim2mov.core.MovieInfoProvider;

    import org.jim2mov.utils.MovieUtils;

    public class JpgToAvi {

    public static void main(String[] args) throws Exception{

    //jpgs目录放置jpg图片,图片文件名为(1.jpg,2.jpg...)

    final File[] jpgs = new File("C:\\record\\").listFiles();

    //对文件名进行排序(本示例假定文件名中的数字越小,生成视频的帧数越靠前)

    Arrays.sort(jpgs,new Comparator(){

    public int compare(File file1, File file2) {

    String numberName1 = file1.getName().replace(".jpg", "");

    String numberName2 = file2.getName().replace(".jpg", "");

    return new Integer(numberName1) - new Integer(numberName2);

    }

    });

    DefaultMovieInfoProvider dmip = new DefaultMovieInfoProvider("dst.avi");

    dmip.setFPS(1);//设置每秒帧数

    dmip.setNumberOfFrames(jpgs.length);//总帧数

    dmip.setMWidth(100);

    dmip.setMHeight(200);

    new Jim2Mov(new ImageProvider(){

    public byte[] getImage(int frame) {

    try {

    //设置压缩比

    return MovieUtils.convertImageToJPEG((jpgs[frame]), 1.0f);

    } catch (IOException e) {

    e.printStackTrace();

    }

    return null;

    }

    }, dmip, null).saveMovie(MovieInfoProvider.TYPE_AVI_MJPEG);

    }

    }

    可以看见,需要一个jar包啦,附件已上传。

    我也没具体试过,朋友说可行。空了再试试。

    描述: 图片转视频的jar

    下载次数: 257

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2010-09-30 14:22

    浏览 6689

    评论

    1 楼

    zouwu85

    2011-03-31

    根本就不行

    展开全文
  • //录制视频 } catch(Exception e) {//TODO Auto-generated catch block e.printStackTrace(); }//释放资源 videoGraphics.dispose(); videoGraphics= null; videoImg.flush(); videoImg= null; java2dConverter= ...

    new Thread(newRunnable() {

    @Overridepublic voidrun() {//TODO Auto-generated method stub

    caputre();

    }

    }).start();

    }//录屏

    screenTimer = new ScheduledThreadPoolExecutor(1);

    screenTimer.scheduleAtFixedRate(newRunnable() {

    @Overridepublic voidrun() {//将screenshot对象写入图像文件//try {//ImageIO.write(screenCapture, "JPEG", f);//videoGraphics.drawImage(screenCapture, 0, 0, null);//IplImage image = cvLoadImage(name);//非常吃内存!!// //创建一个 timestamp用来写入帧中//videoTS = 1000//* (System.currentTimeMillis() - startTime - (System.currentTimeMillis() -//pauseTime));// //检查偏移量//if (videoTS > recorder.getTimestamp()) {//recorder.setTimestamp(videoTS);//}

    BufferedImage screenCapture = robot.createScreenCapture(rectangle); //截屏

    BufferedImage videoImg= newBufferedImage(Constant.WIDTH, Constant.HEIGHT,

    BufferedImage.TYPE_3BYTE_BGR);//声明一个BufferedImage用重绘截图

    Graphics2D videoGraphics= videoImg.createGraphics();//创建videoImg的Graphics2D

    videoGraphics.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);

    videoGraphics.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,

    RenderingHints.VALUE_COLOR_RENDER_SPEED);

    videoGraphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);

    videoGraphics.drawImage(screenCapture,0, 0, null); //重绘截图

    Java2DFrameConverter java2dConverter= newJava2DFrameConverter();

    Frame frame=java2dConverter.convert(videoImg);try{

    videoTS= 1000L

    * (System.currentTimeMillis() - startTime - (System.currentTimeMillis() -pauseTime));//检查偏移量

    if (videoTS >recorder.getTimestamp()) {

    recorder.setTimestamp(videoTS);

    }

    recorder.record(frame);//录制视频

    } catch(Exception e) {//TODO Auto-generated catch block

    e.printStackTrace();

    }//释放资源

    videoGraphics.dispose();

    videoGraphics= null;

    videoImg.flush();

    videoImg= null;

    java2dConverter= null;

    screenCapture.flush();

    screenCapture= null;

    }

    }, (int) (1000 / frameRate), (int) (1000 /frameRate), TimeUnit.MILLISECONDS);

    }/**

    * 抓取声音*/

    public voidcaputre() {

    audioFormat= new AudioFormat(44100.0F, 16, 2, true, false);

    dataLineInfo= new DataLine.Info(TargetDataLine.class, audioFormat);try{

    line=(TargetDataLine) AudioSystem.getLine(dataLineInfo);

    }catch(LineUnavailableException e1) {//TODO Auto-generated catch block

    System.out.println("#################");

    }try{

    line.open(audioFormat);

    }catch(LineUnavailableException e1) {//TODO Auto-generated catch block

    e1.printStackTrace();

    }

    line.start();

    finalint sampleRate = (int) audioFormat.getSampleRate();

    finalint numChannels =audioFormat.getChannels();int audioBufferSize = sampleRate *numChannels;

    finalbyte[] audioBytes = new byte[audioBufferSize];

    exec= new ScheduledThreadPoolExecutor(1);

    exec.scheduleAtFixedRate(newRunnable() {

    @Overridepublic voidrun() {try{int nBytesRead = line.read(audioBytes, 0, line.available());int nSamplesRead = nBytesRead / 2;short[] samples = new short[nSamplesRead];//Let's wrap our short[] into a ShortBuffer and//pass it to recordSamples

    ByteBuffer.wrap(audioBytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(samples);

    ShortBuffer sBuff= ShortBuffer.wrap(samples, 0, nSamplesRead);//recorder is instance of//org.bytedeco.javacv.FFmpegFrameRecorder

    recorder.recordSamples(sampleRate, numChannels, sBuff);//System.gc();

    } catch(org.bytedeco.javacv.FrameRecorder.Exception e) {

    e.printStackTrace();

    }

    }

    }, (int) (1000 / frameRate), (int) (1000 /frameRate), TimeUnit.MILLISECONDS);

    }/**

    * 停止*/

    public voidstop() {if (null !=screenTimer) {

    screenTimer.shutdownNow();

    }try{

    recorder.stop();

    recorder.release();

    recorder.close();

    screenTimer= null;//screenCapture = null;

    if(isHaveDevice) {if (null !=exec) {

    exec.shutdownNow();

    }if (null !=line) {

    line.stop();

    line.close();

    }

    dataLineInfo= null;

    audioFormat= null;

    }

    }catch(Exception e) {//TODO Auto-generated catch block

    e.printStackTrace();

    }

    }/**

    * 暂停

    *

    * @throws Exception*/

    public voidpause() throws Exception {

    screenTimer.shutdownNow();

    screenTimer= null;if(isHaveDevice) {

    exec.shutdownNow();

    exec= null;

    line.stop();

    line.close();

    dataLineInfo= null;

    audioFormat= null;

    line= null;

    }

    pauseTime=System.currentTimeMillis();

    }public static voidmain(String[] args) throws Exception, AWTException {

    VideoRecord videoRecord= new VideoRecord("D:\\test", false);

    videoRecord.start();while (true) {

    System.out.println("你要停止吗?请输入(stop),程序会停止。");

    Scanner sc= new Scanner(System.in);if (sc.next().equalsIgnoreCase("stop")) {

    videoRecord.stop();

    System.out.println("停止");

    }if (sc.next().equalsIgnoreCase("pause")) {

    videoRecord.pause();

    System.out.println("暂停");

    }if (sc.next().equalsIgnoreCase("start")) {

    videoRecord.start();

    System.out.println("开始");

    }

    }

    }

    }

    展开全文
  • java实现录制屏幕

    2017-03-06 15:26:25
    实现录音录屏幕
  • java 录制_Java屏幕录像

    2021-03-04 01:36:52
    //记录屏幕、类似录像packagechapter08;import javax.swing.*;import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*;import java.io.*;public class WnetWScreenRecorder extendsThread {...

    //记录屏幕、类似录像

    packagechapter08;import javax.swing.*;import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*;import java.io.*;public class WnetWScreenRecorder extendsThread {privateDimension screenSize;privateRectangle rectangle;privateRobot robot;private long i = 0;

    @SuppressWarnings("unused")privateJPEGImageEncoder encoder;publicWnetWScreenRecorder() {

    screenSize=Toolkit.getDefaultToolkit().getScreenSize();

    rectangle= new Rectangle(screenSize);//可以指定捕获屏幕区域

    try{

    robot= newRobot();

    }catch(Exception e) {

    e.printStackTrace();

    System.out.println(e);

    }

    }public static voidmain(String[] args) {newWnetWScreenRecorder().start();

    }public voidrun() {

    FileOutputStream fos= null;while (true) {try{

    BufferedImage image= robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域

    fos = new FileOutputStream("C:\\records\\" + i + ".png");

    JPEGCodec.createJPEGEncoder(fos).encode(image);//图像编码成JPEG

    fos.close();

    i= i + 1;

    Thread.sleep(25);//每秒25帧

    } catch(Exception e) {

    e.printStackTrace();

    System.out.println(e);try{if (fos != null)

    fos.close();

    }catch(Exception e1) {

    }

    }

    }

    }

    }//记录屏幕、类似录像

    packagechapter08;import javax.swing.*;import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*;import java.io.*;public class WnetWScreenRecorder extendsThread {privateDimension screenSize;privateRectangle rectangle;privateRobot robot;private long i = 0;

    @SuppressWarnings("unused")privateJPEGImageEncoder encoder;publicWnetWScreenRecorder() {

    screenSize=Toolkit.getDefaultToolkit().getScreenSize();

    rectangle= new Rectangle(screenSize);//可以指定捕获屏幕区域

    try{

    robot= newRobot();

    }catch(Exception e) {

    e.printStackTrace();

    System.out.println(e);

    }

    }public static voidmain(String[] args) {newWnetWScreenRecorder().start();

    }public voidrun() {

    FileOutputStream fos= null;while (true) {try{

    BufferedImage image= robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域

    fos = new FileOutputStream("C:\\records\\" + i + ".png");

    JPEGCodec.createJPEGEncoder(fos).encode(image);//图像编码成JPEG

    fos.close();

    i= i + 1;

    Thread.sleep(25);//每秒25帧

    } catch(Exception e) {

    e.printStackTrace();

    System.out.println(e);try{if (fos != null)

    fos.close();

    }catch(Exception e1) {

    }

    }

    }

    }

    }//记录屏幕、类似录像

    packagechapter08;import javax.swing.*;import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*;import java.io.*;

    @SuppressWarnings("serial")//播放屏幕录像

    public class WnetWScreenRecordPlayer extendsJFrame {

    BorderLayout borderLayout1= newBorderLayout();

    Dimension screenSize;publicWnetWScreenRecordPlayer() {super();

    screenSize=Toolkit.getDefaultToolkit().getScreenSize();this.setSize(screenSize);

    Screen p= newScreen();

    Container c= this.getContentPane();

    c.setLayout(borderLayout1);

    c.add(p,"Center");newThread(p).start();this.setVisible(true);

    }public static voidmain(String[] args) {newWnetWScreenRecordPlayer();

    }

    }

    展开全文
  • 使用java编写的屏幕录制回放的类。主要方法是通过StartCapture.java类每隔一定频率录制屏幕上的动作,在StartPlayer.java类中进行回放。经过实例测试,完全可用。可方便的集成到您的工程应用中。
  • JAVA 屏幕控制

    2012-03-25 20:27:48
    java 屏幕录制 控制 使用java实现屏幕的截取与录制 实现对鼠标的控制
  • java实现屏幕录制和播放(包含录音)

    热门讨论 2016-05-31 21:56:44
    java写了个录视频的小程序, 录制后文件默认保存在系统临时目录, 录制视频和麦克风声音, 播放时回车键进入全屏, esc退出全屏, 希望能对有兴趣的朋友提供参考
  • java编写的屏幕录制工具,用eclipse打开,可能target=android-18版本不一样,建议导入后更改成你自己的版本。在800x480分辨率的安卓机子上跑没问题,在其他高分辨率的手机上会出现图像未对其,还在进一步改进中。 ...
  • java提供获取屏幕数据的接口,我们可以使用这个来实现截屏。 BufferedImage image = robot.createScreenCapture...若需要录制屏幕,就需要结合javacv来保存视频文件。 javacv处理的图像类是Frame。工具库里面提供...
  • 它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但它同样也...
  • Java通过FFmpeg录制屏幕

    千次阅读 2019-08-02 19:35:17
    它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 maven依赖 <!-- ...
  • 本工程基于xylan提供的:java屏幕录像(包含鼠标轨迹)生成avi媒体文件工程修改而来,修复了其在win7 32/64位环境下不能录制屏幕及不能生成avi媒体的严重Bug。使用我上传的这个工程,导入到您的Eclipse或MyEclipse之后...
  • 点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达屏幕录制?截屏?...另外也有一些现成的库可以使用来进行屏幕的录制,RecordRTC上就有很多屏幕录制的实现。有声音(Audio)、视频(Vid...
  • java 录制屏幕 截屏 并 回放 程序(把图片的保存路径名改了就能用)学习!
  • 具体就是 java 程序可以控制自用调用接口进行启动停止屏幕录像,要求视频清晰,要有鼠标轨迹,联系qq :443149385
  • android5.0屏幕录制

    热门讨论 2015-09-17 18:14:26
    5.0下,使用MediaProjection进行屏幕录制的demo。 我比较懒,里面只放了实现的java类和xml,工程请自行创建。 另外这个demo源自android sample,我基本上没有改动,所以它其实只能算是屏幕捕捉,就是把屏幕内容在一...
  • Java制控制鼠标键盘通过屏幕录制顺序实现输入和点击,用awt包下的Robot实现,awt提供了鼠标事件和键盘事件,我们通过鼠标事件mouseMove()并点击锁定光标位置(这个用录屏实现),然后通过键盘事件KeyEvent()输入...
  • JavaCV第9章开始到第12章,我们主要对屏幕录制和gif/png动态图片生成,有些同学不太明白怎么把屏幕录制和gif/apng动态图片结合起来,所以本章就详细讲解如何将windows桌面屏幕画面录制成gif动态图片。 非常重要: ...
  • java做视频录制的想法由来已久, 最近抽空把这个小程序写了出来, 功能测试都能用, 几个类整合到了一个类文件里, 运行后在屏幕右下角会有几个控制按钮, 录制后的文件会生成在系统默认临时目录, 点击播放后就可以播放...
  • 图片转视频条件:需要两个jar包,这里我提供下(生成图片不用导jar包),请根据需要自行下载。 链接: ... ... //捕获屏幕生成jpg---自行查看代码 package record.screen;...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 198
精华内容 79
关键字:

java屏幕录制

java 订阅