2011年07月22日

libid3tagのインストール



MP3ファイルのid3タグを読み込むライブラリーですが、現在ウェブ上で入手できるものに、以下の二つのフリーライブラリーがあるようです。

  1. 「id3lib」.....id3v2.3.0対応、UNICODEはUTF16のみ対応。
  2. 「libid3tag」.id3v2.4.0対応、UNICODEはUTF16/UTF16BE/UTF8に対応。


上記二つのライブラリーを比較検討した結果、今回はid3v2.4.0にも対応した「libid3tag」を選びました。



libid3tag-0.15.1bのインストール

今回はsourceforge.netというサイトからダウンロードしました。



上図のサイトを開くと同時に、「libid3tag-0.15.1b.tar.gzを開く」ダイヤログが表示されるので、ファイルをどのように処理するか選んで「OK」ボタンを押します。すると「libid3tag-0.15.1b.tar.gz」ファイルのダウンロードを開始します。

次にダウンロードした「libid3tag-0.15.1b.tar.gz」ファイルを所定のフォルダー内にWinRAR等を使って解凍すると、「libid3tag-0.15.1b」と言う名のフォルダーが展開されます。




zlibのインストール

まずは「zlibのホームページ」からzlibのソースコードをダウンロードしてください。



「zlib source code, version 1.2.5, zipfile format (644K...):」の欄には、「US (zlib.net)」と「Pick a mirror (prdownloads.sourceforge.net)」の二つのリンク先がありますが、どれでも同じです。クリックすると「zlib125.zip」というファイルが自動でダウンロードされます。

次に先ほど作成した「libid3tag-0.15.1b」と同じフォルダー内にWinRAR等を使って解凍すると「zlib-1.2.5」という名のフォルダーが展開されるので、フォルダー名を「zlib-1.2.5」から「zlib」に変更してください。



ソリューションの作成

先ほど作成した「libid3tag-0.15.1b」フォルダーを開いて、その中の「msvc++」フォルダーの中にある「libid3tag.dsp」をVisual Studio NET.2003で開きます。



VC6プロジェクトからVC7ソリューションへコンバートするか確認してくるので、「Yes To All」ボタンを押して、VC7ソリューションを作成します。



ここに先ほど解凍した「zlib」フォルダーから「old」フォルダー内の「visualc6」フォルダー内にある「zlib.dsp」をソリューションに追加します。



「libid3tag」プロジェクトのプロパティページを出して、右側のツリービューから「Configuration properties」→「C++」→「General」を選択し、「Additional Include Directories」の欄に「..\..\zlib」と追加します。



同じく「libid3tag」プロジェクトの「Project Dependencies」ダイヤログで、「zlib」にチェックを入れて「OK」ボタンを押します。



ここでビルドしてエラーが出なければ成功です。



フレームヘッダフラグによるファイル変更制限の解除

フレームヘッダフラグの初期値により、タグによっては変更するとファイルに保存されない場合があるので、この部分を修正します。(尚詳細については「ID3v2 The Audience is informed」の「 3. Default flags」を御参照ください。)

「libid3tag」プロジェクト内の「frame.c」ファイルの、513行目からのif文をコメントアウトします。


/*
* NAME: frame->render()
* DESCRIPTION: render a single, complete frame
*/

id3_length_t id3_frame_render(struct id3_frame const *frame,
id3_byte_t **ptr, int options)
{
id3_length_t size = 0, decoded_length, datalen;
id3_byte_t *size_ptr = 0, *flags_ptr = 0, *data = 0;
int flags;

assert(frame);

/* if ((frame->flags & ID3_FRAME_FLAG_TAGALTERPRESERVATION) ||
((options & ID3_TAG_OPTION_FILEALTERED) &&
(frame->flags & ID3_FRAME_FLAG_FILEALTERPRESERVATION)))
return 0;*/
←このif文コメントアウトして下さい。

/* a frame must be at least 1 byte big, excluding the header */

decoded_length = render_data(0, frame->fields, frame->nfields);
if (decoded_length == 0 && frame->encoded == 0)
return 0;

/* header */






<<MP3の再生 第2部ページの先頭ID3タグの読み込み 第1部>>




posted by ひろし at 14:27| Comment(0) | MP3ファイルフォーマット | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。