Wie man Musikdateien mit FFMPEG konvertieren

Wie man Musikdateien mit FFMPEG konvertieren

FFMPEG ist der Kern von Tonnen von Multimedia -Versorgungsunternehmen, aber das Dienstprogramm selbst kann nicht mehrere Dateien gleichzeitig konvertieren. Zum Glück ist FFMPEG skriptierbar und Sie können leicht etwas schnell mit Bash einrichten.

In diesem Tutorial lernen Sie:

  • So richten Sie Ihre Variablen ein
  • So konstruieren Sie die Schleife
  • So streifen Sie die Dateinamen aus
  • Wie man alles zusammenfügt und rennt
Batch Convert -Audiodateien mit FFMPEG konvertieren.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Jede Verteilung mit FFMPEG
Software Ffmpeg
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können
  1. Richten Sie Ihre Variablen ein

    Die einzige wirkliche Möglichkeit, Stapeldateikonvertierungen mit FFMPEG zu behandeln, ist ein Bash -Skript. Es muss nicht super komplex oder detailliert sein, aber Sie können, wenn Sie so etwas mögen, wirklich detailliert werden. Dieser Leitfaden wird mit etwas viel Einfacherem funktionieren, das den Job erledigt.

    Erstellen Sie zunächst eine Datei für Ihr Skript.



    Berühren Sie FFMPEG-Batch.Sch

    Öffnen Sie es als nächstes mit Ihrem bevorzugten Texteditor und richten Sie es als Bash -Skript ein.

    #! /Bin/Bash

    Dieses Skript verwendet eine Reihe von Variablen für Dateipfade, Erweiterungen und FFMPEG -Optionen. Auf diese Weise ist es flexibel genug, dass Sie an verschiedenen Stellen unterschiedliche Dateien übergeben können und Ihre Dateiformate während der Zeit auswählen können.

    Es gibt fünf Variablen, die Sie benötigen. Sie benötigen eine für jedes Eingabeverzeichnis und das Ausgaberichtungsverzeichnis. Anschließend benötigen Sie einen Satz für die Eingabedateierweiterung und eine andere für die Ausgabeerweiterung. Schließlich können Sie eine erstellen, die allgemein für Ihre Konvertierungsoptionen ein allgemeiner Bohrloch ist. Insgesamt sollte es ungefähr so ​​aussehen:

    srcext = $ 1 Destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5
    Kopieren

    Wenn Sie es ändern möchten, mach weiter. Die Erweiterungen sind notwendig, anstatt sie einfach aus der Datei zu ziehen, da ein Ordner möglicherweise mehr als eine Dateiart enthalten kann. Wenn Sie lieber davon ausgehen möchten, dass in einem Ordner nur eine Dateityp vorhanden ist.

  2. Konstruieren Sie die Schleife

    Alles in diesem Skript geschieht durch eine einfache Vordergrund Schleife. Es wird über jede Datei mit der angegebenen Erweiterung im angegebenen Verzeichnis iteriert.

    Für den Dateinamen in "$ srcdir"/*.$ srcext; tun getan
    Kopieren
  3. Streichen Sie die Dateinamen aus

    Um das Skript wirklich anpassungsfähig zu machen, müssen Sie die Pfade und Erweiterungen jeder Datei ausziehen, um den Dateinamen so zu erhalten, wie er ist. Auf diese Weise kann das Skript die neu konvertierten Dateien mit identischen Namen exportieren und die Notwendigkeit beseitigen, dass Sie Dateien individuell angeben oder umbenennen müssen.

    Streifen Sie zunächst die Erweiterung ab und weisen Sie diese einer neuen Variablen zu.

    Für den Dateinamen in "$ srcdir"/*.$ srcext; Tun

    Streichen Sie dann den Pfad vom Dateinamen ab.

    BaseSeName = $ Basepath ##*/

    Sie können versuchen, das Ergebnis herauszuholen, um zu sehen, was Sie bekommen. Es sollte nur der Dateiname selbst sein.

    Echo $ BASENAME
  4. Alles zusammensetzen und rennen

    Sie sind endlich bereit, die wirkliche Arbeit von FFMPEG hinzuzufügen. Dieser Teil ist im Wesentlichen nur ein einfacher Anruf bei FFMPEG, aber die Arbeit mit Ihren Variablen anstelle von wörtlichen Dateinamen. Geben Sie FFMPEG den vollständigen Dateinamen mit dem Pfad als Eingabe. Konstruieren Sie dann die Ausgabe mit dem Zielverzeichnis, dem abgespeckten Dateinamen und der Zieldateierweiterung. Geben Sie Ihre Optionen dazwischen an. Die Zitate sind für Bash erforderlich, um jede Variable als Zeichenfolge zu behandeln.

    FFMPEG -I "$ Dateiname" $ ​​opts "$ destdir"/"$ BASENAME"."$ destext"

    Sie können nach der Schleife eine Nachricht hinzufügen und konfrontieren, dass die Dateien erfolgreich konvertiert wurden. Insgesamt sollte Ihr Scrip ungefähr so ​​aussehen:

    #! /bin/bash srcext = $ 1 Destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5 für Dateiname in "$ srcdir"/*.$ srcext; basepath = $ Dateiname%.* Basisame = $ Basepath ##*/ ffmpeg -i "$ Dateiname" $ ​​opts "$ destdir"/"$ BASENAME"."$ destext" done echo "Conversion von $ srcext auf $ Destext vollständig!"
    Kopieren

    Es gibt nicht viel da, aber das Skript reicht aus, um die meisten Situationen zu bewältigen. Jetzt würde es ungefähr so ​​aussehen: Etwas aussehen:

    ./ffmpeg-Batch.sh flac mp3/home/userername/music/'led zeppelin'/'led zeppelin'/home/userername/musik/'led zeppelin mp3'/"-ab 320K"

Abschluss

Sobald Sie sich daran gewöhnt haben, kann auch so etwas eine äußerst nützliche Möglichkeit sein, Ihr Audio und sogar Video -Dateien zu verwalten. FFMPEG ist ein ausgezeichnetes Werkzeug. Wenn Sie einen Minimalismus bevorzugen, können Sie das gleiche Ergebnis wie ein aufgeblähtes grafisches Programm mit einem einzigen Zeilenbefehl erhalten.

Verwandte Linux -Tutorials:

  • Mastering -Bash -Skriptschleifen beherrschen
  • Beste Multimedia Linux -Verteilungen
  • Bester Musikspieler für Linux
  • Ubuntu 20.04 FFMPEG -Installation
  • Verschachtelte Schleifen in Bash -Skripten
  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • So erstellen Sie ein Flatpak -Paket
  • GDB -Debugging -Tutorial für Anfänger
  • So erhalten und ändern Sie Audio -Metadaten unter Linux