看到最近技術宅是如此的火,比如 Word 版 Only my railgun(http://v.youku.com/v_show/id_XMTM3Mjg5OTcy=.html)、Vim 版 Bad Apple(http://v.youku.com/v_show/id_XMTQ0MjM4Nzg4.html)。我也來玩玩技術宅,裝一下逼。。。
做出來的效果看這裡(請用高清):
http://v.youku.com/v_show/id_XMjA2OTgzMjcy.html
這個是原始視頻:http://v.youku.com/v_show/id_XMjIyNjcwMA==.html。另外順便一提,我這個視頻跟原始視頻的同步是很精確的,你可以比較一下。
想到要玩就玩以前的人都沒有搞過的,所以我想到了用 AutoHotKey(http://www.autohotkey.com/)通吃任意文字編輯器。基本原理是先把視頻中的每一幀抓下來儲存成圖片,再使用 aview(http://aa-project.sourceforge.net/aview,cygwin 裡有 Windows 版)將圖片轉換成字元,這個直接參考了七星廬大神的攻略:http://qixinglu.com/archives/vim_is_ascii_player。
然後一段很簡單的 AutoHotKey 指令碼:
#b::<br />Loop, read, files.txt<br />{<br /> FileRead, Clipboard, %A_LoopReadLine%<br /> if not ErrorLevel<br /> {<br /> Send ^v<br /> Sleep 37<br /> }<br />}<br />return
每一幀映像都存到一個檔案裡,這些檔案的名字存到 files.txt 裡面。再在 AutoHotKey 中把每個檔案的內容讀到剪貼簿裡,然後每隔 37 毫秒向程式發送 Ctrl+V 。這個 37 是個經驗值,是試出來的,對應於 18fps 的視頻。
其他就是 mplayer 可以直接輸出 pnm 格式的圖片:
mplayer -vo pnm:outdir=xop18 X3-1.mp4
其實 pnm -> txt 這個過程可以寫個 Makefile 然後 make -j3 多線程並行轉換,只不過懶得寫了,直接用 start 命令(http://technet.microsoft.com/zh-cn/library/cc755674(WS.10).aspx)實現多進程。