swfmillで動的FlashLite作成!

swfmillで動的FlashLite作成してみました!

swfmillとphpを使用するとバッチ処理で動的なFlashLiteが作成できます。
基本ダミーの画像を入れて、画像をPHP側でごにょごにょする感じです。
今回は、先日配布を開始したボイス集を携帯でも「簡単」に再生したいなぁってことでFlashLiteに埋め込んでみました。
視聴はFlashLiteでダウンロードはmmfファイルとかにすればユーザーもラクチンでいいかな?
ご利用はこちらから。

ausoftbankならいけると思います。docomoは明日くらいには対応しているはず。
とりあえずWindowsで作業してたけど、どうもバグっぽいのでcygwin版にしたらうまくいった。

swfmill swf2xml

はうまくいくけど

swfmill xml2swf

がバグっぽい。背景色の置換はOKだけど画像や音声の置換をするとswfが壊れる。
cygwinの場合は問題がないので、これからwindowsでやろうかなぁって方はcygwinコンパイルしてからやったほうがいいかも。
とりあえずおみやげとしてcygwinなセットを置いておきますのでどうぞ。
http://moeten.info/flex/20090214_swfmill/swfmill-cygwin.zip
日本語が使えるパッチも当ててあります。

簡単な説明

Flash CS4で簡単なFlashLite1.1を作成
とりあえずswfmillでswfをxmlに変換。
これがとりあえずのテンプレートになる。
この際、埋め込みされる画像とかを分かりやすい文字に変換しておくとPHP側で簡単に置換ができます!
あとは、上記で指定したPHPでわかりやすい文字をbase64でエンコした画像とで置換すればOK
テンプレートなxmlの出力(コマンド)

swfmill swf2xml my.swf > template.xml

テンプレートを用いて書き換え(PHP)

//書き換え準備
$mmf = file_get_contents("sound.mmf");
$search = array(
                "%%SOUND%%",
                "%%TITLE%%"
                );
$replase = array(
                base64_encode( $mmf ) ,
                $title
                );
//テンプレート読み込みと書き換え
$xmlfile = "template.xml";
$xml = str_replace( $search , $replase , file_get_contents( $xmlfile ) );
//中間ファイルの出力
file_put_contents( "work.xml" , $xml );
//swfmillでxmlをswfに変換
$cmd = " swfmill.exe -e cp932 xml2swf work.xml > {$outputfilename} ";
system( $cmd );