2017-03-15 14 views
0

私はこのffmpegコマンドをappelscriptを通して端末に送信したいと思います。私はそれをターミナルで直接実行すると動作します。AppleScriptで端末にコマンドを送信

ffmpeg -i score.mov -i palette.png -filter_complex \ 
"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse" -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif 

これはスクリプトエディタではコンパイルされません。

tell application "Terminal" 
    do script "ffmpeg -i score.mov -i palette.png -filter_complex \ 
"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse" -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif" 
end tell 

私は

誰もが何をすべきかのアイデアを持っている「行の期待終わりをしかし、識別子を見つけた」のですか?

答えて

2

do shell script - 他の答えで示唆されているように、 - 行区切り記号を削除し、文字列の二重引用符を一重引用符で置き換えます。

do shell script "ffmpeg -i score.mov -i palette.png -filter_complex 'fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse' -f image2pipe -vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif" 
+0

ありがとう。完璧に作業しました:)私はffmpegに完全パス/ usr/local/bin /を追加して、正しく動作させる必要がありました。 –

1

あなたは近いですが、明確な構文上の問題があります。

まず、ターミナルに伝える必要はありません。

AppleScriptのシェルコマンドの正しい構文は、 "do shell script"とそれに続くコマンドです。この関数にテキストを送信しているので、 "and"と$を適切にエスケープしてください。スクリプトを混乱させないようにスクリプト内には何も表示されません。

今後の一貫性のために、私のアプリの冒頭でプロパティに私が利用すべてのシェルアプリケーションを設定します。

property grep : do shell script "which grep" 

...その後、私のスクリプト行でそれらを思い出すが、それは必要ありません

これを試してみてください:

do shell script "ffmpeg -i score.mov -i palette.png -filter_complex \ 
\\"fps=8,scale=600:-1:flags=lanczos[x];[x][1:v]paletteuse\\" -f image2pipe \ 
-vcodec ppm - | convert -delay 15 -loop 0 -layers Optimize - output39.gif" 
+0

大変ありがとうございました!しかし、今私はこの部分で同じエラーが発生します:-f image2pipe代わりに アイデア?私はこれを吸う。しかし、私は学びたい: –

関連する問題