2016-01-25 4 views
0

J'ai un LinkedList < BufferedImage> imglist objet. Lorsque j'ajoute BufferedImage, je peux créer une vidéo. Quand j'utiliseBufferOverflowException lors de l'utilisation des instances de BufferedImage de créer une vidéo - Xuggler

BufferedImage tmp1 = img.getSubimage(0,0,500,500); 
imgList.add(temp1); 

img est BufferedImage avec une image chargée.

Je reçois cette erreur:

Exception in thread "main" java.nio.BufferOverflowException 
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:363) 
at java.nio.ByteBuffer.put(ByteBuffer.java:859) 
at com.xuggle.xuggler.video.BgrConverter.toPicture(BgrConverter.java:132) 
at com.xuggle.mediatool.MediaWriter.convertToPicture(MediaWriter.java:970) 
at com.xuggle.mediatool.MediaWriter.encodeVideo(MediaWriter.java:805) 
at xuggler.CreateVideo.<init>(CreateVideo.java:61) 
at xuggler.CreateGraphics.<init>(CreateGraphics.java:108) 
at xuggler.Main.main(Main.java:12) 

Voici la classe dans laquelle je crée la vidéo:

public class CreateVideo { 

private static final double framerate = 30; 
private static final String outputFilename = "outputvideo.mp4"; 

public CreateVideo(LinkedList<BufferedImage> imgList) { 

    final IMediaWriter writer = ToolFactory.makeWriter(outputFilename); 


    writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4, bordwidth/2, bordheight/2); 

    long startTime = System.nanoTime(); 

     for (BufferedImage imgs : imgList){ 

     writer.encodeVideo(0, imgs, System.nanoTime() - startTime, TimeUnit.NANOSECONDS); 

     try { 
       Thread.sleep((long) ((1000)/ framerate)); 
      } 

     catch (InterruptedException e) { 
      } 

     }//End for 

     writer.close(); 

}//end CreateVideo 
} 

Répondre

0

Pourriez-vous vérifier la taille de imglist et écrivain. Il semble que votre objet écrivain ne peut pas gérer toutes les images dans l'objet imageList? Vérifiez si cela aide

+0

J'ai réduit la taille de l'objet imageList. Il n'y avait rien de différent. Je ne comprends pas comment vérifier la taille de l'objet écrivain. – dirac