本文へスキップ
AZ Tools

MP3のタグがプレーヤーごとに違って見える理由

MP3にはタイトルやアーティストを書く場所がひとつではなく、二つあります。作られた年代も規格も異なり、両者が一致していなければならないという決まりもありません。そこにプレーヤーが最初に読み込んだときのキャッシュという三つ目の情報源が加わると、同じ曲が三台の機器で三通りに表示される、というよくある状況になります。

MP3は二つのタグを同時に持てる

古い形式のID3v1は、ファイルの末尾に貼り付けられた128バイト固定のブロックです。タイトル30文字、アーティスト30文字、アルバム30文字、年4文字が入るだけで、それ以外は入りません。入りきらない文字は、そのまま切り捨てられます。

新しい形式のID3v2はファイルの先頭にあり、実用上の長さ制限がなく、現代のプレーヤーが表示するものすべてを保持します。トラック番号、ディスク番号、作曲者、コメント、歌詞、ジャケット画像などです。今世紀に書かれたファイルはたいてい両方を持っています。古い機器のために、タグ編集ソフトが旧ブロックも書き続けているからです。

この二つを同期させる仕組みはありません。あるソフトでタイトルを直しても新しいタグだけが更新され、末尾には古いままの写しが残り、別のプレーヤーはそちらを優先することがあります。

日本語や韓国語は片方のタグでしか生き残らない

ID3v1には文字エンコーディングという考え方がありません。ただのバイト列で、読む側のソフトが想定した古いエンコーディングで解釈されます。そのため日本語、韓国語、キリル文字、アクセント付きラテン文字は、化けるか疑問符になります。

ID3v2はテキストフレームの先頭にエンコーディングを示す1バイトを置くことでこれを解決しました。タイトルをUTF-8やUTF-16で保存でき、どこでも正しく読み戻せます。同じ曲があるアプリでは正しく表示され、別のアプリでは疑問符の列になるのは、二つのアプリが別々のタグを読んでいるからです。

ジャケット画像はファイルの隣ではなくタグの中にある

アルバムアートはID3v2の画像フレームに埋め込まれ、表ジャケット、裏ジャケット、アーティスト写真といった種別と画像データそのものを持ちます。ファイルの隣に置かれたfolder.jpgは慣習にすぎず、対応するプレーヤーもあれば、まったく見ないプレーヤーもあります。

スマートフォンでは画像が出るのにパソコンのプレーヤーでは出ない、という場合、画像が片方にしか存在しないのがふつうです。アルバム全体が必要以上に数メガバイト大きくなるのも同じ理由で、大きなジャケットを全曲に埋め込めば、ファイルの数だけ同じ画像が保存されます。

プレーヤーは最初に読んだ内容を覚えている

多くの音楽ソフトは、フォルダを初めて走査したときにライブラリのデータベースを作り、以後はそこから読みます。ディスク上のファイルのタグを直してもライブラリは更新されないので、ファイルは正しいのに画面には古い名前が残ります。

タグ編集が失敗したと結論づける前に、プレーヤーに再スキャンさせるか、曲をいったん削除して追加し直してください。タグの問題として持ち込まれる相談のかなりの割合は、古いタグではなく古いキャッシュです。

トラック番号と、意外な衝突

最初のID3v1にはトラック番号がありませんでした。後の改訂が、30バイトのコメント欄の末尾2バイトを流用して場所を作ったので、トラック番号はコメントが28文字以内のときにだけ存在できます。

これは形式そのものに刻まれた取引です。長いコメントとトラック番号を、旧タグに同時に保存することはできません。あるプレーヤーでだけトラック番号が消えるなら、これが有力な原因です。

ファイル自身が語ること

タグとは別に、音声の最初のフレームがビットレート、サンプリング周波数、チャンネルモードを持っています。これはタグの主張ではなく、実際に符号化された内容を表します。高音質と名前を付けられていてもフレームが96 kbpsだと言うなら、名前を変えたことで音質が良くなったわけではありません。

再生時間も同じ落とし穴です。固定ビットレートのファイルは長さをまったく保存しないので、プレーヤーはファイルサイズから推定します。適切なヘッダを持たない可変ビットレートのファイルで再生時間がずれ、シークが不正確になるのはこのためです。

自分自身と矛盾するファイルを整理する

何かを書き換える前に、まず両方のタグを読んでください。問題のプレーヤーがどちらを信じているかが分かります。二つが違っているなら、その違いが答えであり、対処は古い方を直すか、旧ブロックごと削除するかのどちらかです。

書き込むときは、UnicodeのエンコーディングでID3v2を書くタグ編集ソフトを選び、旧ブロックは本当に必要な機器がある場合にだけ残してください。ひとつのファイルに真実が二つある状態こそが、そもそもこの問題を生んだ配置です。

関連ツール