如何使用WMPLib实现背景音乐播放结束后自动循环
WMPLib实现背景音乐自动循环播放方案
你可以根据实际需求选择以下两种实现方式:
- 方案一:开启内置循环模式(推荐,代码最简洁)
WMP原生自带单曲循环配置,不需要额外编写事件监听逻辑,只需要在启动播放前开启循环开关即可,修改后的完整代码如下:
WindowsMediaPlayer musicPlayer = new WindowsMediaPlayer(); // 开启播放器内置循环播放规则 musicPlayer.settings.setMode("loop", true); musicPlayer.URL = "themeSong.mp3"; musicPlayer.controls.play();
setMode方法接收两个参数,第一个传入"loop"表示要修改循环相关配置,第二个参数传true即为开启循环,歌曲播放到末尾后会自动回到开头重新播放,全程由播放器内核处理逻辑,没有额外性能开销。
- 方案二:监听播放状态手动重播(适合需要自定义扩展的场景)
如果你需要在每次歌曲播放结束时插入自定义逻辑(比如插播音效、统计播放次数、判断是否切歌),可以通过监听播放状态变更事件,在检测到播放结束时手动触发重播:
WindowsMediaPlayer musicPlayer = new WindowsMediaPlayer(); musicPlayer.URL = "themeSong.mp3"; // 绑定播放状态变化事件 musicPlayer.PlayStateChange += newState => { // WMPPlayState.wmppsMediaEnded 对应枚举值为8,代表当前媒体已播放到末尾 if (newState == (int)WMPPlayState.wmppsMediaEnded) { // 将播放进度重置到音频起始位置 musicPlayer.controls.currentPosition = 0; // 重新触发播放 musicPlayer.controls.play(); } }; musicPlayer.controls.play();
如果你的项目中没有引入WMPPlayState枚举的相关引用,直接把判断条件改成if (newState == 8)也可以正常生效。
注意:两种方案都需要确保你传入的
themeSong.mp3路径正确、文件未损坏,能被播放器正常加载,否则会因为媒体加载失败无法触发循环逻辑。
内容的提问来源于stack exchange,提问作者MajorAnonymous
相关产品推荐
相关产品推荐

