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
}
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