Skip to main content

ffmpeg

Convert Videos to smaller files:

#!/bin/bash

# Pfad zum Verzeichnis mit den Originalvideos
VIDEO_DIR="./pfad/zu/deinen/videos""
# Zielverzeichnis für die komprimierten Videos
OUTPUT_DIR="./pfad/zu/ziel/videos"converteds"

# Erstelle das Zielverzeichnis, falls es nicht existiert
mkdir -p "$OUTPUT_DIR"

# Array mit gewünschten Dateiendungen
declare -a extensions=("mp4" "MP4" "mov" "MOV")

# Durchlaufe alle Dateiendungen
for ext in "${extensions[@]}"; do
    # Finde alle Dateien mit der aktuellen Endung und durchlaufe sie
    find "$VIDEO_DIR" -type f -iname "*.$ext" | while read -r original; do
        # Dateiname ohne Pfad
        filename=$(basename -- "$original")
        # Ersetze Leerzeichen im Dateinamen durch Unterstriche (optional)
        filename=${filename// /_}
        # Vollständiger Pfad zur Ausgabedatei
        output="$OUTPUT_DIR/$filename"

        echo "Komprimiere: $original -> $output"

        # Führe ffmpeg aus, um das Video zu komprimieren
        ffmpeg -i "$original" -c:v libx265 -crf 23 -preset medium -c:a copy "$output"
    done
done

echo "Kompression aller Videos abgeschlossen."

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
    shopt -s nullglob
    for format in "${VIDEO_FORMATS[@]}"; do
        videos=($INPUT_PATH/$format)
        for video in "${videos[@]}"; do
            # Entfernen Sie die Dateierweiterung, um den Ordnernamen zu erhalten
            dir_name="${video##*/}"
            dir_name="${dir_name%.*}"
    
            echo "Verarbeite Video: $video"
    
            # 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"
            echo "Bilder gespeichert in: $OUTPUT_PATH/$dir_name/"
        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.