Ich möchte im finder.app per Rechtsklick auf eine Videodatei die Option haben, ein bestimmtes ffmpeg command auszuführen. wie gehe ich da vor?
Um im macOS Finder per Rechtsklick auf eine Videodatei ein bestimmtes ffmpeg
-Kommando auszuführen, kannst du einen Quick Action (Kurzbefehl) mit Automator oder der Kurzbefehle-App (Shortcuts) erstellen.
-
Automator öffnen
- Öffne
Automator.app
(in/Applications
oder über Spotlight).
- Öffne
-
Neues Dokument erstellen
- Wähle „Neues Dokument“
- Typ: „Schnellaktion“
-
Schnellaktion konfigurieren
- „Der Workflow empfängt aktuellen“ →
Dateien oder Ordner
- „in“ →
Finder.app
- „Der Workflow empfängt aktuellen“ →
-
Shell-Skript hinzufügen
- Suche: „Shell-Skript ausführen“ → in den Workflow ziehen.
-
Shell-Skript konfigurieren
for f in "$@" do /opt/homebrew/bin/ffmpeg -i "$f" -c:v libx264 -crf 23 -preset fast "${f%.*}_converted.mp4" done
-
Speichern
- Name z. B. „Mit FFmpeg konvertieren“
Ich möchte Videos per -preset veryslow und -crf 26 komprimieren, der Dateiname soll von der Eingabedatei im Schema NAME.ENDUNG übernommen und angepasst werden auf DATEI_low.ENDUNG
Verstanden – hier ist dein angepasstes Shell-Skript:
for f in "$@"
do
dir=$(dirname "$f")
base=$(basename "$f")
name="${base%.*}"
ext="${base##*.}"
output="${dir}/${name}_low.${ext}"
/opt/homebrew/bin/ffmpeg -i "$f" -c:v libx264 -crf 26 -preset veryslow "$output"
done
leider passiert nichts
-
Funktioniert
ffmpeg
im Terminal?which ffmpeg ffmpeg -version
-
Pfad korrekt im Automator-Skript?
-
Zugriffsrechte prüfen:
- Systemeinstellungen > Datenschutz & Sicherheit > Vollzugriff
-
Logging-Skript zur Diagnose:
for f in "$@" do echo "Eingabedatei: $f" >> ~/Desktop/ffmpeg_log.txt dir=$(dirname "$f") base=$(basename "$f") name="${base%.*}" ext="${base##*.}" output="${dir}/${name}_low.${ext}" echo "Ziel: $output" >> ~/Desktop/ffmpeg_log.txt /opt/homebrew/bin/ffmpeg -i "$f" -c:v libx264 -crf 26 -preset veryslow "$output" >> ~/Desktop/ffmpeg_log.txt 2>&1 done
which ffmpeg
/opt/homebrew/bin/ffmpeg
Alles korrekt installiert. Teste ggf. das Logging-Skript oben.
cat: /Users/user/Desktop/ffmpeg_debug_log.txt: No such file or directory
Die Schnellaktion wurde vermutlich nicht ausgeführt.
📌 In Automator unbedingt "Argumente" als Eingabe übergeben – Standard ist stdin
, was nicht funktioniert.
Ok das problem war stdin vs. Argumente. default ist stin
✅ Genau – das war die Ursache! Automator-Shellskripte brauchen Eingabe übergeben als: Argumente
.
kann ich das auch direkt bei einem Rechtsklick haben ohne in Schnellaktionen gehen zu müssen?
- Kurzen Namen wählen → Schnellaktion erscheint direkter
- Als .app speichern (über Automator → „Programm“) → erscheint in „Öffnen mit“
- Dritttools oder Finder-Plugins (fortgeschritten)
ja
- Automator öffnen → Typ:
Programm
- Shell-Skript einfügen:
for f in "$@" do dir=$(dirname "$f") base=$(basename "$f") name="${base%.*}" ext="${base##*.}" output="${dir}/${name}_low.${ext}" /opt/homebrew/bin/ffmpeg -i "$f" -c:v libx264 -crf 26 -preset veryslow "$output" done
- Speichern als z. B.
FFmpeg Compressor.app
→ Dann nutzbar über „Öffnen mit“
Wie bekomme ich das script immer in die Auswahlliste ohne es als default für Videodateien zu defienieren?
- Ziehe einmal eine
.mp4
auf deine.app
- Oder: Rechtsklick > Öffnen mit > Andere… →
DeineApp.app
auswählen
⚠️ Haken bei „Immer öffnen mit“ nicht setzen - macOS merkt sich die App für den Dateityp
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user