2014-11-14 7 views
0

Мне нужно программно изменить свойство Title из нескольких сотен WMA-файлов, которые у меня есть.C# - Изменять расширенные свойства WMA программно (возможно, с помощью NAudio)

Я уже стучал головой о стену, пытаясь справиться с этим некоторое время. Есть несколько библиотек, которые утверждают, что способны справиться с этим, но документация крайне бедна. Я загрузил NAudio и подозреваю, что есть способ обработки того, что мне нужно, но опять же документация крайне неадекватна задаче.

Кто-нибудь знает, как изменить расширенные свойства существующего файла WMA?

+0

Попробуйте опубликовать код, который вы пробовали, и не работает, и люди с большей вероятностью помогут. – Zipper

+0

Мне бы хотелось опубликовать код, который я пробовал, но я не могу найти нигде библиотеки, которые дают достаточно информации, чтобы я мог использовать любой код. Я нашел несколько ссылок на людей, которые могут читать значения, но ничего, что позволяет записывать значения. – Matt

ответ

0

Я нашел проект на sourceforge, который дал мне возможность изменить свойство title по мере необходимости.

Проект находится здесь: http://professionaltag.sourceforge.net/

Исходный код примера является решение с несколькими проектами. Для меня я не использовал пользовательский интерфейс, предоставленный автором, и перевернул его вокруг соответствующих классов. То, что мне было нужно, было в проекте «Тег», в частности в классе Tags.ASF.ASFTagInfo. Класс может использоваться либо как есть, либо расчленен, если необходимо. Я использовал его без изменений.

Предлагаю ниже метод, который я использую для изменения информации о дорожке. Для моих целей я хочу изменить имя трека, если последние 2 символа имени файла являются цифрами, но концепция одинакова для любых изменений, которые вы хотите сделать.

private void ModifyTrackInfo(string PathToWMA) 
    { 
     // "Last()" is an extension method on string defined elsewhere in project 
     //  it simply get the to get the specified number of trailing characters of a string 
     string last2String = System.IO.Path.GetFileNameWithoutExtension(PathToWMA).Last(2); 

     int last2Int; 
     if (int.TryParse(last2String, out last2Int)) 
     { 
      Tags.ASF.ASFTagInfo tagInfo = new Tags.ASF.ASFTagInfo(PathToWMA, true);     
      tagInfo.ContentDescription.Title = string.Format("Track {0}", last2String);     
      tagInfo.Save(); 
     }    
    }