Comment utiliser FFMPEG pour convertir plusieurs fichiers multimédias à la fois sur Linux

Comment utiliser FFMPEG pour convertir plusieurs fichiers multimédias à la fois sur Linux

Objectif

Écrivez un script de bash simple pour la conversion de fichiers par lots ffmpeg.

Distribution

Cela fonctionnera sur toutes les distributions Linux.

Exigences

Une installation Linux fonctionnelle avec FFMPEG installée.

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

Introduction

Ffmpeg extrêmement puissant lorsqu'il s'agit de manipuler et de convertir les fichiers multimédias, mais il manque une fonctionnalité importante. FFMPEG n'a pas la possibilité de gérer plusieurs fichiers à la fois. Alors, que pouvez-vous faire à ce sujet? Vous êtes un utilisateur Linux. Vous n'allez pas vous asseoir là et taper manuellement la même commande encore et encore, êtes-vous?

FFMPEG est entièrement scriptable. Ainsi, vous pouvez écrire un simple script bash pour parcourir le contenu d'un répertoire spécifié et effectuer la conversion que vous souhaitez sur chaque fichier. Bien que cela puisse sembler beaucoup, ce n'est vraiment pas. Le script sera inférieur à 20 lignes de bash.

Configurer le fichier

Commencez par configurer votre fichier. Faites partout où vous aimez.

$ touch ffmpeg-batch.shot

Ensuite, faites-le exécutable.

$ chmod + x ffmpeg-batch.shot

Ouvrez le fichier et configurez-le pour commencer à écrire.

#! / bac / bash

Planifiez vos variables

Vous devrez transmettre plusieurs arguments à votre script si vous voulez qu'il soit suffisamment flexible pour gérer la plupart des scénarios pour lesquels vous utiliseriez FFMPEG pour. À cause de cela, vous allez avoir besoin de pas mal de variables. Bien sûr, vous pouvez utiliser les entrées brutes, mais il sera beaucoup plus difficile de suivre.

srCext = 1 $ destExt = $ $ srcdir = 3 $ destdir = 4 $ opts = 5 $

Vous avez cinq variables au total; une extension source, une destination ou une extension résultante, un répertoire source, un répertoire de destination et vos options. Les options sont toutes les options que vous souhaitez dans votre commande ffmpeg. Il existe d'autres façons de le faire, mais il suffit de les passer comme une chaîne, et c'est super simple.

La boucle

Ce script se concentre autour d'un pour boucle pour itérer sur le contenu du répertoire spécifié. Vous devez créer cette boucle ensuite. Commencez par la mise en place de l'idée.

pour le nom de fichier dans le dossier; Faire

Bien sûr, DOSSIER c'est rien. Vous devez configurer la boucle pour itérer sur le contenu d'un répertoire, et ce répertoire est stocké dans srcdir. Vous devez également dire qu'il n'a besoin que de parcourir les fichiers avec une extension spécifique, srCext. Donc, la combinaison que vous recherchez ressemble à ceci:

"$ srcdir" / *.$ SRCEXT

Le joker (*) le dit à tous les fichiers, puis le .$ SRCEXT lui donne l'extension complète pour rechercher. Les citations sont nécessaires autour $ srcdir Pour l'empêcher de traiter le tout comme une chaîne et de ne pas fonctionner correctement.

Le tout ensemble ressemble à ceci:

pour le nom de fichier dans "$ srcdir" / *.$ SRCEXT; Faire

Votre commande ffmpeg

Vous connaissez la syntaxe FFMPEG de base, mais cela ne va pas trop ici. Le tout est composé de variables. En parlant de variables, vous aurez besoin de quelques autres. Afin d'obtenir des pièces correctes pour le dossier et les fichiers de destination, les noms de fichiers d'origine doivent être abattus et réorganisés.

Tout d'abord, créez une nouvelle variable, chemin de base et le définir égal à cette expression régulière: $ nom de fichier%.*.

BASEPATH = $ nom de fichier%.*

L'expression dépouille tout après le . du chemin, ce qui signifie l'extension.

Maintenant, vous devez vous débarrasser du chemin lui-même. Pour faire, définir nom de base égal à $ baspath ## * /.

Basename = $ baspath ## * /

Qui s'occupe de tout le reste, jusqu'au nom de fichier lui-même.

Vous pouvez assembler les pièces pour former l'appel à ffmpeg maintenant.

ffmpeg -i "$ nom de fichier" $ opts "$ destdir" / "$ basename"."$ destExt"

Comme vous pouvez le voir, c'est la même chose qu'un appel normal à ffmpeg, mais en utilisant les variables. La pièce la plus compliquée est la destination, mais elle combine simplement les pièces individuelles de la destination pour former un chemin entier avec nom de fichier et extension.

Emballer

Si vous le souhaitez, vous pouvez coller sur un message de réussite lorsque la conversion est terminée. Jetez-le à la fin de votre script après le pour boucle.

Echo "Conversion de $ srCext en $ destExt complet!"

Le tout devrait ressembler à ceci:

#! / 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!"

Exécutez votre script

Enfin, vous pouvez maintenant exécuter votre script pour effectuer des conversions de fichiers batch. Jetez un œil à cet exemple pour voir à quoi ressemble la syntaxe.

$ ffmpeg-batch.sh flac mp3 / path / to / files / path / to / dest '-ab 320k'

Ce n'est pas bien plus que la normale. Seulement maintenant, vous convertiez un répertoire entier de fichiers, au lieu d'un seul.

Réflexions de clôture

Ce script doit être suffisamment flexible pour la plupart des situations, et cela inclut la vidéo. Vous pouvez ajouter le script à un large ou un système large poubelle Chemin pour le rendre plus facilement accessible depuis l'extérieur de son répertoire.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Ubuntu 20.04 Installation FFMPEG
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Comment convertir les fichiers musicaux avec ffmpeg
  • Téléchargement Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Meilleure distribution Linux pour les développeurs
  • Commandes Linux de base
  • Fichiers de configuration Linux: 30 premiers