Mac终端(Bash)批处理程序使用ffmpeg获取多媒体文件信息

时间:2013-12-05 08:27:41

标签: macos bash batch-file ffmpeg

我有一台Mac电脑。通常我的所有批量编程都在我的电脑上完成。所以我尝试使用Mac shell创建我认为是简单等效的东西。显然,众所周知,我认为这是愚蠢的。经过2天的网络搜索,我发现了我能找到的最接近的东西。但不,这也不起作用。

我想做的就是将多媒体文件放到脚本上,并让终端给我ffmpeg信息输出。在我的搜索中,我确实找到了这个"$@",据我所知,窗户蝙蝠相当于%*。这意味着您可以在脚本上抛出文件,并且脚本将这些文件称为可以处理的变量。所以我相信我想做的事情是可能的。

再次,底部的代码只是查看所有.mov文件的当前目录并运行ffmpeg。它不起作用。但是......如果没有人可以帮我弄清楚我想做的实际事情,那么我会解决下面的确实有效的问题。

#!/bin/bash
FFMPEG=/Applications/ffmpeg
FIND=/usr/bin/find
FILES=$(${FIND} . -type f  -iname "*.mov")
if [ "$FILES" == "" ]
then
echo "There are no *.mov file in $(pwd) directory"
exit 1
fi

for f in *.mov
do

$FFMPEG -i "$f"

done

如果有人能帮我解决这个问题,我真的很感激。先感谢您!朱

我刚刚从“类似问题”侧边栏找到了这个解决方案,这与上面的脚本类似,所以再次,不完全是我想要的但是......没关系,对我不起作用。 How to batch convert mp4 files to ogg with ffmpeg using a bash command or Ruby

2 个答案:

答案 0 :(得分:1)

.command个文件不会接收丢弃的文件作为输入。

您可以打开终端窗口,键入for f in,删除窗口上的文件,然后键入; do ffmpeg -i "$f"; done

或者将这样的脚本保存为AppleScript编辑器中的应用程序:

on open argv
    set paths to ""
    repeat with f in argv
        set paths to paths & quoted form of POSIX path of f & " "
    end repeat
    tell application "Terminal"
        do script "for f in " & paths & "; do ffprobe -i \"$f\"; done"
        activate
    end tell
end open

ffprobe -iffmpeg -i类似,但不会显示At least one output file must be specified之类的错误。

修改:您还可以使用Platypus

将脚本设置为for f; do ffprobe -i "$f"; done

答案 1 :(得分:0)

这可能会这样做:

for FILE in "${@}"
do

    /Applications/ffmpeg -i "$FILE"

done