Website-Suche

FFMPEG-Skript zum Konvertieren mehrerer Dateien unter Linux


Bei der Arbeit mit Mediendateien kommt es häufig vor, dass Sie mehrere Dateien stapelweise konvertieren müssen. Dies gilt insbesondere für Bereiche wie Videobearbeitung, Audioverarbeitung oder auch einfach nur für die Organisation Ihrer Medienbibliothek. Das mächtige Werkzeug, das dabei im Mittelpunkt steht, ist oft FFMPEG, eine vielseitige Open-Source-Software, die mit nahezu allen Video- und Audioformaten umgehen kann. Wenn Sie wissen, wie Sie FFMPEG durch Shell-Scripting nutzen können, können Sie Ihren Arbeitsablauf erheblich beschleunigen.

In diesem Tutorial lernen Sie:

  • Wie man ein grundlegendes Skript erstellt, um mehrere Dateien basierend auf der Dateierweiterung mit FFMPEG zu konvertieren.
  • Wie man ein Skript schreibt, um alle Dateien in einem bestimmten Verzeichnis unabhängig von ihrer Erweiterung zu konvertieren.

Einführung in FFMPEG Scripting

FFMPEG ist ein leistungsstarkes Befehlszeilentool, mit dem Audio- und Videodateien bearbeitet werden können. Es unterstützt verschiedene Codecs und kann für Aufgaben wie Konvertierung, Komprimierung und sogar Streaming verwendet werden. Das Schreiben von Skripten zur Automatisierung von FFMPEG-Prozessen kann Zeit sparen und die Produktivität steigern, insbesondere beim Umgang mit einer großen Anzahl von Dateien. Bash-Scripting in Linux bietet eine zugängliche und effiziente Möglichkeit, dies zu erreichen. In diesem Tutorial werden zwei Beispiele für die Verwendung von FFMPEG in Skripts für die Stapelverarbeitung von Mediendateien untersucht.

  1. Konvertieren von Dateien basierend auf der Erweiterung: In unserem ersten Beispiel erstellen wir ein Skript, um alle Dateien einer bestimmten Erweiterung in einem Verzeichnis in ein anderes Format zu konvertieren. Dies ist besonders nützlich, wenn Sie eine ganze Sammlung von Mediendateien in ein kompatibleres oder komprimierteres Format konvertieren müssen.

    #!/bin/bash
    
    Specify the input and output formats
    input_format="mp4"
    output_format="mkv"
    
    Loop through all files with the input format
    for file in *.$input_format; do
        # Extract the base name without the extension
        base_name=$(basename "$file" .$input_format)
    
        # Construct the output file name
        output_file="${base_name}.${output_format}"
    
        # Use ffmpeg to convert the file
        echo "Converting file: $file"
        ffmpeg -loglevel quiet -i "$file" "$output_file"
    
        echo "Converted $file to $output_file"
    done

    Dieses Skript durchläuft alle .mp4 Dateien im aktuellen Verzeichnis und konvertiert sie in das .mkv-Format. Der Befehl basename extrahiert den Dateinamen ohne seine Erweiterung, sodass das Skript einen neuen Dateinamen mit dem gewünschten Ausgabeformat erstellen kann. Passen Sie die Variablen input_format und output_format nach Bedarf für verschiedene Dateitypen an.

  2. Konvertieren aller Dateien in einem bestimmten Verzeichnis: Das zweite Beispiel zeigt, wie alle Dateien in einem bestimmten Verzeichnis konvertiert werden. Dieser Ansatz ist nützlich, wenn das Verzeichnis verschiedene Arten von Mediendateien enthält und Sie alle in ein einzelnes Format konvertieren möchten.

    #!/bin/bash
    
    Directory containing the media files
    directory="/path/to/your/media/files" # update your directory
    output_format="avi"
    
    Change to the specified directory
    cd "$directory"
    
    Loop through all files in the directory
    for file in *; do
        # Skip directories
        if [ -d "$file" ]; then
            continue
        fi
    
        # Extract the base name and extension
        base_name=$(basename "$file")
        extension="${file##*.}"
    
        # Construct the output file name
        output_file="${base_name%.*}.${output_format}"
    
        # Use ffmpeg to convert the file
        echo "Converting file: $file"
        ffmpeg -loglevel quiet -i "$file" "$output_file"
    
        echo "Converted $file to $output_file"
    done

    Dieses Skript wechselt in das angegebene Verzeichnis und konvertiert jede darin enthaltene Datei in das .avi Format. Jedes Element wird überprüft, um sicherzustellen, dass es sich um eine Datei und nicht um ein Verzeichnis handelt, bevor mit der Konvertierung fortgefahren wird. Das Skript kann so angepasst werden, dass bestimmte Dateitypen ausgeschlossen werden oder je nach Dateityp unterschiedliche Konvertierungseinstellungen angewendet werden.

Schlussfolgerung

Die Stapelverarbeitung von Mediendateien mit FFMPEG über Linux-Shell-Scripting kann Ihren Arbeitsablauf erheblich optimieren. Unabhängig davon, ob Sie es mit Dateien eines bestimmten Typs oder einer vielfältigen Sammlung innerhalb eines Verzeichnisses zu tun haben, bieten diese Skripte einen Ausgangspunkt für die Automatisierung Ihrer Konvertierungsaufgaben. Denken Sie daran, dass FFMPEG ein äußerst vielseitiges Tool ist, und diese Skripte können weiter angepasst werden, um verschiedene Konvertierungsparameter zu enthalten, z. B. Bitratenanpassungen, Codec-Änderungen oder sogar das Hinzufügen von Wasserzeichen.

Verwandte Artikel: