How can I make an Automator service run a shell script and display the output?

I'm using Automator to run a shell script (ffmpeg transcode to h264) as a 'Service', so that I can just right click the high res .mov file and select the service. It works fine, but as it's ffmpeg it would be good to see the output in a Terminal window. Is there a way to see the output in real time?

Shouldn't make a difference, but here's the script just in case:

for f in "$@"
do
/usr/local/bin/ffmpeg -i "$f" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done

This AppleScript will launch a Terminal window with the command you specified:

on run {input, parameters}
    tell application "Terminal"
        activate
        set filesString to ""
        repeat with file_ in input
            set filesString to filesString & " " & quoted form of (POSIX path of file_)
        end repeat
        do script "for f in" & filesString & "; do
/usr/local/bin/ffmpeg -i \"$f\" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done"
    end tell
    return input
end run

Create a “Run AppleScript” action in Automator and paste it in there.


Nice and clean solution is to display message via Notification Center. Just execute the following terminal command in your script.

osascript -e 'display notification "All files converted" with title "ffmpeg converter"'

'osascript' command runs any AppleScript from terminal, 'display notification' pops up nice notification.

enter image description here


Also you can use 'display alert'. It has no limitation of message length and it's easy to add OK button to it.

osascript -e 'set alertResult to display alert "Bad news :( Error converting your video file." buttons {"OK"} as warning'

enter image description here

Here is Apple Script commands reference. Look for 'display notification' and 'display alert' for more information.


Here's a simple solution that I got working, which shows the command output once it's finished:

  1. Pass the output of a Run Shell Script action to Set Value of Variable
  2. Use that variable to, for example, display a notification.

For example, with the test.py Python script, all I'm doing is printing the arguments passed (“Running a script with …”), so when I run it, after finishing, it shows: