2008年5月31日土曜日

Processing QuickTimeのサムネイル その1

Processingの解説本を買ってみたが、けっこう面白いです。

最近ビデオファイルのカタログを作りたいと思って、サムネイル作りがしたいのですが、WindowsなWMV、MacなQuickTime、WebなFLV、加えてmp4などといくつもフォーマットがあって、だいたいのソフトがMWV+MPEGに対応、あるいはMOVに対応、あるいはFLVに対応、といった具合に3つに分かれており、なかなか一括で作業できません。
あと、9割以上のソフトが最初のフレームしかサムネイルに出来ないため、半分くらいのビデオがクロで始まっているので、当然サムネイルが黒になってしまいます。

なのでProcessingでやってみようと思ったら、ViodeのライブラリにMOVが扱えるものが含まれていました。
ところが、やはりMOVしか扱えず、WMVはエラーになりました。
難しい・・・。全部とは言わないまでも大方対応できるソフトは無いのか・・・めんどいよ。

とりあえずテストとしてやってみたコードです。

//video thumbnail

import processing.video.*;
Movie myMovie;

void setup() {
size(300, 300);
//ファイル名は実在するものにします↓
myMovie = new Movie(this, "videoFilePth\videofile.mov");
myMovie.loop();
}

void draw() {
tint(255, 20);
image(myMovie, mouseX, mouseY);
}

void movieEvent(Movie m) {
m.read();
//ちょうど半分の時間のところへジャンプ!
myMovie.jump((myMovie.duration())/2);
//ただしこのままではクロップされてしまいます。
saveFrame("movThumbnail.png");
}

これで、出てきたウィンドウを閉じると、ソースのあるディレクトリにサムネイルがPNGで保存されます。
勝手にPNGで保存してくれるのが手軽でいいですね。
あと、なんと言っても指定したフレームにジャンプできるのがすごくいいよ。
QuickTimeはこういうフレームの考え方がしっかりしていそうなイメージがあるなぁ。

制作・©:のぼる/N.Lab