2010年1月13日水曜日

エンコードスクリプトをサービスにしてみる

動画をエンコードするのに Terminal を起動するのが面倒なので、Automator を使ってサービスにしてみます (Mac OS X 10.6 以上) 。

サービスにすると、このように、コンテストメニューから呼び出せます。便利便利。

手順1

Automator を起動し、サービスのテンプレートを選びます。テンプレートに沿って空のワークフローが作成されます。

手順2

ウィンドウ上部のサービスは、次の選択項目を受け取ります:のポップアップからムービーファイルを、検索対象:からすべてのアプリケーションを選択します。

手順3

左側のライブラリから、ユーティリティを選びます。次に、その隣のカラムに出てきたシェルスクリプトを実行を、右の広いエリアにドラッグ&ドロップします。

シェル:のポップアップから/bin/shを、入力の引き渡し方法:から引数としてを選択します。

以下のスクリプト書きます。

VLC=/Applications/VLC.app/Contents/MacOS/VLC
SIZE="width=480,height=270"
ASPECT="canvas-aspect=1:1"
FPS="fps=29.97"
CROPPADD="cropbottom=2,paddtop=2,paddbottom=2"
X264_OPTS="profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac"
VIDEO="venc=x264{$X264_OPTS},vcode=h264,vb=1280"
AUDIO="acodec=mp4a,ab=128"
OPTS="deinterlace,audio-sync"
MUX="mux=mp4"

while [ $# -gt 0 ] ;
do
 FN=`basename "$1" .mpg`.mp4
 DIR=`dirname "$1"`
 cd "$DIR"
 $VLC --intf=dummy \
      --sout="#transcode{$SIZE,$FPS,$ASPECT,vfilter=croppadd{$CROPPADD},$VIDEO,$AUDIO,$OPTS}:standard{$MUX,dst='$FN',access=file}" \
      "$1" \
      vlc://quit > /dev/null 2> /dev/null
 shift
done

手順4

ワークフローを保存します。通常は ~/Library/Services/ に保存します。完成すると、以下のような画面になっているはずです。

複数のムービーファイルを選択して、サービスを実行してもちゃんとエンコードされます。

実際に作業をするとお気づきになると思いますが、Perl や Ruby などでもスクリプトを書けます。色々な用途に使えそうな Automator 。侮れません。

blogspot で自作したワークフローファイルとかを配布したいのですが、どのようにしたらいいのでしょうか??? よい、知恵をお持ちの方、コメントを付けてください。

0 件のコメント:

コメントを投稿