2014-10-31 45 views
1

我使用taglib尖銳庫從我的歌曲的命令如何從id3中刪除Lyrics3 v2 tag?

Track = TagLib.File.Create("C:\test\Super Trouper.mp3") 
Track.RemoveTags(TagLib.TagTypes.AllTags) 
Track.Save() 
Track.Dispose() 

不幸的是去除所有標籤,該.RemoveTags不刪除Lyrics3 V2.0標籤
(這裏規定:http://id3.org/Lyrics3v2)。

這種標籤可以像「MP3 Diags(診斷)」的工具來檢測(http://mp3diags.sourceforge.net/

我如何能徹底清除從我的歌所有標籤和所有的幀?

或者我該如何刪除這個特定的Lyrics3 v2標籤?

回答

3

不幸的是,TagLib#不支持Lyrics3標籤。在MP3文件中,TagLib#將檢測並且只能刪除APE,Id3v1和Id3v2標籤。

節能與標籤庫#去除標籤的文件後,你可以不喜歡用自己的代碼如下:

  1. 打開一個文件流。
  2. Seek to Length - 9,讀取9個字節,看他們是否等於LYRICS200LYRICSEND。如果沒有,請關閉文件。
  3. 找回11個字節。
  4. 讀取11個字節並檢查它們是否匹配LYRICSBEGIN。如果是這樣,那麼截斷該文件。
  5. 如果不是,則繼續查找1個字節並重復步驟4.大概在10KB左右後放棄。

這不是最有效的策略,但我想象的文件,這些標籤的數量是相當低,因此最應該步驟2

+0

這一工程後停止。謝謝Brian。你知道在TagLib#中是否會支持Lyrics3標籤嗎?最近的正式版2.1.0於2年前發佈,AFAIK。 – PeterCo 2014-11-05 22:20:20

+1

可能不是。該項目似乎只能維護(最好),如果它是活動的,Lyrics3標籤仍然非常模糊,並且不符合其他標籤方案。 TagLib#通過[SynchronizedLyricsFrame]支持ID3v2.3同步歌詞幀(https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs)。不知道其他地方有多寬泛的支持。 – 2014-11-05 22:30:48

+0

如果有人對解決方案感興趣,那麼請看這個答案:http://stackoverflow.com/questions/36963163/is-it-possible-using-taglibsharp-to-remove-a-lyrics3v2-tag-from-a- MP3文件/ 37068114#37068114 – ElektroStudios 2016-05-06 08:52:29

相關問題