Как удалить тег Lyrics3 v2 из id3?

Я использую библиотеку taglib sharp, чтобы удалить все теги из моих песен с помощью команды

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?


person PeterCo    schedule 31.10.2014    source источник


Ответы (1)


К сожалению, TagLib # не поддерживает теги Lyrics3. В файле MP3 TagLib # обнаружит и сможет удалить только теги APE, Id3v1 и Id3v2.

После сохранения файла с тегами, удаленными TagLib #, вы можете сделать что-то вроде следующего со своим собственным кодом:

  1. Откройте файловый поток.
  2. Seek to Length - 9, прочтите 9 байтов и посмотрите, равны ли они LYRICS200 или LYRICSEND. Если нет, закройте файл.
  3. Обратный поиск 11 байт.
  4. Чтение 11 байтов и проверка соответствия LYRICSBEGIN. Если это так, обрежьте файл на этом этапе.
  5. В противном случае продолжайте поиск на 1 байт и повторение шага 4. Вероятно, откажитесь после 10 КБ или около того.

Это не самая эффективная стратегия, но я предполагаю, что количество файлов с этими тегами довольно мало, поэтому большинство из них следует прекратить после шага 2.

person Brian Nickel♦    schedule 05.11.2014
comment
Это работает. Спасибо, Брайан. Вы знаете, будет ли когда-либо поддерживаться тег Lyrics3 в TagLib #? Последняя официальная версия 2.1.0 была выпущена более двух лет назад, AFAIK. - person PeterCo; 06.11.2014
comment
Возможно нет. Похоже, что проект предназначен только для поддержки (в лучшем случае), и если бы он был активен, тег Lyrics3 все еще был бы довольно неясным и не совсем соответствовал остальной схеме тегов. TagLib # поддерживает фрейм ID3v2.3 Synchronized Lyrics через SynchronizedLyricsFrame. Не уверен, насколько широко это поддерживается в других местах. - person Brian Nickel♦; 06.11.2014
comment
Если кого-то интересует решение, см. Этот ответ: stackoverflow.com/questions/36963163/ - person ElektroStudios; 06.05.2016