Skip to main content

ffmpeg

Anleitung: Videos in Einzelbilder aufteilen mit ffmpeg

Ziel

Mit dieser Anleitung können Sie Videos in Einzelbilder aufteilen. Dies kann nützlich sein, wenn Sie beispielsweise eine Struktur-aus-Bewegung-Rekonstruktion mit Tools wie COLMAP durchführen möchten.

Voraussetzungen

  • ffmpeg muss auf Ihrem System installiert sein. Wenn es noch nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:

    sudo apt install ffmpeg
    

Schritte

  1. Bash-Skript erstellen und an die richtige Stelle verschieben

    Führen Sie den folgenden Befehl aus, um das Skript zu erstellen und es direkt nach /usr/local/bin/split-videos zu schreiben:

    echo '#!/bin/bash
    
    # Überprüfen Sie, ob ffmpeg installiert ist
    if ! command -v ffmpeg &> /dev/null; then
        echo "ffmpeg ist nicht installiert. Bitte installieren Sie es zuerst."
        exit 1
    fi
    
    # Standardwerte für Eingabe- und Ausgabepfade
    INPUT_PATH="."
    OUTPUT_PATH="."
    
    # Optionen mit getopts verarbeiten
    while getopts "i:o:" opt; do
        case "$opt" in
        i) INPUT_PATH="$OPTARG" ;;
        o) OUTPUT_PATH="$OPTARG" ;;
        *) echo "Ungültige Option: -$OPTARG" >&2; exit 1 ;;
        esac
    done
    
    # Gängige Videoformate
    VIDEO_FORMATS=("*.mp4" "*.avi" "*.mkv" "*.mov" "*.flv" "*.wmv")
    
    # Durchlaufen Sie alle gängigen Videoformate im angegebenen Eingabeverzeichnis
    for format in "${VIDEO_FORMATS[@]}"; do
        for video in "$INPUT_PATH/$format"; do
            # Überspringen, wenn keine Dateien dieses Formats gefunden wurden
            [ -e "$video" ] || continue
    
            # Entfernen Sie die Dateierweiterung, um den Ordnernamen zu erhalten
            dir_name="${video##*/}"
            dir_name="${dir_name%.*}"
    
            # Erstellen Sie ein Verzeichnis im angegebenen Ausgabepfad mit dem Namen des Videos
            mkdir -p "$OUTPUT_PATH/$dir_name"
    
            # Teilen Sie das Video in Einzelbilder auf und speichern Sie sie im entsprechenden Verzeichnis
            ffmpeg -i "$video" -q:v 2 "$OUTPUT_PATH/$dir_name/frame_%04d.jpg"
        done
    done
    
    echo "Alle Videos wurden erfolgreich in Einzelbilder aufgeteilt!"' | sudo tee /usr/local/bin/split-videos > /dev/null
    
  2. Skript ausführbar machen

    Machen Sie das Skript mit dem folgenden Befehl ausführbar:

    sudo chmod +x /usr/local/bin/split-videos
    
  3. Skript ausführen

    Sie können das Skript jetzt von überall auf Ihrem System ausführen:

    split-videos
    

    Oder mit spezifischen Eingabe- und Ausgabepfaden:

    split-videos -i /path/to/videos -o /path/to/output
    

Hinweis

  • Das Skript sucht automatisch nach den gängigsten Videoformaten, sodass Sie nichts anpassen müssen.