Guest User

Untitled

a guest
Nov 20th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. Exception in thread "main" java.lang.RuntimeException: could not open stream com.xuggle.xuggler.IStream@4088416[index:0;id:0;streamcoder:com.xuggle.xuggler.IStreamCoder@4088512[codec=com.xuggle.xuggler.ICodec@4088848[type=CODEC_TYPE_VIDEO;id=CODEC_ID_H264;name=libx264;];time base=1/1000000;frame rate=0/0;pixel type=YUV420P;width=683;height=384;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]: Operation not permitted
  2. at com.xuggle.mediatool.MediaWriter.openStream(MediaWriter.java:1192)
  3. at com.xuggle.mediatool.MediaWriter.getStream(MediaWriter.java:1052)
  4. at com.xuggle.mediatool.MediaWriter.encodeVideo(MediaWriter.java:799)
  5. at com.atmecs.ep.ScreenRecording.main(ScreenRecording.java:52)
  6.  
  7. private static final double FRAME_RATE = 50;
  8.  
  9. private static final int SECONDS_TO_RUN_FOR = 30;
  10.  
  11. private static final String outputFilename = "c:/today.avi";
  12.  
  13. private static Dimension screenBounds;
  14.  
  15. public static void main(String[] args) {
  16.  
  17. // let's make a IMediaWriter to write the file.
  18. final IMediaWriter writer = ToolFactory.makeWriter(outputFilename);
  19.  
  20. screenBounds = Toolkit.getDefaultToolkit().getScreenSize();
  21.  
  22. // We tell it we're going to add one video stream, with id 0,
  23. // at position 0, and that it will have a fixed frame rate of
  24. // FRAME_RATE.
  25. writer.addListener(ToolFactory.makeDebugListener());
  26. writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_H264, screenBounds.width / 2, screenBounds.height / 2);
  27. long startTime = System.nanoTime();
  28.  
  29. for (int index = 0; index < SECONDS_TO_RUN_FOR * FRAME_RATE; index++) {
  30.  
  31. // take the screen shot
  32. BufferedImage screen = getDesktopScreenshot();
  33.  
  34. // convert to the right image type
  35. BufferedImage bgrScreen = convertToType(screen, BufferedImage.TYPE_3BYTE_BGR);
  36. // encode the image to stream #0
  37. writer.encodeVideo(0, bgrScreen, System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
  38.  
  39. // sleep for frame rate milliseconds
  40. try {
  41. Thread.sleep((long) (1000 / FRAME_RATE));
  42. } catch (InterruptedException e) {
  43. // ignore
  44. }
  45. }
  46. // tell the writer to close and write the trailer if needed
  47. writer.close();
  48. }
  49. public static BufferedImage convertToType(BufferedImage sourceImage, int targetType) {
  50.  
  51. BufferedImage image;
  52.  
  53. // if the source image is already the target type, return the source
  54. // image
  55. if (sourceImage.getType() == targetType) {
  56. image = sourceImage;
  57. }
  58. // otherwise create a new image of the target type and draw the new
  59. // image
  60. else {
  61. image = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), targetType);
  62. image.getGraphics().drawImage(sourceImage, 0, 0, null);
  63. }
  64.  
  65. return image;
  66.  
  67. }
  68.  
  69. private static BufferedImage getDesktopScreenshot() {
  70. try {
  71. Robot robot = new Robot();
  72. Rectangle captureSize = new Rectangle(screenBounds);
  73. return robot.createScreenCapture(captureSize);
  74. } catch (AWTException e) {
  75. e.printStackTrace();
  76. return null;
  77. }
  78. }
Add Comment
Please, Sign In to add comment