java - Capture screen with mouse pointer using xuggler -


following code capture screen , make video using xuggler , working fine, generated video not have mouse cursor in it. want capture mouse pointer show mouse activity.

can 1 guide me on this.

package com.test.video;  import java.awt.awtexception; import java.awt.dimension; import java.awt.graphics2d; import java.awt.image; import java.awt.mouseinfo; import java.awt.rectangle; import java.awt.robot; import java.awt.toolkit; import java.awt.image.bufferedimage; import java.io.ioexception; import java.util.concurrent.timeunit;  import javax.imageio.imageio;   import com.xuggle.mediatool.imediawriter; import com.xuggle.mediatool.toolfactory; import com.xuggle.xuggler.icodec;  public class screenrecordingexample {      private static final double frame_rate = 5;      private static final int seconds_to_run_for = 120;      private static final string outputfilename = "c:/mydesktop.mp4";      private static dimension screenbounds;      private static graphics2d imagegraphics;      public static image m_mouseicon = null;      public static void main(string[] args) {          // let's make imediawriter write file.         final imediawriter writer = toolfactory.makewriter(outputfilename);          screenbounds = toolkit.getdefaulttoolkit().getscreensize();          // tell we're going add 1 video stream, id 0,         // @ position 0, , have fixed frame rate of frame_rate.         writer.addvideostream(0, 0, icodec.id.codec_id_mpeg4, screenbounds.width/2, screenbounds.height/2);          long starttime = system.nanotime();          try {             m_mouseicon = imageio.read(screenrecordingexample.class.getresource("resource/captionmouseicon.png"));         } catch (ioexception e1) {             // todo auto-generated catch block             e1.printstacktrace();         }          (int index = 0; index < seconds_to_run_for * frame_rate; index++) {              // take screen shot             bufferedimage screen = getdesktopscreenshot();              // convert right image type             bufferedimage bgrscreen = converttotype(screen, bufferedimage.type_3byte_bgr);              // encode image stream #0             writer.encodevideo(0, bgrscreen, system.nanotime() - starttime, timeunit.nanoseconds);              // sleep frame rate milliseconds             try {                 thread.sleep((long) (1000 / frame_rate));             }              catch (interruptedexception e) {                 // ignore             }          }          // tell writer close , write trailer if  needed         writer.close();      }      public static bufferedimage converttotype(bufferedimage sourceimage, int targettype) {          bufferedimage image;          // if source image target type, return source image         if (sourceimage.gettype() == targettype) {             image = sourceimage;         }         // otherwise create new image of target type , draw new image         else {             image = new bufferedimage(sourceimage.getwidth(), sourceimage.getheight(), targettype);             image.getgraphics().drawimage(sourceimage, 0, 0, null);         }          return image;      }      private static bufferedimage getdesktopscreenshot() {         try {             robot robot = new robot();             rectangle capturesize = new rectangle(screenbounds);             return robot.createscreencapture(capturesize);         }          catch (awtexception e) {             e.printstacktrace();             return null;         }      }  } 

thanks,

use mouseinfo.getpointerinfo().getlocation() obtain current position of pointer. draw 'close facsimile of'(1) pointer @ point on bufferedimage.


1) screenshooter, use gif image of pointer.


Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -