4

我刚刚创建了一个小程序,它允许我更改音频文件的细节。

我想改变:

  • 标题
  • 专辑艺术家
  • 表演者
  • 专辑
  • 图片

taglib 库允许我使用完全相同的代码更改不同类型的音频文件。

.m4a对我来说,下面的代码与扩展名和一起工作得很好mp3,但是当我尝试更改一些.wma文件时,就发生了一个奇怪的错误。

public void changeAttributes(string filePath, string title, string interpret, string album)
{
    TagLib.File file = TagLib.File.Create(filePath);

    file.Tag.Title = title;                                 //Titel
    file.Tag.AlbumArtists = new String[] {interpret};       //AlbumArtist
    file.Tag.Performers = new String[] { interpret };       //Performers
    if (!album.Equals("")) { file.Tag.Album = album; }      //Album (if there is no album given, it won´t be overwritten)

    if (!albumCoverPath.Equals("")) {
        file.Tag.Pictures = new IPicture[] { (IPicture)new Picture(albumCoverPath) };
    }   //Album-Cover (if there is no image given, it won´t be overwritten)

    file.Save();
}

一旦我将这三个.wma-files放入我正在测试的文件夹中,代码就会停止并让我进入调试器中file.Save();的错误行

System.ArgumentOutOfRangeException:“大小小于零。”

在调试器中检查file-object 时,我找不到任何可以解释错误发生的内容。

编辑:

一旦我删除了更改的行AlbumArtists,代码运行得很好。

在更改了除 之外的所有内容之后AlbumArtists,我可以再次插入该行代码并且它运行时没有错误。谁能告诉我这种奇怪的行为是如何产生的?

有什么建议么?

4

0 回答 0