如何在C#中创建媒体播放器列表并实现随机播放
实现C#歌曲连续随机播放的完整方案
作为C#新手,别担心,咱们一步步来搞定这个需求!你现在已经能播放单首歌曲了,接下来只需要扩展几个关键部分:获取歌曲列表、实现随机选曲,还有自动连续播放。
第一步:获取指定文件夹的所有歌曲文件
首先,我们需要把目标文件夹里的所有WAV歌曲都收集到一个列表里。可以用Directory.GetFiles方法来批量获取符合格式的文件路径:
using System; using System.Collections.Generic; using System.IO; using System.Media; class MusicPlayer { // 存储所有歌曲路径的列表 private List<string> _songList = new List<string>(); // 随机数生成器,用来实现随机选曲 private Random _random = new Random(); private SoundPlayer _player = new SoundPlayer(); public MusicPlayer(string songFolderPath) { // 获取文件夹里所有.wav文件,支持大小写不敏感匹配 string[] songFiles = Directory.GetFiles(songFolderPath, "*.wav", SearchOption.TopDirectoryOnly); _songList.AddRange(songFiles); // 如果没找到歌曲,提前给个提示 if (_songList.Count == 0) { Console.WriteLine("指定文件夹里没有找到WAV格式的歌曲哦!"); } } }
第二步:实现随机播放与连续播放逻辑
接下来要处理核心的播放逻辑:每次随机选一首歌曲,播放完成后自动触发下一首的播放。这里可以利用SoundPlayer的PlayCompleted事件来实现自动续播:
在上面的MusicPlayer类里添加这些方法和事件绑定:
public void StartRandomPlayback() { if (_songList.Count == 0) return; // 绑定播放完成事件,播完一首自动切下一首 _player.PlayCompleted += Player_PlayCompleted; // 启动第一首随机歌曲的播放 PlayRandomSong(); } private void Player_PlayCompleted(object sender, EventArgs e) { // 当前歌曲播放结束,继续播放下一首随机曲 PlayRandomSong(); } private void PlayRandomSong() { if (_songList.Count == 0) return; // 随机生成一个列表索引 int randomIndex = _random.Next(_songList.Count); string selectedSong = _songList[randomIndex]; Console.WriteLine($"正在播放:{Path.GetFileName(selectedSong)}"); // 设置播放路径并启动播放 _player.SoundLocation = selectedSong; _player.Load(); _player.Play(); // 用Play()是异步播放,不会卡住主线程 }
第三步:调用播放器开始播放
最后在主程序里实例化这个播放器,传入你的歌曲文件夹路径就能用了:
class Program { static void Main(string[] args) { // 替换成你的实际歌曲文件夹路径 string songFolder = @"C:\stuff"; MusicPlayer player = new MusicPlayer(songFolder); player.StartRandomPlayback(); // 让程序保持运行,按任意键停止播放 Console.WriteLine("按任意键停止播放..."); Console.ReadKey(); } }
几个实用小建议
- 如果不想短时间内重复播放同一首歌,可以维护一个“最近播放列表”,随机选曲时跳过这些歌曲
SoundPlayer只支持WAV格式,如果后续要播放MP3等其他格式,推荐用NAudio这类第三方库(新手先把WAV的逻辑吃透就好)- 记得在项目里引用
System.IO和System.Media这两个命名空间哦
内容的提问来源于stack exchange,提问作者Aksel Schlodder
相关产品推荐
相关产品推荐

