.net上播放MP3

    技术2022-05-11  125

    最近在做一个监控项目的时候要求在监控的时候可以采用声音告警,如果用的是VS那么直接调用Media player好了,可惜自己用的是#Develop做为开发环境。居然不支持com组件的引用。我倒~于是参照MS API写了下面这个简单的播放类

     

    /* * Created by SharpDevelop. * User: root * Date: 2006-8-16 * Time: 15:44 *  * To change this template use Tools | Options | Coding | Edit Standard Headers. */

    using System;using System.Runtime.InteropServices;

    namespace Com.Music{ /// <summary> /// 音乐播放类 /// 参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_command_strings.asp /// </summary> public class MusicPlayer {        [DllImport("winmm.dll")]  private  static extern long mciSendString(string strCommand,  string strReturn, int iReturnLength, IntPtr hwndCallback);      public MusicPlayer()  {  }  //播放器状态  /*   *    * All devices can return the    * "not ready", "paused", "playing", and "stopped" values.    * Some devices can return the additional    * "open", "parked", "recording", and "seeking" values   *      */  public string Status  {  get{   string sCommand = "status MediaFile mode";   string  ret="";   mciSendString(sCommand, ret, 10, IntPtr.Zero);   return ret.Trim();   }  }    private void Open(string sFileName)  {    string sCommand="open /"" + sFileName + "/" type mpegvideo alias MediaFile";     //   MediaFile是选择播放文件类型    string  ret=null;   mciSendString(sCommand, ret, 0, IntPtr.Zero);                    }  //播放音乐  public void Play(string filename)           {   Open(filename);      string sCommand = "play MediaFile";   string  ret=null;         mciSendString(sCommand,ret, 0, IntPtr.Zero);        }  //停止播放音乐  public void Stop()  {     string sCommand = "stop MediaFile";   string  ret=null;   mciSendString(sCommand, ret, 0, IntPtr.Zero);  }    public void Pause()  {     string sCommand = "pause MediaFile";   string  ret=null;   mciSendString(sCommand, ret, 0, IntPtr.Zero);  }   }}

     

    播放的话只要一句就搞定MusicPlayer mp = new MusicPlayer();void Button1Click(object sender, System.EventArgs e)  {       mp.Play("H:/mp3/十七岁的雨季.mp3");     }另外拿这个测试拉下MONO 1.6 beta 还不错开来MONO也开始支持调用OS本地API了。 

     

    最新回复(0)