YouTubeをAscii Artで再生するGreasemonkeyスクリプト

BlackTambourine – Userscripts.org
greasemonkeyはswf呼び出しに使ってるくらいで処理はほとんどflash。以下デモ映像。

操作は[サルのアイコン右クリック]->[ユーザスクリプトコマンド]->[BlackTambourine]で起動。
スペースバーで再生/一時停止、Jで巻き戻し、Kで早送り、Lで停止。Ctrl押しながらだと操作したときの緑のメッセージが画面に出ない。一時停止した画面をキャプチャしたいときなんかはCtrl + スペースバーするといい。
結構CPU使う。ThinkPadX41で省電力モードだとコマ落ちが見られる。電源繋いでるとほとんど目立たず、22fpsくらいだった。

白黒の映像は効果がわかりやすい。
http://www.youtube.com/watch?v=D0WThSax5GY
http://www.youtube.com/watch?v=wfLVb0yMenA
http://www.youtube.com/watch?v=yQO_ZrWw-38
http://www.youtube.com/watch?v=DebfeHdS43g
http://www.youtube.com/watch?v=RyNLqYEhqY8
http://www.youtube.com/watch?v=8QLXTsviMxk


最初はHTML内の画像を、例えば広告だけ抽出できればその画像をascii artに置き換えようと思っていたんだけどcrossdomain.xmlによる制限やas側で使えるjpg/png decoderが無い(Loader使ってればいらない。そりゃそうだ)といった理由であきらめた。今回作ったas3のクラスでもpng出力してHTML側ではdataスキームで表示させるところまでは作っていた。
当初予定していたものが作れないとわかって他のもの作ろうとしたところにyoutubeの映像を他ドメインにあるswfからもキャプチャできるという情報を得て(via dotimapct, thx!)、じゃ映像でAAしようと。そこでBeckのBlack Tambourineを思い出したので今回スクリプトの名前として勝手に使わせてもらっている。ネタ元のBlackTambourine/Beck。ダイナミックにフォントサイズが変わる辺りがかっこいい。

これで特に面白くないニュース映像なんかが少し面白くなるかと思ったらそんなに面白くならなかった。もともとコントラスト高めな、ある程度映像としての質を意識しているような映像に対しては有効に見える。本気でやるなら人間の肌色の抽出にもう少し特化する必要があると思う。

varも書いて具体的な型でも修飾するのが冗長だと一度捨てたas3も2週間くらい触ってたらいいところも悪いところもすこしずつわかってきた。まだas3のかっこいい書き方は出来ていないのでその辺りが今後の課題。