【问题标题】:WPF and MusicPlayerWPF 和音乐播放器
【发布时间】:2009-03-25 14:47:54
【问题描述】:

我收到了创建具有特定功能的音乐播放器的请求。

此音乐播放器将以“随机”(第一次请求)从文件夹下载歌曲的方式播放音乐,还有一个请求是每 4 小时更改一次音乐的“流派”,例如:

  • 早上 8 点到 12 点:播放“浪漫”歌曲;
  • 从上午 12 点到下午 4 点:播放“拉丁”歌曲;
  • 从下午 4 点到晚上 8 点:播放“摇滚”歌曲;
  • 从晚上 8 点到午夜:播放“舞蹈”音乐;

我的目的是为每种流派创建不同的歌曲文件夹,并给出各自的标题名称(浪漫、拉丁、摇滚等),当音乐播放器启动时,将按照时间段自动下载歌曲的文件夹。

所以我问你一些关于如何组织这些功能的代码的建议,因为我不知道如何在几个小时内更改流派音乐并将音乐播放器置于随机模式。

【问题讨论】:

    标签: c# .net wpf linq


    【解决方案1】:

    这是一种方法。

    使用C# ID3 Library 或任何其他用于 MP3 文件的 ID3 标签阅读器读取播放列表或文件夹中的 MP3 文件的所有 ID3 标签。探测播放列表,读取 ID3 标签,创建一个 repo。设置计时器并从您已阅读的 repo 中选择一个流派

    【讨论】:

      【解决方案2】:

      你说你正在从一个文件夹下载歌曲,这让我相信有一个服务器正在将信息穿梭到媒体播放器。

      我会将这个逻辑放到服务器端。只需使用任何常规媒体播放器即可。

      然后,在服务器端,生成某种类型的提要,根据服务器上的一天中的时间提供要下载的歌曲的 URL(如果客户端提供,则通过偏移量进行调整)。

      然后,您的程序将读取提要并获取要播放的歌曲的网址,然后根据服务器告诉您的内容将播放列表提供给媒体播放器(或下载歌曲并将其提供给媒体播放器) .

      【讨论】:

        【解决方案3】:

        在您的应用中看起来很有用的一个概念是歌曲来源的概念。歌曲源本质上是一个提供歌曲访问权限的可枚举项。这可能首先是一个接口。

        这样你就有了一段代码提供歌曲列表的抽象概念。实际播放器将访问 ISongSource 的任何实现以获取下一首要播放的歌曲并播放它。玩的那位,恐怕我帮不了你。如果一切都失败了,您可以从您的歌曲源创建 m3u 文件(mp3 播放列表)并开始例如Winamp 通过 Process.Start,传递新创建的播放列表。事实上,这听起来像是一个简洁的版本 1。

        如果您想对所有内容进行编码,您可能需要一段代码来从 mp3 文件中读取 ID3 标签(如果您正在播放 mp3 文件)。您应该将其视为独立的功能,并且很有可能已经有一些可用的东西。 ID3 标记不是很复杂,如果我记得清楚的话,在 mp3 文件的开头有定义的字节偏移量。

        在此基础上,您应该能够实现考虑 ID3 标签的歌曲源,以确定哪些歌曲应该是源的一部分。

        最后是用户界面。那是一个独立的世界,特别是如果你有一个可剥皮的东西。但是有了一本不错的 WPF 书籍和一些概念证明,您应该可以完成一些工作。

        编码愉快!

        【讨论】:

          【解决方案4】:

          必须是全新的媒体播放器吗?根据您的要求,您可能会考虑包装 Windows Media Player 来执行此操作。这是一个很好的起点:

          (Windows Media Player) Object Model Reference for Visual Basic .NET and C#

          我已经使用 Windows Media Player SDK 来做类似的事情。它不是最直接的 API,但它只是一个 DLL,向它发送命令以让 WMP 做事相对容易。以下是各种 SDK 版本的链接(包括您需要的 wmppia.dll):

          Windows Media Downloads

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-06-19
            • 2017-04-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多