Windows phone 8.1 如何在Windows Phone 8.1中读取音乐文件的完整元数据

Windows phone 8.1 如何在Windows Phone 8.1中读取音乐文件的完整元数据,windows-phone-8.1,Windows Phone 8.1,我正在尝试读取Windows Phone 8.1中音乐文件的所有可用元数据。我只能获得音乐文件的名称、路径和创建日期 我无法获取元数据,如专辑、艺术家、专辑艺术家、年份、出版商、作曲家、流派、持续时间、曲目编号、比特率、标题、评级等 我尝试了本文给出的解决方案。但它没有产生任何结果 有人知道如何做到这一点吗 public class MusicFiles { public string fileName { get; set; } public s

我正在尝试读取Windows Phone 8.1中音乐文件的所有可用元数据。我只能获得音乐文件的名称、路径和创建日期

我无法获取元数据,如专辑、艺术家、专辑艺术家、年份、出版商、作曲家、流派、持续时间、曲目编号、比特率、标题、评级等

我尝试了本文给出的解决方案。但它没有产生任何结果

有人知道如何做到这一点吗

    public class MusicFiles
    {
        public string fileName { get; set; }
        public string filePath { get; set; }
        public string dateCreated { get; set; }
    }

 IReadOnlyList<IStorageItem> fileList = await mFolder.GetItemsAsync();

 foreach(IStorageItem mItem in fileList)
               {
                   IStorageItem item = mItem;
           if(item.IsOfType(Windows.Storage.StorageItemTypes.File))
                       {
                           // create object of MusicAlbums() class.
                           MusicFiles musicAlbumObj = new MusicFiles();

                           // set name of item Folder.
                           musicAlbumObj.fileName = item.Name;

                           // set path of item Folder.
                           musicAlbumObj.filePath = item.Path;

                           // get item Folder's created date & Time.
                           musicAlbumObj.dateCreated = item.DateCreated.ToString();

                           string showText = "";
                           showText = musicAlbumObj.fileName + " *** " + musicAlbumObj.filePath + " *** " + musicAlbumObj.dateCreated;
                           MessageDialog msg = new MessageDialog(showText);
                           await msg.ShowAsync(); 

                       }
        }
公共类音乐文件
{
公共字符串文件名{get;set;}
公共字符串文件路径{get;set;}
公共字符串dateCreated{get;set;}
}
IReadOnlyList fileList=wait mFolder.GetItemsAsync();
foreach(文件列表中的IStorageItem mItem)
{
IStorageItem=mItem;
if(item.IsOfType(Windows.Storage.StorageItemTypes.File))
{
//创建MusicAlbums()类的对象。
MusicFiles musicAlbumObj=新的MusicFiles();
//设置项目文件夹的名称。
musicAlbumObj.fileName=item.Name;
//设置项目文件夹的路径。
musicAlbumObj.filePath=item.Path;
//获取项目文件夹的创建日期和时间。
musicAlbumObj.dateCreated=item.dateCreated.ToString();
字符串showText=“”;
showText=musicAlbumObj.fileName+“***”+musicAlbumObj.filePath+“***”+musicAlbumObj.dateCreated;
MessageDialog msg=新建MessageDialog(showText);
等待msg.ShowAsync();
}
}
我用于我的项目。 您可以这样使用它:

                using (var fs = await (item as StorageFile).OpenStreamForReadAsync())
                {
                    try
                    {
                        var tagFile = TagLib.File.Create(new StreamFileAbstraction(item.Name, fs, fs));
                        var tag = tagFile.GetTag(TagTypes.Id3v2);
                        if(tag.IsEmpty)
                        {
                            throw new ArgumentNullException(String.Format("No tag info found for {0}", item.Path));
                        }
                        var artistName = tag.FirstArtist;
                        var artist = CreateArtist(artistName);

                        var albumName = tag.Album;
                        var album = CreateAlbum(albumName, artist);

                        var trackTitle = tag.Title;
                        var track = CreateTrack(trackTitle, artist, album, item as StorageFile);
                    }
                    catch (Exception e)
                    {
                        var info = e.Message;
                        Debug.WriteLine(String.Format("Could not add the following file: {0}. Error: {1}.", item.Name, info));
                    }
                }

好啊让我试试。如果需要,我会在这里给你贴标签。谢谢兄弟@本杰明Diele@WD这解决了你的问题吗?那么请把它标为答案。谢谢!欢迎来到StackOverbox。您应该注意正确格式化代码。此外,简单解释一下你的代码可以帮助OP理解你的答案。
foreach (var file in lstMusicFile)
{
    MusicProperties msProp = await file.Properties.GetMusicPropertiesAsync();
    DocumentProperties msDoc = await file.Properties.GetDocumentPropertiesAsync();
    MsMetadata msm = new MsMetadata();
    msm.Title = msProp.Title.Trim().Equals("") ? msProp.Subtitle : msProp.Title;
    msm.Artist = msProp.Artist.Trim().Equals("") ? "Unknown" : msProp.Artist;
    msm.Album = msProp.Album.Trim().Equals("") ? "Unknown" : msProp.Album;
    msm.Author = msDoc.Author.ElementAt(0).Trim().Equals("") ? "Unknown" : msDoc.Author.ElementAt(0);
    msm.Comment = msDoc.Comment.Trim().Equals("") ? "The Lyrics of this song will be update early !" : msDoc.Comment;
    msm.Source = file.Path;

    // Do something with msm                   
}