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