2008年5月29日木曜日

MP3のアートワークを取り出す

もせあの話。
名前の由来は日本語キーボードのMとPと3キーを見てください。

曲順を入替えるボタンと削除するボタンを付けました。
そういえば曲の時間を表示するのを忘れていた・・。
あとはシャッフル再生機能を持たされば基本的にOKだよなぁ。

ネットにMP3のアートワークを取り出す資料が少なかったんで、
サンプルソースを書いて載せておきます。ちなみにPerlです。何かの参考になれば幸いです。
use MP3::Info;
use Devel::Size qw(size total_size);

my $file = "./sample.mp3";

my $tag = get_mp3tag($file,2,2);
$size = total_size($tag->{APIC}->{DATA});
print "Content-type: " . $tag->{APIC}->{FORMAT} . "\n";
print "Content-Length: " . $size . "\n\n";
print $tag->{APIC}->{DATA};
MP3::InfoとDevel::Sizeを使います。このコードを実行する場合はCPANからモジュールを取ってきてください。
ID3のAPICタグの中のDATAに画像がそのまま入っているようです。
その画像のフォーマット情報がAPICタグの中のFORMATに入っています。
Devel::Sizeはtotal_sizeで画像のデータ量を得るために使用します。
これを無視してもブラウザによっては表示できたりするのですが、Flashで読み込ませる場合はエラーが出るので注意。