Bash script not working on Automator but working from terminal
I have this bash script that works perfectly on terminal
#!/bin/bash
for f in "$@"; do
DIRNAME="$(dirname "$f")"
filename=$(basename "$f")
name="${filename%.*}"
extension="${filename##*.}"
/usr/local/bin/ffmpeg -i "$f" -filter_complex 'scale=1920:1080, pad=2134:1200:107:60' "$DIRNAME"/OUTPUT_"$name"."$extension"
/usr/local/bin/ffmpeg -i OUTPUT_"$name"."$extension" -vf 'scale=1920:1080' FINAL_"$name"."$extension"
done
I am trying to create a service for finder that accept movie files and process them using this script. The service is setup to pass input to stdin. When I select movies on finder and run that service, nothing happens. Like I said, the script works perfectly from terminal.
Any clues?
This question appears to similar to ffmpeg working from command line in Terminal but not in an Automator shell script! but applying the answer (full path to ffmpeg
) did not solve my problem.
Solution 1:
In addition to specifying the full path to ffmpeg
two additional problems needed to be solved:
The path to the output files are also needed.
The
pass input
option of the shell script action has to be setas arguments
.
The final script is then this:
#!/bin/bash
for f in "$@"; do
DIRNAME="$(dirname "$f")"
filename=$(basename "$f")
name="${filename%.*}"
extension="${filename##*.}"
/usr/local/bin/ffmpeg -i "$f" -filter_complex 'scale=1920:1080, pad=2134:1200:107:60' "$DIRNAME"/OUTPUT_"$name"."$extension"
/usr/local/bin/ffmpeg -i "$DIRNAME"/OUTPUT_"$name"."$extension" -vf 'scale=1920:1080' "$DIRNAME"/FINAL_"$name"."$extension"
done
Notice how the path was added to ffmpeg and also that $DIRNAME
was added to the output files, that was not mentioned by the other question.