C# UWP: Help Creating an app: User Upload MP3 file to be stored and played 从列表

C# UWP: Help Creating an app: User Upload MP3 file to be stored and played from a list

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

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

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

抱歉,如果这已经在之前关于 Whosebug 的问题中得到解决。我搜索了几次,但没有找到任何适用的内容。

谢谢!

我想我之前在帮助朋友时遇到过这个问题,对于 audio/video 的 reading/writing 元数据,阅读更多关于 TagLib

string fileName = @"D:\Personal\MyMusic\Acoustic Covers\Song1.mp3";
TagLib.File file = TagLib.File.Create(fileName);
Console.WriteLine(file.Tag.Title);
Console.WriteLine(file.Tag.Album);

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

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

        // store to db.
    }
}

我没有测试代码,我只是在编写代码时想象,但这应该有助于您启动项目。

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

1- 应用程序需要能够访问 MP3 文件。如果您使用 OpenFilePicker to "upload" the files to the app, then the app can keep a reference to the StorageFile which would be valid for as long as the app is open. If you want to allow your app to access the same files after it is closed and opened again, then you need to look into using FutureAccessList but be careful as this list has a limit of 1000 items max. If you expect that your app will need to access more than 1000 files, then look into storing referenced to folder instead or allowing the app to access the user's MusicLibrary

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

希望这能让您走上正确的道路来实现您的功能。