Taglib не сохраняет полные теги

Я использую taglib# для ввода названия mp3 и имен исполнителей в виде метаданных, проанализированных из имен файлов. Для этого я, по сути, перебираю список имен файлов, анализирую имена, создаю файл taglib, изменяю теги, затем сохраняю и уничтожаю файл taglib. Как ни странно, в моих обстоятельствах я заметил, что существует максимальная длина строк, которые теги могут принимать в качестве входных данных после успешного изменения первого файла.

Вот небольшой пример, который я использую сейчас.

foreach (string path in files)
{
    using (TagLib.File f = TagLib.File.Create(path))
    {
        f.Tag.Title = "000000000011111111112222222222333333333344444444445555555555"
        f.Save();
    }
}

На выходе первый затронутый файл имеет правильное поле заголовка:

000000000011111111112222222222333333333344444444445555555555

Но каждый файл после него имеет только часть:

000000000011111111112222222222

Вы можете увидеть это в проводнике:

Каждое поле заголовка после первого обрезается.

Результаты одинаковы независимо от того, какое поле было изменено. Кроме того, явный вызов Dispose() для файла taglib ничего не меняет. Почему это могло быть?


person nicholaschiasson    schedule 30.12.2015    source источник
comment
Название, альбом и исполнитель имеют ограничение в 30 символов в старом формате тега и 60 в новом. Возможно, файлы имеют разные версии тегов   -  person Ňɏssa Pøngjǣrdenlarp    schedule 30.12.2015


Ответы (1)


Кажется, я всегда задаю вопрос именно тогда, когда нахожусь на грани поиска ответа. Я немного покопался и обнаружил, что этот ответ также решает мою проблему. Короче говоря, убедитесь, что используется правильная версия Id3.

Кроме того, я обнаружил, что это также решило другую проблему, связанную с преобразованием юникода в вопросительные знаки на выходе. Приятный бонус!

person nicholaschiasson    schedule 30.12.2015