2010/05/03(月)mp3infp を C# で使うためのクラスライブラリ
TCO Q.Round1 が rescheduled だったのを知らなかったので、
mp3infp.dll を C#から使えるようにポーティングしていました。
C#からMP3ファイルのタグ情報を取得したいなぁと思ったのですが、
自前でフォーマット読んであーだこーだやるよりは、ライブラリで確実にと。
いつもタグエディタとして大変お世話になっているmp3infpに頼ることにしました。
このクラスライブラリの特徴
- mp3infpが扱えるすべての形式に対応。
- Unicode形式の保存にも対応。
- ソースコードをあなたのプロジェクトにコピペするだけで使える。
- ゆるゆるライセンス
例
// タグ情報を読み込んで表示してみる。
Environment.CurrentDirectory = @"E:/Music";
TagInfo tag1 = MP3infp.LoadTag(@"[丹下桜] SAKURA/14. New Frontier.mp3");
Console.WriteLine(tag1.Title + " / " + tag1.Artist);
とか
// ID3v2 タグを ID3v1タグにコピーしてみる
MP3infp mp3infp = new MP3infp(@"E:/Music/[水樹奈々] PHANTOM MINDS/02. Don't be long.mp3");
// ID3v1がなかったら作る
if (!mp3infp.ContainsMP3Tag(MP3infp.MP3TagType.ID3v1))
mp3infp.AddMP3Tag(MP3infp.MP3TagType.ID3v1);
TagInfo tag_v1 = mp3infp.LoadTag<TagInfo.MP3_ID3v1>();
TagInfo tag_v2 = mp3infp.LoadTag<TagInfo.MP3_ID3v2>();
// コピー元とコピー先で共通して有効な項目のみコピーして保存。
TagInfo.Copy(tag_v2, tag_v1);
tag_v1.Save();
// ID3v2はUnicodeに変換して保存。
tag_v2.SaveUnicode();
とか、そーいうことをC#からできるようになります。
mp3infpのお陰で、mp3ファイルのID3v1,ID3v2の他、RMPやOGG, WAV, AVI, mp4 などにも対応できるのが嬉しいですね。
素晴らしいプログラムをありがとうございました。
次のソースコードをプロジェクトに追加するだけで使えるよーになります。
ダウンロード
本体: mp3infp.cs (GitHub)
ライセンス: NYSL / http://www.kmonos.net/nysl/
動作に必要: Win32工作小屋 - mp3infp / http://win32lab.com/fsw/mp3infp/
mp3infp自体はLGPLですので、配布の際はご注意ください。
各種フォーマットと利用可能なタグ項目の対応表
意味合いの似てるものは併合してます。
TagInfo 型に定義(読取専用) | . | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
(フォーマット) | MP3(ID3v1) | MP3(ID3v2) | MP3(RMP) | MP3(APE) | WAV | AVI | VQF | ASF | OGG | APE | MP4 | |
音声フォーマット | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | AFMT | |
映像フォーマット | VFMT | VFMT | VFMT | |||||||||
演奏時間 | TIME | TIME | TIME | TIME | TIME | TIME | TIME | TIME | TIME | TIME | ||
TagInfo 型に定義(読書可能) | ||||||||||||
タイトル | INAM_v1 | INAM_v2 | INAM_rmp | INAM_APE | INAM | INAM | INAM | INAM | INAM | INAM | INAM | |
アーティスト | IART_v1 | IART_v2 | IART_rmp | IART_APE | IART | IART | IART | IART | IART | IART | IART | |
アルバム | IPRD_v1 | IPRD_v2 | IPRD_rmp | IPRD_APE | IPRD | IPRD | IPRD | IPRD | IPRD | |||
コメント | ICMT_v1 | ICMT_v2 | ICMT_rmp | ICMT_APE | ICMT | ICMT | ICMT | ICMT | ICMT | ICMT | ICMT | |
作成日 | ICRD_v1 | ICRD_v2 | ICRD_rmp | ICRD_APE | ICRD | ICRD | ICRD | ICRD | ICRD | ICRD | ||
ジャンル | IGNR_v1 | IGNR_v2 | IGNR_rmp | IGNR_APE | IGNR | IGNR | IGNR | IGNR | IGNR | IGNR | ||
トラック | TRACK_v1 | TRACK_v2 | TRACK_APE | TRACK | TRACK | TRACK | TRACK1(1以上の数値) | |||||
著作権 | ICOP_v2 | ICOP_rmp | ICOP | ICOP | ICOP | ICOP | ||||||
それぞれの型に定義 | . | |||||||||||
(フォーマット) | MP3(ID3v1) | MP3(ID3v2) | MP3(RMP) | MP3(APE) | WAV | AVI | VQF | ASF | OGG | APE | MP4 | |
ソフトウェア | ISFT_v2 | ISFT_rmp | ISFT | ISFT | TOOL | |||||||
Orig. Artist | OART_v2 | |||||||||||
Encoder | ENC2_v2 | |||||||||||
URL | URL_v2 | URL1 | ||||||||||
作曲 | COMP_v2 | COMPOSER | ||||||||||
ソース | ISRC_rmp | ISRC | ISRC | |||||||||
エンジニア | IENG_rmp | IENG | IENG | |||||||||
タイトル | ISBJ | ISBJ | ||||||||||
AVIバージョン | AVIV | |||||||||||
URL2 | URL2 | |||||||||||
総トラック数 | TRACK2(1以上の数値) | |||||||||||
ディスク番号 | DISC1(1以上の数値) | |||||||||||
総ディスク数 | DISC2(1以上の数値) | |||||||||||
テンポ | BPM(数値) | |||||||||||
コンピレーション | COMPILATION(1 or 0) | |||||||||||
グループ | IGRP |