2009年10月31日土曜日

iPhone / iPod Touch 用動画を作る (VLC 1.0 対応版)

VLC 1.0 以降を使って、iPhone / iPod Touch 用動画を作成するシェルスクリプトです。Mac OS X 10.6.1 と VLC 1.0.3rc (Intel, 32bit 版) で動作を確認しています。64bit 版の VLC 10.0.x は、今のところうまく動作しないようです。

以下のシェルスクリプト mpg2mp4 にまとめました。入力には、1440x1080 29.97fps の MPEG-PS 動画を想定しています。

#!/bin/sh
VLC=/Applications/VLC.app/Contents/MacOS/VLC
OUTPUT=`basename $1 .mpg`.mp4
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=1536"
AUDIO="acodec=mp4a,ab=128"
OPTS="deinterlace,audio-sync"
MUX="mux=mp4"

$VLC --intf=dummy --sout="#transcode{$SIZE,$FPS,$ASPECT,vfilter=croppadd{$CROPPADD},$VIDEO,$AUDIO,$OPTS}:standard{$MUX,dst=$OUTPUT,access=file}" $1 vlc://quit

X264_OPTS から始まる行は、長いので折り返して表示されていますが、nocabac" まで 1行で入力してください。同様に $VLC から始まる行は、vlc://quit まで 1行で入力してください。

使い方

foo.mpg を入力とし、foo.mp4 を作るには、シェルから以下のようにタイプします。

mpg2mp4 foo.mpg

VLC がコマンドラインモードで動作し、しばらくすると、カレントディレクトリに foo.mp4 が吐き出されます。

注意事項

iPhone / iPod Touch で再生できる H.264 形式の動画は、ベースラインプロファイル 3.0 以下である必要があります。上記シェルスクリプトの設定を変更する場合は、VLC の出力するメッセージの以下に示す箇所を見て確認してください。メインプロファイルになると、再生できません。例えば、CABAC を有効にすると、とたんにメインプロファイルになってしまいます。

[0x5012f8] main interface error: no interface module matched "globalhotkeys,none"
[0x5012f8] main interface error: no suitable interface module
[0x20a218] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x28c3f8] dummy interface: using the dummy interface module...
[0x100f8a8] a52 packetizer: A/52 channels:2 samplerate:48000 bitrate:256000
No accelerated IMDCT transform found
x264 [info]: using threads=3
x264 [info]: using cpu capabilities: MMX2 Cache64
x264 [info]: profile Baseline, level 3.0)

こちらではAutomator を使って、簡易な GUI を付けてる方法を紹介しています。