2010/05/03(Mon)mp3infp を C# で使うためのクラスライブラリ

はてブ数 2010/05/30 6:20 プログラミング::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)WAVAVIVQFASFOGGAPEMP4
音声フォーマットAFMTAFMTAFMTAFMTAFMTAFMTAFMTAFMTAFMTAFMTAFMT
映像フォーマットVFMTVFMTVFMT
演奏時間TIMETIMETIMETIMETIMETIMETIMETIMETIMETIME
TagInfo 型に定義(読書可能)
タイトルINAM_v1INAM_v2INAM_rmpINAM_APEINAMINAMINAMINAMINAMINAMINAM
アーティストIART_v1IART_v2IART_rmpIART_APEIARTIARTIARTIARTIARTIARTIART
アルバムIPRD_v1IPRD_v2IPRD_rmpIPRD_APEIPRDIPRDIPRDIPRDIPRD
コメントICMT_v1ICMT_v2ICMT_rmpICMT_APEICMTICMTICMTICMTICMTICMTICMT
作成日ICRD_v1ICRD_v2ICRD_rmpICRD_APEICRDICRDICRDICRDICRDICRD
ジャンルIGNR_v1IGNR_v2IGNR_rmpIGNR_APEIGNRIGNRIGNRIGNRIGNRIGNR
トラックTRACK_v1TRACK_v2TRACK_APETRACKTRACKTRACKTRACK1(1以上の数値)
著作権ICOP_v2ICOP_rmpICOPICOPICOPICOP
それぞれの型に定義.
(フォーマット)MP3(ID3v1)MP3(ID3v2)MP3(RMP)MP3(APE)WAVAVIVQFASFOGGAPEMP4
ソフトウェアISFT_v2ISFT_rmpISFTISFTTOOL
Orig. ArtistOART_v2
EncoderENC2_v2
URLURL_v2URL1
作曲COMP_v2COMPOSER
ソースISRC_rmpISRCISRC
エンジニアIENG_rmpIENGIENG
タイトルISBJISBJ
AVIバージョンAVIV
URL2URL2
総トラック数TRACK2(1以上の数値)
ディスク番号DISC1(1以上の数値)
総ディスク数DISC2(1以上の数値)
テンポBPM(数値)
コンピレーションCOMPILATION(1 or 0)
グループIGRP