WPF和MusicPlayer

时间:2009-03-25 14:47:55

标签: c# .net wpf linq

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

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

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

我的目的是为每个流派创建不同的歌曲文件夹,并分别给出TitleName(浪漫,拉丁,摇滚等)。当开始时,音乐播放器将自动下载该时段之后的歌曲文件夹。

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

4 个答案:

答案 0 :(得分:2)

这是一种方法。

使用C# ID3 Library或任何其他ID3标签阅读器读取播放列表或文件夹中所有MP3文件的所有ID3标签,以获取MP3文件。探测播放列表,读取ID3标签,创建回购。设置计时器&从您已阅读的回购中选择一种类型

答案 1 :(得分:2)

您说您正在从文件夹下载歌曲,这让我相信有一台服务器正在向媒体播放器传递信息。

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

然后,在服务器端,生成某种类型的Feed,根据服务器上的时间来提供要下载的歌曲的URL(如果客户端提供了偏移量,则按偏移量调整)。

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

答案 2 :(得分:1)

在您的应用中看起来很有用的一个概念是Song源的概念。歌曲来源本质上是一个可枚举的项目,提供对歌曲的访问。这首先可以是一个界面。

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

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

基于此,你应该能够实现考虑ID3标签的歌曲源,以决定哪些歌曲应该是源的一部分。

最后还有UI。这是一个独立的世界,特别是如果你有一个可换肤的东西。但是,如果有一本体​​面的WPF书和一些概念证明,那么你应该完成任务。

快乐的编码!

答案 3 :(得分:1)

它必须是一个全新的媒体播放器吗?根据您的要求,您可以考虑包装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