2013-06-25 87 views
5

我試圖將新的藝術家和標題id3標籤保存到軌道。從軌道加載標籤運行良好,也爲軌道編輯標題工作正常。但是當我試圖編輯表演者(藝術家)它並沒有改變任何東西。下面是代碼TagLib銳沒編輯藝術家

public void renameID3(string artist,string title) 
{ 
    using (TagLib.File f = TagLib.File.Create(FInfo.FullName)) 
     { 
      f.Tag.Artists[0] = artist; //Both of them are not ... 
      f.Tag.Performers[0] = artist; //working 


      f.Tag.Title = title; //This works fine 
      f.Save(); 
     } 
    } 

另外,我看着的FirstPerformer的definiton和標籤庫類的FirstPerformer成員,但他們沒有任何一套方法。 任何人都知道如何解決這個問題?

回答

7

卡住了同樣的問題。研究發現,清除Performers首先對按預期工作:

using(TagLib.File tlFile = TagLib.File.Create(newFileName)){ 
    //tlFile.Tag.Performers = new []{translateDict[author]}; //doesn't work 
    tlFile.Tag.Performers = null; //clearing out performers 
    tlFile.Tag.Performers = new []{translateDict[author]}; //works now 
    tlFile.Save(); 
} 
+0

你是最棒的男人!非常感謝 –

+0

你不應該需要'= null'步驟。問題是Performer等人返回* new *數組,因此編輯它不會更改底層數據結構。它應該真的返回一個IEnumerable 但我年輕和魯莽。 –

+0

@BrianNickel你可以請採取以下問題:http://stackoverflow.com/questions/35414734/cant-add-image-keywords-if-there-were-no-keywords-to-begin-with-taglib-sharp/35421960#35421960 –

1
TagLib.File f = TagLib.File.Create(yourFile); 
f.Tag.AlbumArtists = new string[] { "Artist 1", "Artist 2", ... }; 
0

這爲我工作:

TagLib.File file = TagLib.File.Create (fname); 
file.Tag.Performers = new String[1] { artist }; 
file.Save();