【发布时间】:2014-02-25 18:10:16
【问题描述】:
我在 WPF 应用程序中遇到了 MediaPlayer 类的问题。
我的项目如下所示:
问题是:当我的 AboutDialog 初始化并出现时,它不播放 AboutDialogSound.mp3。我认为问题是 Uri 字符串格式,我尝试更改它但仍然没有工作。
对不起,我英语不好。请帮我解决这个问题。提前致谢。
【问题讨论】:
我在 WPF 应用程序中遇到了 MediaPlayer 类的问题。
我的项目如下所示:
问题是:当我的 AboutDialog 初始化并出现时,它不播放 AboutDialogSound.mp3。我认为问题是 Uri 字符串格式,我尝试更改它但仍然没有工作。
对不起,我英语不好。请帮我解决这个问题。提前致谢。
【问题讨论】:
确保资源(mp3 文件)在属性中复制到输出目录时“始终复制”。
player.Open(new Uri(System.Environment.CurrentDirectory + @“\Resources\filename.mp3”));
player.Play();
【讨论】:
至少,您的代码中有两个问题,关于您如何尝试使用MediaPlayer 播放 mp3 文件:
bin\debug 文件夹中。所以 mp3 文件的路径应该是"../../AboutDialogSound.mp3"。 MediaPlayer 对象声明为局部变量。通过这样做,对象将在变量声明的方法(在这种情况下为AboutDialog 构造函数)完成后不久被垃圾收集。因此,如果您设法解决了第一个问题,您将听到音频文件播放片刻,然后突然停止,因为MediaPlayer 正在播放它 GC-ed。将其声明为全局变量而不是本地变量。提示:要检查MediaPlayer 中的故障(例如由于路径错误而找不到文件),请尝试订阅MediaFailed 事件。因为MediaPlayer 没有抛出异常,而是触发MediaFailed 事件。
public partial class AboutDialog
{
private MediaPlayer player;
public AboutDialog()
{
player = new MediaPlayer();
player.MediaFailed += (o, args) =>
{
MessageBox.Show("Media Failed!!");
};
player.Open(new Uri("../../AboutDialogSound.mp3", UriKind.RelativeOrAbsolute));
player.Play();
}
.....
}
【讨论】: