音楽ファイルに画像 (アルバムアート) を埋め込む

アプリケーション側で統合的にアルバムアートを管理するものもあるけれど、いろんな PC で手軽に使えるようにファイルに埋め込んでしまいたいなぁと思って少し調べてみました。

重視することは

  • 可逆
  • Windows では MPC と foobar2000 で再生できること
  • Linux のなるべく多くのソフトで再生できること
  • 再生時にカバーの表示が出来ればベターだが、再生さえできれば表示はできなくても我慢


の 3 つ (+1)。

さらに、いろんな機器 (ポータブルプレイヤーとか) で使えるといいなとは思うけど、最悪そっから非可逆エンコードするつもりなので優先度は低めです。また、 cue シートを埋め込んで 1 枚複数トラックの CD を 1 ファイルにすることもできますが、今回は 1 トラックで 1 ファイルを想定しています。

FLAC

raw flac ファイル。うちではメインフォーマット。 foobar2000 の cue シートを使う方法しか知らなかったんだけど、実は標準で画像ファイルの埋込みに対応しています。コマンドラインで組み込めるので以下にメモを残しておきます。

$ flac -8 --picture="cover.jpg" -o outfile.flac infile.wav

圧縮率重視 (8) で圧縮して cover.jpg を埋め込んでいます。


これは、以下のようにしても同じことです。

$ flac -8 --picture="3|image/jpg|||cover.jpg" -o outfile.flac infile.wav
$ flac -8 --picture="||||cover.jpg" -o outfile.flac infile.wav


picture のあとに指定している 3 は 「 Cover (front) 」 を指定するもの (TYPE) ですが、省略時にはデフォルトで 3 が指定されるようです。その他細かい設定は以下のとおりですが、あまり使わないと思われます。色数指定して GIF 埋込みとかだと使うのかな…?

picture=[TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE


TYPE に入れる値を変えると、画像が何を表すものか明示的に指定してやることができます。 foobar2000 でアルバムアートを表示させて右クリックしてみると Front Cover やら Artist やら切り替えられますが、とりあえずそれらに対応したものだけ書き出しておきます。

1: Icon 32x32 pixels 'file icon' (PNG only)
3: Front Cover
4: Back Cover
6: Disc
8: Artist

詳しくは、 metaflac --help とかで出てきます。


なお、あとから埋込むことも出来ます。

$ metaflac --import-picture-from="3||||cover.jpg" outfile.flac
ALAC

ALAC=AppleLossLess のことです。こんな感じで入れられました。

$ mp4box -itags cover="cover.jpg" outfile.m4a

mp4 コンテナに突っ込んでしまうので、 m4a コンテナに入るものなら多分全部共通。


余談ですが、エンコードには ffmpeg を使っています。

$ ffmpeg -i infile.wav -acodec alac outfile.m4a
Matroska

何でもかんでもぶち込める matroska にも頼ってみました。 GUI ツールである mmg を起動して、オーディオ部分に flac なりをいれてやり、添付ファイルに cover.jpg を入れて mux してやるだけです。

対応状況

実際にファイルを作成して各種アプリで再生させてみた結果は以下のとおりになりました。

MPC-HC VLC-win foobar2000 TOTEM mplayer VLC-linux Rhythmbox
FLAC
ALAC
MKA *1

○…画像・音声とも可/△…音声のみ可/☓…再生不可


iPod へ持ち出すとかいうなら ALAC がいいんだろうけど、 MPC-HC で再生できないのが。バージョンアップやフィルタの追加でなんとかなるのかな?

MKA は Windows なら Haali Splitter を通せばほぼ完璧に再生してくれるので、 MPC だろうが WMP だろうが理想的に再生してくれます。 VLC も画像を表示してくれますが、こちらはシークが遅かったりしてイマイチ。しかし matroska の一番の問題は PC 以外ではほぼ使えないことですねw


自分の場合やっぱり FLAC でいいかな…今あるファイルに追加で埋め込めなくもないし。

*1:要 Haali splitter