我刚刚创建了一个小程序,它允许我更改音频文件的细节。
我想改变:
- 标题
- 专辑艺术家
- 表演者
- 专辑
- 图片
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
,我可以再次插入该行代码并且它运行时没有错误。谁能告诉我这种奇怪的行为是如何产生的?
有什么建议么?