FlashからPNGシーケンス書きだすASを書きました 〜もうMCも怖くない〜 hushexport.PNGSequence

ご無沙汰でした。hushです。
今回はFlashからPNGシーケンス書きだすASを書いたので公開します。
適当に名前をつけておきます→「hushexport.PNGSequence」
Sparkとか投稿する勇気がないのでブログでこっそり。
※こちらはflaファイル→PNGシーケンスの書き出しです。swf→PNGシーケンスはできません。

2012/2/24 追記: AIRアプリ化しました。詳しくはこちらから SWFからPNGシーケンスを作成するAIRアプリ「SWF2PNGSequence」を作りました! | FLATV

2012/4/7 追記: ライセンス表記を追加しました。

まえがき

なんでこんなものを書いたかというと、
Flashからきれいな動画を書き出したかったからです。
swf→mp4などの変換(エンコード)方法がありますが、なかなかうまくいきません。
前からFlashからの動画書き出しに不満だったのですが、AS書いたらあっさりとできました。

こちらがhushexport.PNGSequenceを使って書きだした動画です。
720pで60fpsなので、普通にswf再生するとカクカクして処理落ちしてしまうのですが、
動画形式にするとぬるぬる動いて気持ちいいですね。

他の手法との比較


使い方は続きを読むから↓

使い方

ろくに検証していないので、不具合が出ても責任は取れませんごめんなさい・・・。

ライセンス

MIT License です。(日本語訳

ダウンロード・環境設定

PNGEncoderというライブラリを使っているので、こちらからActionScript 3 corelibの最新版をダウンロードして解凍します。
hushexport.PNGSequence をダウンロードして解凍してください。 (2011/6/12 更新)

解凍してできたフォルダを適当な場所に置いたら、Flashからパスを通します。
Flash メニュー[環境設定] → [Actionscript] → [Actionscript3の詳細設定]でソースパスを追加します。解凍してできたフォルダの中にあるsrcを追加します(corelibとhushexport.PNGSequenceの2つ)。

パブリッシュ設定

Flashのパブリッシュ設定で、PlayerをAdobe AIR2にします。

AS追加

1フレーム目のフレームアクションに以下のコードを追加します。

import com.fdempa.ngtv.hushexport.PNGSequence;
var pngs:PNGSequence;
pngs = new PNGSequence(this,"foldername");

PNGSequenceの説明をしますと、
第二引数がフォルダ名、第三引数が開始フレーム、第四引数が終了フレームとなります。

PNGシーケンス書き出し

あとはムービープレビュー(swf書き出し)すると、
デスクトップにフォルダ("foldername"で指定した名前で)が作成され、
その中にPNGファイルが書き出されます。

動画変換

PNGシーケンス→動画への変換は、AviUtlなりPremiereなりAfterEffectsを使えばできるはずです。
お疲れさまでした!

改善点・コメントなどがありましたらTwitter @hush_inまでオナシャス!