从Shell Script / bin / sh运行FFMPEG

时间:2013-02-14 01:37:16

标签: shell ffmpeg sh

我正在尝试设置一个Shell脚本以在automator监视文件夹中工作...

一切正常,但Run Shell Scrip部分除外......

基本上,当一个文件出现在watch文件夹中时,它会运行调用FFMPEG的shell脚本,然后将文件移动到一个存档文件夹以便安全保存。但是现在automator告诉我一切正常但现在正在创建文件。

我将Shell设置为/ bin / sh并将输入设置为参数

这是我的剧本:

for f in "$@"
do
name=$(basename "$f")
dir=$(dirname "$f")
ffmpeg -i "$f" -b 250k -strict experimental -deinterlace -vcodec h264 -acodec aac "$dir/mp4/${name%.*}.mp4"
echo "$dir/mp4/${name%.*}.mp4"
done

它确实回显了正确的文件名,但实际上并没有运行ffmpeg

我之前尝试过添加-exec,就像我在某些脚本中看到的那样,但仍然没有...

2 个答案:

答案 0 :(得分:3)

FFmpeg在STDIN运行时搜索它。这是为了允许用户点击q以停止编码以及其他任务。这可能会导致脚本出现问题。也许解决方法试试这个:

# notice --+
#          |
#          v
ffmpeg -nostdin -i "$f" -b 250k -strict experimental -deinterlace \
  -vcodec h264 -acodec aac "$dir/mp4/${name%.*}.mp4"

mysterious error with ffmpeg on OSX

答案 1 :(得分:1)

不确定是不是因为我在Mac OS X服务器上运行,但我想它是,我必须包含ffmpeg的绝对路径...修复它

for f in "$@"
do
name=$(basename "$f")
dir=$(dirname "$f")
/opt/local/bin/ffmpeg -i "$f" -b 250k -strict experimental -deinterlace -vcodec h264 -acodec aac "$dir/mp4/${name%.*}.mp4"
echo "$dir/mp4/${name%.*}.mp4"
done