Comment convertir les fichiers musicaux avec ffmpeg
- 1216
- 132
- Victor Charpentier
FFMPEG est au cœur des tonnes d'utilitaires multimédias, mais l'utilité elle-même n'a pas la possibilité de convertir plusieurs fichiers à la fois. Heureusement, FFMPEG est scriptable, et vous pouvez facilement configurer quelque chose rapidement avec Bash.
Dans ce tutoriel, vous apprendrez:
- Comment configurer vos variables
- Comment construire la boucle
- Comment éliminer les noms de fichiers
- Comment tout rassembler et courir
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Toute distribution avec FFMPEG |
Logiciel | Ffmpeg |
Autre | Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande. |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
-
Configurez vos variables
La seule véritable façon de gérer les conversions de fichiers batch avec FFMPEG est via un script bash. Il n'a pas besoin d'être super complexe ou détaillé, mais vous pouvez, si vous aimez ce message de chose, vous en éveillez vraiment. Ce guide va fonctionner avec quelque chose de beaucoup plus simple qui fait le travail.
Tout d'abord, créez un fichier pour votre script.
Toucher FFMPEG-Batch.shot
Ensuite, ouvrez-le avec votre éditeur de texte préféré et configurez-le comme un script bash.
#! / bac / bash
Ce script va utiliser une série de variables pour les chemins de fichier, les extensions et les options FFMPEG. De cette façon, il est suffisamment flexible pour que vous puissiez le transmettre différents fichiers à différents endroits, en choisissant vos formats de fichiers au fur et à mesure.
Il y a cinq variables dont vous aurez besoin. Vous en aurez besoin pour chacun des répertoires d'entrée et le répertoire de sortie. Ensuite, vous aurez besoin d'un ensemble pour l'extension du fichier d'entrée et un autre pour l'extension de sortie. Enfin, vous pouvez en créer un qui est un fourre-tout général pour vos options de conversion. Au total, cela devrait ressembler à ceci:
CopiesrCext = 1 $ destExt = $ $ srcdir = 3 $ destdir = 4 $ opts = 5 $
Si vous souhaitez le modifier, allez-y. Les extensions sont nécessaires, plutôt que de simplement les tirer du fichier car un dossier peut contenir plus d'un type de fichier. Si vous préférez supposer qu'il n'y a qu'un seul type de fichier dans un dossier, allez de l'avant et modifiez le script pour fonctionner de cette façon.
-
Construire la boucle
Tout dans ce script se produit à travers un simple
avant
boucle. Il iratera sur chaque fichier avec l'extension spécifiée dans le répertoire spécifié.
Copiepour le nom de fichier dans "$ srcdir" / *.$ SRCEXT; Faire
-
Supprimer les noms de fichiers
Pour rendre le script vraiment adaptable, vous devrez supprimer les chemins et les extensions de chaque fichier pour obtenir le nom du fichier tel qu'il est. De cette façon, le script pourra exporter les fichiers nouvellement convertis avec des noms identiques, éliminant la nécessité de spécifier ou de renommer individuellement des fichiers.
Tout d'abord, supprimez l'extension et attribuez-le à une nouvelle variable.
pour le nom de fichier dans "$ srcdir" / *.$ SRCEXT; faire
Ensuite, supprimez le chemin du nom du fichier.
Basename = $ baspath ## * /
Vous pouvez essayer de faire écho au résultat pour voir ce que vous obtenez. Ce devrait être le nom de fichier lui-même.
Echo $ Basename
-
Assembler tout cela et courir
Vous êtes enfin prêt à ajouter le vrai travail de FFMPEG. Cette partie est essentiellement juste un simple appel à FFMPEG, mais en travaillant avec vos variables à la place des noms de fichiers littéraux. Donnez à ffmpeg le nom de fichier complet avec le chemin comme entrée. Ensuite, construisez la sortie à l'aide du répertoire de destination, du nom de fichier dépouillé et de l'extension du fichier de destination. Incluez vos options entre les deux. Les citations sont nécessaires pour que Bash traite chaque variable comme une chaîne.
ffmpeg -i "$ nom de fichier" $ opts "$ destdir" / "$ basename"."$ destExt"
Vous pouvez ajouter un message après la boucle, affronter que les fichiers ont été convertis avec succès. Au total, votre script devrait ressembler à ceci:
Copie#! / bin / bash srcext = 1 $ destExt = $ $ srcdir = 3 $ destdir = 4 $ opts = 5 $ pour le nom de fichier dans "$ srcdir" / *.$ SRCEXT; faire baspath = $ nom de fichier%.* Basename = $ basepath ## * / ffmpeg -i "$ filename" $ opts "$ destdir" / "$ basename"."$ destExt" fait echo "Conversion de $ srCext à $ destExt complet!"
Il n'y a pas grand-chose, mais le script est suffisant pour gérer la plupart des situations. Maintenant, le courir ressemblerait à ceci:
./ ffmpeg-batch.SH Flac MP3 / Home / Username / Music / 'Led Zeppelin' / 'Led Zeppelin' / / Home / Username / Music / 'Led Zeppelin MP3' / "-Ab 320K"
Conclusion
Une fois que vous vous y êtes habitué, même quelque chose comme ça peut être un moyen extrêmement utile de gérer votre audio, et même la vidéo, les fichiers. FFMPEG est un excellent outil, et si vous préférez le minimalisme, vous pouvez obtenir le même résultat qu'un programme graphique gonflé avec une seule commande de ligne.
Tutoriels Linux connexes:
- Masterring Bash Script Loops
- Meilleures distributions Linux multimédias
- Meilleur lecteur de musique pour Linux
- Ubuntu 20.04 Installation FFMPEG
- Boucles imbriquées dans les scripts bash
- Choses à installer sur Ubuntu 20.04
- Une introduction à l'automatisation Linux, des outils et des techniques
- Comment créer un package Flatpak
- Tutoriel de débogage GDB pour les débutants
- Comment obtenir et modifier les métadonnées audio dans Linux
- « Comment se connecter à un haut-parleur Bluetooth sur XFCE, Mate et Cinnamon
- Comment installer le lecteur de musique lollypop sur Linux »