サウンド、ビデオファイルの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を愛用
掲載日: 2022-02-05
iPentec all rights reserverd.