サウンド、ビデオファイルのID3タグの読み込み (TagLibSharpを利用) - C#
TagLibSharpを利用して、サウンド、ビデオファイルのID3タグを読み込むコードを紹介します。
概要
オーディオファイルやビデオファイルには、タイトルやアーティスト、トラック番号などの情報がID3タグでサウンドファイル内に記録されています。
Windowsのエクスプローラーでファイルのプロパティを表示した場合に、詳細情報として表示されます。
この情報をC#のプログラムからアクセスする方法として、LagLibSharpというライブラリを利用すると容易に実装できます。
この記事では、TagLibSharpを利用して、メディアファイルからタグ情報を取得するコードを紹介します。
事前準備:TagLibSharpのインストール
Visual Studioでプロジェクトを作成し、プロジェクトにTagLibSharpをインストールします。TagLibSharpはNuGetでインストールできます。
NuGetパッケージマネージャーコンソールでインストールする場合は、以下のコマンドを実行します。
Install-Package TagLibSharp
または
Install-Package TagLibSharp -Version 2.2.0
NuGetパッケージマネージャーコンソールでのパッケージのインストール手順の詳細は
こちらの記事を参照してください。
または、GUIのNuGetパッケージマネージャーで、TagLibSharp を検索してインストールします。GUIのNuGetパッケージマネージャーでのインストール手順の詳細は
こちらの記事を参照してください。
プログラム
UI
下図のフォームを作成します。テキストボックスとボタンを2つずつ、OpenFileDialogを1つ配置します。
コード
下記のコードを記述します。
using TagLib;
namespace TagRead
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
}
}
private void button2_Click(object sender, EventArgs e)
{
TagLib.File f = TagLib.File.Create(textBox1.Text);
string Title = f.Tag.Title;
string AlbumTitle = f.Tag.Album;
string Artist = f.Tag.Performers.FirstOrDefault() ?? "";
uint Trackno = f.Tag.Track;
f.Dispose();
textBox2.Text += "タイトル:"+Title + "\r\n";
textBox2.Text += "アルバムのタイトル:" + AlbumTitle + "\r\n";
textBox2.Text += "アーティスト:" + Artist + "\r\n";
textBox2.Text += "トラック:" + Trackno.ToString() + "\r\n";
}
}
}
解説
button1はファイルを開くダイアログを表示し、選択されたファイル名のフルパスをtextBox1 に代入する処理です。
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
}
}
button2はtextBox1に入力されたパスのメディアファイルを開き、タグを読み取りテキストボックスに内容を表示する処理です。
ファイルの読み込みは、
TagLib.File.Create()
メソッドを利用します。Createメソッドの第一引数に読み込むファイルのパスを与えます。
読み鋳込みができると、
TagLib.File
オブジェクトが戻り値で返ります。
TagLib.File f = TagLib.File.Create(textBox1.Text);
/* (中略) */
f.Dispose();
タグの内容を読み出し、変数に格納します。タグの値は、
TagLib.File
オブジェクトの
Tag
プロパティに設定されています。
string Title = f.Tag.Title;
string AlbumTitle = f.Tag.Album;
string Artist = f.Tag.Performers.FirstOrDefault() ?? "";
uint Trackno = f.Tag.Track;
テキストボックスにタグの内容を出力します。
textBox2.Text += "タイトル:"+Title + "\r\n";
textBox2.Text += "アルバムのタイトル:" + AlbumTitle + "\r\n";
textBox2.Text += "アーティスト:" + Artist + "\r\n";
textBox2.Text += "トラック:" + Trackno.ToString() + "\r\n";
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックしてファイル選択ダイアログを表示し、メディアファイルを選択するか、直接textBox1にファイルのパスを入力します。
[button2]をクリックします。下部のテキストボックスにメディアファイル(今回の場合はサウンドファイル)のタイトルやトラック番号などの情報が表示されます。
別のサウンドファイルでの表示結果です。
サウンドファイルやビデオファイルのID3タグの情報を取得できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用