ffmpeg funktioniert über die Befehlszeile im Terminal, aber nicht in einem Automator-Shell-Skript!

Ich habe gerade meine eigene Kopie von ffmpeg auf meinem System kompiliert und sie befindet sich im folgenden Pfad:

/opt/local/bin/ffmpeg

Wenn ich den folgenden Befehl in Terminal.app ausführe, läuft es reibungslos:

ffmpeg -i /Users/Amit/Documents/input.avi -c:v copy -c:a aac -b:a 384k -strict -2 /Users/Amit/Documents/output.m4v

Ein ähnlicher Befehl, der als Shell-Skript in einem Automator-Dienst ausgeführt wird, schlägt jedoch fehl:

for f in "$@"
do
    ffmpeg -i "$f" -c:v copy -c:a aac -b:a 384k -strict -2 "${f%.*}.m4v"
done

Bis jetzt hatte ich einen vorkompilierten Build von ffmpeg auf meinem System unter:

/Applications/Scriptlets/

Und mein Automator-Shell-Skript hatte den vollständigen Pfad (/Applications/Scriptlets/ffmpeg) statt nur ffmpeg; und es hat gut funktioniert. Heute habe ich mich jedoch entschieden, eine neue Kopie von ffmpeg mit MacPorts zu kompilieren und die frühere Version aus meinem Applications/Scriptlets-Ordner entfernt. Jetzt funktioniert dieses ffmpeg gut in Terminal, gibt aber einen Fehler aus, wenn ich versuche, es von einem Shell-Skript innerhalb eines Automator-Workflows auszuführen. Mache ich hier etwas falsch? Bitte helfen Sie!

An welcher Art von Projekt arbeiten Sie?

Antworten (1)

Das Automator-Skript gibt Ihr Terminal.app-Profil nicht automatisch frei. Pfade zu zusätzlichen Tools werden möglicherweise nicht gefunden, da das Skript von Automator sie nicht finden kann.

Versuchen Sie, Ihr Skript so zu erweitern, dass es den absoluten oder vollständigen Pfad zu dem enthält, das ffmpegSie verwenden möchten:

for f in "$@"
do
    /opt/local/bin/ffmpeg -i "$f" -c:v copy -c:a aac -b:a 384k -strict -2 "${f%.*}.m4v"
done

Bringen Sie alternativ Ihr Terminal.app-Profil mit dem Ansatz zu dieser Frage ein. Mein Automator-Workflow schlägt fehl, weil er den Git-Befehl im Befehl „Run Shell Script“ nicht findet? Brauche Hilfe .