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

    Erstellen Sie eine neue Datei namens split_videos_to_images.sh und fügenFühren Sie den folgenden CodeBefehl ein: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 MP4-Videosgängigen Videoformate im aktuellenangegebenen VerzeichnisEingabeverzeichnis
    for format in "${VIDEO_FORMATS[@]}"; do
        for video in *.mp4;"$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%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

    Öffnen Sie ein Terminal und navigieren Sie zu dem Verzeichnis, in dem sich Ihr Skript befindet. Machen Sie das Skript mit dem folgenden Befehl ausführbar:

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

    FührenSie Siekönnen das Skript imjetzt gewünschtenvon Verzeichnisüberall aus:auf Ihrem System ausführen:

    ./split_videos_to_images.shsplit-videos
    

    Das Skript wird alle .mp4-Videos im aktuellen Verzeichnis durchlaufen, für jedes Video einen OrdnerOder mit demspezifischen Namen des Videos (ohne die .mp4-Erweiterung) erstellenEingabe- und dieAusgabepfaden:

    Einzelbilder
    split-videos des-i Videos/path/to/videos in-o diesen/path/to/output
    Ordner speichern.

Hinweis

  • WennDas Skript sucht automatisch nach den gängigsten Videoformaten, sodass Sie auchnichts andereanpassen Videoformate haben, können Sie die Zeile for video in *.mp4; do im Skript entsprechend anpassen, z.B. for video in *.mp4 *.avi *.mkv; do für MP4, AVI und MKV-Formate.müssen.

Sie können diese Anleitung in Ihr Wiki kopieren und bei Bedarf anpassen. Ich hoffe, das hilft!