C# MediaPlayer仅播放一次文件问题求助
解决MediaPlayer重复点击按钮无法播放的问题
问题核心在于:WPF的MediaPlayer播放完音频后,Position会停在媒体的总时长位置,此时直接调用Play()不会触发播放操作,必须手动重置播放位置才能重新开始。
方案一:播放前重置位置(推荐)
修改你的点击事件方法,在调用Play()前将Position设为起始点:
public void playSou(object g, RoutedEventArgs e) { Button b = g as Button; MediaPlayer mp = (MediaPlayer)b.Tag; mp.Position = TimeSpan.Zero; // 重置到音频开头 mp.Play(); }
方案二:每次点击重新打开媒体(不推荐,有性能开销)
如果重置位置无效,也可以每次点击时重新打开音频文件,确保媒体处于可播放状态:
public void playSou(object g, RoutedEventArgs e) { Button b = g as Button; MediaPlayer mp = (MediaPlayer)b.Tag; mp.Open(new Uri(myFile)); // 重新打开目标文件 mp.Play(); }
额外优化(循环播放场景)
如果需要音频播放结束后自动循环,可以订阅MediaEnded事件,自动重置位置:
// 初始化MediaPlayer时绑定事件 mp.MediaEnded += (sender, args) => { var player = sender as MediaPlayer; player.Position = TimeSpan.Zero; player.Play(); };
内容的提问来源于stack exchange,提问作者Marlon Davies
相关产品推荐
相关产品推荐

