FFmpeg mit Automator & Abfrage von Start- und Stoppparametern

Ich verwende Automator zusammen mit ffmpeg, was großartig funktioniert. Ein Shell-Script-Befehl wird mit zwei Parametern ausgeführt:

  • -ss 00:00:00 (ab)
  • -t 00:00:00 (Zeitdauer)

F: Ist es möglich, die beiden Parameter über ein Popup-Fenster einzustellen?

Geben Sie hier die Bildbeschreibung ein

Antworten (1)

Sie haben gefragt: " Ist es möglich, die beiden Parameter über ein Popup-Fenster einzustellen? ", und die Antwort darauf ist ja .

Hier ist ein Beispiel, wie es gemacht werden könnte:

Fügen Sie zwischen der Aktion „Nach Finder-Elementen fragen“ und der Aktion „Shell-Skript ausführen“ eine Aktion „AppleScript ausführen“ mit dem folgenden AppleScript- Code hinzu :

on run {input, parameters}
    display dialog "Enter the start time and length:" default answer "-ss 00:00:00 -t 00:00:00" buttons {"Cancel", "OK"} ¬
        with title "Set FFMPEG Start Time and Length: -ss 00:00:00 -t 00:00:00"
    set beginning of input to text returned of result
    return input
end run

Ändern Sie dann in der Aktion Shell-Skript ausführen das Skript in den folgenden Code :

start_time_and_length="$1"
shift

for f in "$@"
do
    /usr/local/Cellar/ffmpeg/3.2.4/bin/ffmpeg -i "$f" $start_time_and_length -c:v copy -c:a copy -f mp4 "${f%.*}.mp4"
done

Automator-Workflow


Wie das funktioniert:

  • Die Aktion „Nach Finder-Elementen fragen“ übergibt eine Anzahl von Dateisystemobjekten an die nächste Aktion .list

  • Die Aktion „AppleScript ausführen“ verwendet a , um die Startzeit und -länge an den Anfang der von der Aktion „Nach Finder-Elementen fragen“ übergebenen Zeichenfolge hinzuzufügen .display dialoglist

  • Die Aktion "Shell-Skript ausführen" erhält das, was von der Aktion " AppleScript ausführen" zurückgegeben wurde , in diesem Fall den Wert von als a , wobei der erste der von der ist , also die Startzeit und -länge. Dies wird auf die Variable gesetzt und dann verwendet, um sie aus der zu entfernen, an die übergeben wird , um den Rest in der zu verarbeiten . return inputlistitemtext returnedresultdisplay dialogstart_time_and_length shiftlistfor f in "$@"itemslist


Hinweis: Wenn Sie ein Problem mit dem oben gezeigten AppleScript- Code haben , können Sie Folgendes als Problemumgehung verwenden:

on run {input, parameters}
    set tempList to {}
    display dialog "Enter the start time and length:" default answer "-ss 00:00:00 -t 00:00:00" buttons {"Cancel", "OK"} ¬
        with title "Set FFMPEG Start Time and Length: -ss 00:00:00 -t 00:00:00"
    set end of tempList to text returned of result
    repeat with i from 1 to (count of input)
        set end of tempList to item i of input
    end repeat
    copy tempList to input
    return input
end run
Sowohl AppleScript funktioniert einwandfrei. Ich versuche, die beiden Werte mit zwei separaten Eingabefenstern zu lösen, aber es ist immer noch perfekt. Vielen Dank für Ihre Zeit!