Vous n'êtes pas identifié(e).
Dernière modification par laguespa (06-03-2021 12:53:35)
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne
Cette fonction gérera tous les niveau de l'arborescence
Tu mets ta commande de conversion à la ligne echo "$file"
SInon via zenity, un autre exemple
Bon bien sûr il faut les adpater à tes besoins , sans doute via ffmpeg
Dernière modification par cyrille (11-12-2020 20:56:00)
"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."
Association Debian-Facile | Les cahiers du débutant | ISO Debian-Facile | Page perso. sur #df
Hors ligne
Ligne de conversion possible
"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."
Association Debian-Facile | Les cahiers du débutant | ISO Debian-Facile | Page perso. sur #df
Hors ligne
À chaque fois le fichier mp4 est créé à côté du fichier mov original, seule son extension va changer.
Hors ligne
Hello tu cherches donc une fonction recursive
Non, pas une fonction récursive. Juste un répertoire à traiter sans sous-répertoires et pas un script, juste une conmmande à lancer dans le répertoire dans lequel se trouvent mes .mov
ffmpeg -i video.mov -vcodec h264 -acodec mp2 video.mp4
Ligne de conversion possible
Ok, mais dans ce cas je dois retaper tous les noms des fichiers .mov en sortie de commande pour les avoir à l'identique en .mp4
A+
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne
Une proposition toute basique, avec find et ffmpeg :
find ~/mon/répertoire -type f -name \*.mov -exec \
sh -c 'ffmpeg -i "$1" "${1%.mov}.mp4"' sh {} \;
À chaque fois le fichier mp4 est créé à côté du fichier mov original, seule son extension va changer.
Je pense que c'est ce que je veux, je fais le teste demain au réveil et je te dis.
A+
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne
Hors ligne
Non, pas une fonction récursive. Juste un répertoire à traiter sans sous-répertoires et pas un script, juste une conmmande à lancer dans le répertoire dans lequel se trouvent mes .mov
ça passera même s'il n'y a qu'un niveau d'arborescence
"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."
Association Debian-Facile | Les cahiers du débutant | ISO Debian-Facile | Page perso. sur #df
Hors ligne
Ok, mais dans ce cas je dois retaper tous les noms des fichiers .mov en sortie de commande pour les avoir à l'identique en .mp4
non tu adaptes le script et passes le nom de fichier en variable
Dernière modification par cyrille (11-12-2020 23:22:21)
"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."
Association Debian-Facile | Les cahiers du débutant | ISO Debian-Facile | Page perso. sur #df
Hors ligne
@vv222, il y aurait pas un « sh » en trop (le dernier, devant {}) ?
C’est vrai que c’est un peu étrange comme forme, mais c’est bien de cette manière qu’on passe des arguments à sh :
À comparer à la forme plus intuitive, mais incorrecte :
---
J’ai essayé de retrouver la raison de ce comportement, apparemment c’est parce qu’on passe les paramètres en incluant le $0 initial.
Donc :
Merci de m’avoir donné la curiosité de vérifier ce que j’appliquais sans le comprendre totalement
---
C’est confirmé par ce test affreux :
Hors ligne
C’est confirmé par ce test affreux :
Pourquoi c'est affreux ? Rajouter un argument pour utiliser le second est très moche aussi !
Hors ligne
Par contre je n'ai toujours pas trouvé comment convertir les fichiers .mov en fichiers .mp4 en conservant à chaque fois le nom du fichier et que ça se fasse dans tous les sous-répertoires qui sont dans /home/mon_home/Vidéos. Du coup la récursivité m'intéresse...
Pour mon cas j'ai des fichiers qui se nomment IMG_0074.MOV ; IMG_0075.MOV que j'aimerais convertir en IMG_0074.MP4 et IMG_0075.MP4 etc...
Je précise que j'ai essayé la commande
et que ça ne fait rien du tout.
A+
Dernière modification par laguespa (12-12-2020 11:49:26)
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne
Par contre je n'ai toujours pas trouvé comment convertir les fichiers .mov en fichiers .mp4 en conservant à chaque fois le nom du fichier et que ça se fasse dans tous les sous-répertoires qui sont dans /home/mon_home/Vidéos. Du coup la récursivité m'intéresse...
À part pour des raisons pédagogiques, il est inutile d'écrire une fonction récursive en shell pour faire ce genre de travail.
Find est l'outil qu'il faut utiliser. Il a été fait pour cela. Reste à savoir pourquoi le script de vv222 ne fonctionne pas…
Que répond la commande :
Histoire de vérifier…
Le truc qui permet de conserver le nom dans la commande de vv222 est la substitution :
qui dit de supprimer la dernière occurrence « .mov » de la chaîne contenue dans le paramètre « $1 ». À ce résultat
on ajoute la chaîne « .mp4 »
Dernière modification par enicar (12-12-2020 12:02:42)
Hors ligne
Dernière modification par enicar (12-12-2020 12:03:11)
Hors ligne
Avec le paquet parallel
puis
Dernière modification par cyrille (12-12-2020 12:27:16)
"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."
Association Debian-Facile | Les cahiers du débutant | ISO Debian-Facile | Page perso. sur #df
Hors ligne
Pourquoi c'est affreux ? Rajouter un argument pour utiliser le second est très moche aussi !
Ce que je trouve affreux dans mon exemple, mais c’est discutable, c’est d’utiliser $0 comme paramètre variable alors que son rôle habituel est de stocker le nom du processus en cours d’exécution.
Hors ligne
Ce que je trouve affreux dans mon exemple, mais c’est discutable, c’est d’utiliser $0 comme paramètre variable alors que son rôle habituel est de stocker le nom du processus en cours d’exécution.
En effet. D'un autre côté, je trouve affreux de rajouter un paramètre pour ne pas utiliser $0
Dernière modification par enicar (12-12-2020 13:22:00)
Hors ligne
Cependant la commande dans sa totalité renvoie :
Merci et bonne journée.
Dernière modification par laguespa (14-12-2020 09:21:05)
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne
find: ‘ sh’: Aucun fichier ou dossier de ce type
find: ‘ sh’: Aucun fichier ou dossier de ce type
find: ‘ sh’: Aucun fichier ou dossier de ce type
Cette erreur est là parce que tu as retiré le saut de ligne de la commande que je propose
Les commandes correctes sont :
(sur deux lignes, la première se terminant par un antislash)
et :
(sur une seule linge, sans antislash entre -exec et sh)
Hors ligne
La musique : une certaine façon de s’asseoir sur l’éternité.
Hors ligne