Ffmepg : convertir l'ensemble des images d'un dossier en MPG

Bonjour,

je cherche à convertir en video l’ensemble des images d’un dossier.
J’ai testé pour un GIF et cela fonctionne :

system('convert -delay %f -loop 0 /media/julien/USBKEY/capture_%s/%d/image*.jpg /media/julien/USBKEY/capture_%s/%d/animation%d.gif' %(vitesse_image_gif, nom_dossier, nom_sous_dossier, nom_dossier, nom_sous_dossier, nom_sous_dossier))

mais pas ce code pour FFmpeg :

subprocess.run('ffmpeg -framerate %d -i /media/julien/USBKEY/capture_%s/%d/image%10d.jpg /media/julien/USBKEY/capture_%s/%d/out%d.mp4' %(vitesse_image, nom_dossier, nom_sous_dossier, nom_dossier, nom_sous_dossier, nom_sous_dossier))

ni avec :

subprocess.run('ffmpeg -framerate %d -i /media/julien/USBKEY/capture_%s/%d/image*.jpg /media/julien/USBKEY/capture_%s/%d/out%d.mp4' %(vitesse_image_gif, nom_dossier, nom_sous_dossier, nom_dossier, nom_sous_dossier, nom_sous_dossier))

Merci

Bonjour,

D’un coté c’est « system + convert » de l’autre c’est « subprocess.run + ffmpeg » qu’est ce qui ne fonctionne pas ?

Sans messages d’erreur impossible de proposer une réponse.
Pourquoi ne pas utiliser ce qui fonctionne ?

A+

salut et merci d avoir pris le temps de répondre

Pourquoi un MPG ? pour deux raisons car j en ai besoin pour la suite
puis si ca ne fonctionne pas je veux savoir pourquoi pour devenir meilleur :slightly_smiling_face:

voici le retour shell pour subprocess.run(‹ ffmpeg -framerate %d -i /media/julien/USBKEY/capture_%s/%d/image*.jpg /media/julien/USBKEY/capture_%s/%d/out%d.mp4 › %(vitesse_image_gif, nom_dossier, nom_sous_dossier, nom_dossier, nom_sous_dossier, nom_sous_dossier))

:
Traceback (most recent call last):
File « /home/julien/Desktop/camera_images/camera_et_relais_v2-3-1_mp4.py », line 97, in
subprocess.run(‹ ffmpeg -framerate %d -i /media/julien/USBKEY/capture_%s/%d/image*.jpg /media/julien/USBKEY/capture_%s/%d/out%d.mp4 › %(vitesse_image_gif, nom_dossier, nom_sous_dossier, nom_dossier, nom_sous_dossier, nom_sous_dossier))
File « /usr/lib/python3.9/subprocess.py », line 505, in run
with Popen(*popenargs, *kwargs) as process:
File « /usr/lib/python3.9/subprocess.py », line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File « /usr/lib/python3.9/subprocess.py », line 1823, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg -framerate 1 -i /media/julien/USBKEY/capture_1655273399/1/image
.jpg /media/julien/USBKEY/capture_1655273399/1/out1.mp4’

Bonjour,

Ce n’était pas exactement le sens de ma question, la première commande avec system('convert… a abouti alors que les commandes subprocess.run('ffmpeg ne fonctionnent pas.
Je voulais dire pourquoi ne pas utiliser la commande system('convert… et l’adapter avec une sortie au format mp4 ?
Il faut procéder par adaptation, à partir d’une commande qui fonctionne puis la modifier pas à pas.

Merci d’avoir laissé la log d’exécution,le code erreur est relativement causant:
FileNotFoundError: [Errno 2] No such file or directory

Si le fichier /media/julien/USBKEY/capture_1655273399/1/image.jpg /media/julien/USBKEY/capture_1655273399/1/out1.mp4 existe, c’est la syntaxe de la commande qui n’est pas bonne.

A+

ah pardon par compris …je trouvais également étrange cette question.

alors pourquoi passer en SP.run …ben c’est parce que c’est ce que j ai pu lire à droite à gauche :confused:
j ai testé en system et… oui ffmpg se lance :slight_smile: et semble commencer a compiler les images pour former une video.
il a des « errors » qui interviennent mais je regarderai ca demain :wink:

merci de me rappeler les bases :smiley:

Bon j ai essayé deux trois trucs mais ca tourne tjrs pas (loser) voici le retour du shell

ffmpeg version 4.3.4-0+deb11u1+rpt1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10 (Raspbian 10.2.1-6+rpi1)
WARNING: library configuration mismatch
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, image2, from ‹ /media/julien/USBKEY/capture_1655388708/1/image1655388709.jpg ›:
Duration: 00:00:00.04, start: 0.000000, bitrate: 43421 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 720x640, 25 tbr, 25 tbn, 25 tbc

ici image1655388709.jpg est ma première image puis image1655388710.jpg image1655388711.jpg etc.
la le nom associé à mon dossier et première image dépend de int(time()) ainsi je n ai jamais deux fois le meme nom de fichier.