C#UWP:帮助创建应用程序:用户上传要从列表中存储和播放的MP3文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#UWP:帮助创建应用程序:用户上传要从列表中存储和播放的MP3文件相关的知识,希望对你有一定的参考价值。

我目前正在使用可模仿音乐库的C#和XAML在visual studio中创建一个UWP应用程序。

该应用程序将允许用户在一个页面上上传MP3文件,然后用户将能够点击到另一个页面,从按标题,艺术家和专辑名称组织的列表中播放此音乐。因此,我需要参考MP3文件的元数据,以便能够将歌曲放入各自标题,艺术家姓名和专辑名称下的列表中。

任何人都可以帮我提供如何存储用户上传的音乐的帮助吗?另外如何引用MP3文件中的元数据将标题,专辑名称和艺术家绑定到列表的标题?

如果已经在stackoverflow的先前问题中解决了这个问题,请道歉。我搜索了几次搜索,但没有找到任何适用的搜索。

谢谢!

答案

好的,所以看起来你在这里问的不仅仅是一个问题,所以我会尽力解决每一个问题。

1-该应用程序需要能够访问MP3文件。如果您使用OpenFilePicker将文件“上传”到应用程序,那么应用程序可以保留对StorageFile的引用,只要应用程序处于打开状态,该引用就会有效。如果您希望允许您的应用在关闭并再次打开后访问相同的文件,那么您需要查看使用FutureAccessList但要小心,因为此列表最多限制1000个项目。如果您希望您的应用需要访问超过1000个文件,那么请查看存储引用文件夹或允许该应用访问用户的MusicLibrary

2-要读取MP3文件的元数据,您需要使用与UWP平台兼容的库。为此,TagLibSharp-Portable是首选。提供的链接有一个如何从文件中读取标记的示例。

希望这能为您提供实现功能的正确途径。

另一答案

我想我在帮助朋友之前遇到过这个问题,读/写音频/视频的元数据,阅读更多有关TagLib的信息。

string fileName = @"D:PersonalMyMusicAcoustic CoversSong1.mp3";
TagLib.File file = TagLib.File.Create(fileName);
Console.WriteLine(file.Tag.Title);
Console.WriteLine(file.Tag.Album);

然后,为了将歌曲数据存储到db,应将其存储为字节。

using (FileStream fs = new FileStream(fileName, FileMode.Open))
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        byte[] data = br.ReadBytes((int)fs.Length);

        // store to db.
    }
}

我没有测试过代码,我只是在编写它时想象,但这应该可以帮助你启动你的项目。

以上是关于C#UWP:帮助创建应用程序:用户上传要从列表中存储和播放的MP3文件的主要内容,如果未能解决你的问题,请参考以下文章

获取我的应用程序有权访问c#UWP的文件夹列表

在Windows 10 C#UWP通用Windows应用程序中获取UserName

如何使用uwp中的全选复选框创建带有复选框项目的列表视图

C# UWP 无法用代码显示用户控件

需要帮助了解为啥要从我的所有列表中删除数据

c# UWP TreeView 在 ItemDrag 上自动滚动