mediaplayer mp3没有工作wpf

时间:2014-02-02 05:15:32

标签: wpf mp3

我在WPF应用程序中遇到MediaPlayer类的问题 我的项目看起来像这样:

Project Structure

问题是:当我的AboutDialog初始化并出现时,它不会播放AboutDialogSound.mp3。我认为问题是Uri字符串格式,我尝试更改它但我仍然没有工作。

对不起,我不擅长英语。请帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:3)

至少,您的代码中有两个问题,关于您尝试使用MediaPlayer播放mp3文件的方式:

  1. 您已经怀疑的主要问题是该文件的路径错误。相对路径表示相对于可执行文件。在开发阶段,它位于bin\debug文件夹中。所以mp3文件的路径应该是"../../AboutDialogSound.mp3"
  2. 另一个问题是将MediaPlayer对象声明为局部变量。通过这样做,对象将在变量声明(在本例中为AboutDialog构造函数)完成的方法之后很快被垃圾收集。因此,如果您设法解决了第一个问题,您将听到播放音频文件片刻,然后突然停止,因为MediaPlayer播放了GC-ed。将其声明为全局变量而不是本地变量。
  3. 提示:要检查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();
        }
        .....
    }
    

    参考:http://www.wpf-tutorial.com/audio-video/playing-audio/

答案 1 :(得分:0)

确保资源(mp3文件)在“复制中始终”复制到属性中的“输出目录”。

player.Open(new Uri(System.Environment.CurrentDirectory + @“\Resources\filename.mp3”)); 
player.Play();