From 33b55e0dc0c233e12cdf89ddd8448a23a5438191 Mon Sep 17 00:00:00 2001 From: Kerboul Date: Tue, 11 Feb 2025 19:29:03 +0100 Subject: [PATCH] =?UTF-8?q?Tri=20des=20images=20num=C3=A9riquement=20avant?= =?UTF-8?q?=20la=20cr=C3=A9ation=20de=20la=20vid=C3=A9o=20et=20mise=20?= =?UTF-8?q?=C3=A0=20jour=20du=20fichier=20temporaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/video/videoManager.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/video/videoManager.js b/src/video/videoManager.js index 91cd598..c915126 100644 --- a/src/video/videoManager.js +++ b/src/video/videoManager.js @@ -9,16 +9,22 @@ const PROJECTS_DIR = path.join('.'); async function createVideo(projectId) { const tempFile = path.join('temp.txt'); try { - // trouver tous les fichiers image pour le projet donné + // Trouver tous les fichiers image pour le projet donné const workdir = path.join(PROJECTS_DIR, 'storage', `${projectId}`); const dir = path.join(PROJECTS_DIR, 'storage', `${projectId}`, 'images'); console.log('dir:', dir); const images = storageManager.scanAllImages(dir); console.log('images:', images); + // Trier les images numériquement + const sortedImages = images.sort((a, b) => { + const numA = parseInt(path.basename(a).match(/\d+/)[0], 10); + const numB = parseInt(path.basename(b).match(/\d+/)[0], 10); + return numA - numB; + }); + // Créer un fichier temporaire pour la liste des images - const tempFile = path.join('temp.txt'); - fs.writeFileSync(tempFile, images.map(image => `file '${image}'`).join('\n')); + fs.writeFileSync(tempFile, sortedImages.map(image => `file '${image}'`).join('\n')); const frameRate = 10; const outputVideo = path.join(workdir, 'video.mp4'); @@ -39,8 +45,5 @@ async function createVideo(projectId) { } } } -// Commande ffmpeg pour créer la vidéo - //const ffmpegCommand = `ffmpeg -r ${frameRate} -f concat -safe 0 -i ${tempFile} -vsync vfr -pix_fmt yuv420p ${outputVideo}`; - //execSync(ffmpegCommand); module.exports = { createVideo };