So verwenden Sie FFMPEG, um mehrere Mediendateien gleichzeitig unter Linux zu konvertieren
- 1634
- 318
- Lana Saumweber
Zielsetzung
Schreiben Sie ein einfaches Bash -Skript für die FFMPEG -Batch -Dateikonvertierung.
Verteilungen
Dies funktioniert auf allen Linux -Verteilungen.
Anforderungen
Eine funktionierende Linux -Installation mit installiertem FFMPEG.
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
Einführung
FFMPEG immens leistungsfähig, wenn es darum geht, Mediendateien zu manipulieren und zu konvertieren, aber es fehlt eine wichtige Funktion. FFMPEG hat nicht die Möglichkeit, mehrere Dateien gleichzeitig zu verarbeiten. Also, was können Sie dagegen tun?? Sie sind ein Linux -Benutzer. Sie werden nicht dort sitzen und immer wieder den gleichen Befehl eingeben, oder?
Ffmpeg ist völlig skriptierbar. Sie können also ein einfaches Bash -Skript schreiben. Während das nach viel klingt, ist es aber wirklich nicht. Das Skript wird weniger als 20 Zeilen Bash sein.
Richten Sie die Datei ein
Starten Sie mit dem Einrichten Ihrer Datei. Machen Sie es überall, wo Sie mögen.
$ touch ffmpeg-Batch.Sch
Dann machen Sie es ausführbar.
$ chmod +x ffmpeg-Batch.Sch
Öffnen Sie die Datei und richten Sie sie auf, um mit dem Schreiben zu beginnen.
#! /Bin/Bash
Planen Sie Ihre Variablen
Sie müssen mehrere Argumente an Ihr Skript weitergeben, wenn Sie möchten, dass es flexibel genug ist, um die meisten Szenarien zu bewältigen, für die Sie FFMPEG verwenden würden. Aus diesem Grund brauchen Sie einige Variablen. Sicher, Sie können die Roheingänge verwenden, aber es wird viel schwieriger sein, den Überblick zu behalten.
srcext = $ 1 Destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5
Sie haben insgesamt fünf Variablen; Eine Quellerweiterung, ein Ziel oder eine resultierende Erweiterung, ein Quellverzeichnis, ein Zielverzeichnis und Ihre Optionen. Die Optionen sind alle Optionen, die Sie in Ihrem FFMPEG -Befehl gewünscht haben. Es gibt andere Möglichkeiten, dies zu tun, aber sie wird einfach als Saite weitergegeben, und es ist super einfach.
Die Schleife
Dieses Drehbuch dreht sich um a für
Schleife über den Inhalt des angegebenen Verzeichnisses iterieren. Sie müssen diese Schleife als nächstes erstellen. Beginnen Sie mit der Einrichtung der Idee.
für den Dateinamen im Ordner; tun getan
Natürlich, ORDNER
ist nichts. Sie müssen die Schleife so einrichten srcdir
. Sie müssen auch sagen, dass es nur mit einer bestimmten Erweiterung durch die Dateien durchlaufen muss, srcext
. Die Kombination, nach der Sie suchen, sieht so aus:
"$ srcdir"/*.$ srcext
Die Wildcard (*
) sagt es allen Dateien an, dann die .$ srcext
gibt ihm die vollständige Erweiterung, nach der man suchen kann. Die Zitate sind in der Nähe notwendig $ srcdir
um zu verhindern, dass es das Ganze als Schnur behandelt und nicht richtig funktioniert.
Das Ganze zusammen sieht so aus:
Für den Dateinamen in "$ srcdir"/*.$ srcext; tun getan
Ihr FFMPEG -Befehl
Sie kennen die grundlegende FFMPEG -Syntax, aber das geht hier nicht zu weit. Das Ganze besteht aus Variablen. Apropos Variablen, Sie werden ein paar weitere brauchen. Um korrekte Teile für den Zielordner und die Dateien zu erhalten, müssen die Original -Dateinamen abgehackt und neu organisiert werden.
Erstellen Sie zunächst eine neue Variable, Basepath
und setzen Sie es gleich diesem regulären Ausdruck: $ Dateiname%.*
.
Basepath = $ Dateiname%.*
Der Ausdruck steigt alles nach dem an .
Aus dem Pfad bedeutet die Erweiterung.
Jetzt müssen Sie den Weg selbst loswerden. Um das zu tun, setzen Sie Grundname
gleich $ Basepath ##*/
.
BaseSeName = $ Basepath ##*/
Das kümmert sich um alles andere, bis zum Dateinamen selbst.
Sie können die Teile zusammenstellen, um den Anruf an ffmpeg jetzt zu bilden.
FFMPEG -I "$ Dateiname" $ opts "$ destdir"/"$ BASENAME"."$ destext"
Wie Sie sehen können, ist es dasselbe wie ein normaler Anruf bei FFMPEG, aber die Variablen verwendet. Das komplizierteste Stück ist das Ziel, aber es kombiniert nur die einzelnen Teile des Ziels, um einen ganzen Pfad mit Dateiname und Erweiterung zu bilden.
Einpacken
Wenn Sie möchten, können Sie eine Erfolgsnachricht angehen, wenn die Konvertierung abgeschlossen ist. Wirf es am Ende deines Drehbuchs nach dem für
Schleife.
echo "Conversion von $ srcext auf $ Destext vollständig!"
Das Ganze sollte 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!"
Führen Sie Ihr Skript aus
Schließlich können Sie jetzt Ihr Skript ausführen, um Stapeldateikonvertierungen durchzuführen. Schauen Sie sich dieses Beispiel an, um zu sehen, wie die Syntax aussieht.
$ ffmpeg-Batch.sh flac mp3/path/to/file/path/to/dest '-ab 320K'
Es ist nicht so viel mehr als normal mehr als normal. Erst jetzt konvertieren Sie einen gesamten Verzeichnis im Wert von Dateien anstelle von nur einem.
Gedanken schließen
Dieses Skript sollte in den meisten Situationen flexibel genug sein, und dazu gehört auch Video. Sie können das Skript einem lokalen oder system breiten hinzufügen Behälter
Pfad, um es von außerhalb seines Verzeichnisses leichter zugänglich zu machen.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Ubuntu 20.04 FFMPEG -Installation
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
- Wie man Musikdateien mit FFMPEG konvertieren
- Linux -Download
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Beste Linux -Distribution für Entwickler
- Grundlegende Linux -Befehle
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- « Installieren und spielen Sie Overwatch unter Linux mit Wein
- Hören Sie sich Ihren Lieblings -Radiosender mit einem einzigen Befehl unter Linux an »