C# 后台调用MediaPlayer播放声音文件

/ C# / 没有评论 / 1836浏览

C# 后台调用MediaPlayer播放声音文件

1、最简单的播放声音文件的方法是使用SoundPlayer,但是功能相对简单,只能播放wav格式,并且不好控制。只需引用system.media命名空间

SoundPlayer simpleSound = new SoundPlayer(@"D:\4000706806改.wav");
simpleSound.Play();

2、调用MediaPlayer类播放声音文件,可以支持多种格式,并且控制相对方便。需要添加PresentationCore、WindowsBase两个引用,并添加using System.Windows.Media(不是system.Media)

private MediaPlayer myMediaPlayer = new MediaPlayer();
public Form1()
{
    // Initialize Forms Designer generated code.
    InitializeComponent();
    playSound.Enabled = true;
    myMediaPlayer.MediaEnded += new EventHandler(MediaEnded);
}

private void button1_Click(object sender, EventArgs e)
{
    playSound.Enabled = false;
    //SoundPlayer simpleSound = new SoundPlayer(@"D:\4000706806改.wav");
    //simpleSound.Play();
    Uri testUri = new Uri(@"D:\4000706806改.wav");
    myMediaPlayer.Open(testUri);
    myMediaPlayer.Play();
}

private void MediaEnded(object sender, EventArgs e)
{
    playSound.Enabled = true;
}
  1. 升级优化代码

public static void playAll(string file)
{

    Uri testUri = new Uri(file);

    LogHelper.WriteLog("开始播放:" + DateTime.Now.Ticks);
    //线程同步对象
    AutoResetEvent m_Event = new AutoResetEvent(false);

    // 播放对象
    MediaPlayer myMediaPlayer = new MediaPlayer();
    myMediaPlayer.MediaEnded += new EventHandler(delegate (object sender, EventArgs e) {
        m_Event.Set();
    });
    myMediaPlayer.Open(testUri);
    LogHelper.WriteLog("调用函数完成:" + DateTime.Now.Ticks);
    myMediaPlayer.Play();
    LogHelper.WriteLog("等待结束:" + DateTime.Now.Ticks);
    // 等待执行完成
    m_Event.WaitOne();
}