Je cherchais une solution partout! Sur ce site et sur d'autres. J'ai trouvé des choses intéressantes, mais elles n'ont pas résolu mon problème. Je vais l'expliquer.Création vidéo à partir d'un ensemble d'images avec xuggler
J'ai une vidéo, j'en ai gradué chaque image avec xuggler. Quand j'obtiens tous les cadres, je les édite tous avec un algorithme de couleur. Aussi, je stocke l'audio dans un fichier mp3.
Maintenant, j'ai besoin de créer une vidéo à partir de toutes les images, cette vidéo, bien sûr, devrait avoir les mêmes caractéristiques que la durée d'image et la durée. Après cela, je dois fusionner l'audio.
J'ai fait la première partie, mais je ne sais pas comment créer une vidéo avec les mêmes caractéristiques. Je suivais ce code:
http://www.javacodegeeks.com/2011/02/xuggler-tutorial-frames-capture-video.html
Can't encode video with Xuggler
Mais il faut l'instantané et il utilise une boucle étrange:
for (int index = 0; index < SECONDS_TO_RUN_FOR * FRAME_RATE; index++)
Je ne peux pas comprendre comment définir le droit caractéristiques. Ca devrait être facile car je sais tout de la vidéo! taille, fréquence d'images et nombre d'images.
Mon code:
public static void main(String[] args) throws IOException {
final IMediaWriter writer = ToolFactory.makeWriter(outputFilename);
writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4,
720, 304);
long nextFrameTime = 0;
final long frameRate =25/1000;
long startTime = System.nanoTime();
while (indexVideo<1597) {
BufferedImage videoImage = null;
try {
videoImage = getVideoImage();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
writer.encodeVideo(0, videoImage,nextFrameTime,
TimeUnit.MILLISECONDS);
nextFrameTime += frameRate;
}
writer.close();
}
private static BufferedImage getVideoImage() throws IOException, AWTException {
File imgLoc = new File("D:/Gianfranco/Sample/"+indexVideo+".png");
BufferedImage img;
img = ImageIO.read(imgLoc);
System.out.println(imgLoc.getName());
indexVideo++;
return img;
}
Ca quelqu'un me aider?