首页 > 编程 > C# > 正文

C#实现简单播放mp3的方法

2020-01-24 02:05:01
字体:
来源:转载
供稿:网友

本文实例讲述了C#实现简单播放mp3的方法。分享给大家供大家参考。具体实现方法如下:

/// <summary>/// 测试/// </summary>class TestDemo{ public void Test() {  clsMCI cm = new clsMCI();  cm.FileName = "alarm.mp3";  cm.play(); }}/// <summary>/// clsMci 的摘要说明。/// </summary>public class clsMCI{ public clsMCI() { } //定义API函数使用的字符串变量  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)] private string Name = "" ; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)] private string durLength = "" ; [MarshalAs(UnmanagedType.LPTStr,SizeConst=128)] private string TemStr =""; int ilong; //定义播放状态枚举变量 public enum State {  mPlaying = 1,  mPuase = 2,  mStop = 3 }; //结构变量 public struct structMCI  {  public bool bMut;  public int iDur;  public int iPos;  public int iVol;  public int iBal;  public string iName;  public State state; }; public structMCI mc =new structMCI() ; //取得播放文件属性 public string FileName {  get  {  return mc.iName;  }  set  {    try    {     TemStr ="";      TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));     Name = Name.PadLeft(260,Convert.ToChar(" ")) ;     mc.iName = value;      ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length);     Name = GetCurrPath(Name);     Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";     ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0);     ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0);     ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0);     mc.state = State.mStop;     }    catch    {    }  } } //播放 public void play() {  TemStr = "";  TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));  APIClass.mciSendString("play media", TemStr, TemStr.Length , 0);  mc.state = State.mPlaying ; } //停止 public void StopT() {  TemStr = "";  TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));  ilong = APIClass.mciSendString("close media", TemStr, 128, 0);  ilong = APIClass.mciSendString("close all", TemStr, 128, 0);  mc.state = State.mStop ;  } public void Puase() {  TemStr = "";  TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));  ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);  mc.state = State.mPuase ;  } private string GetCurrPath(string name) {  if(name.Length <1) return "";   name = name.Trim();  name = name.Substring(0,name.Length-1);  return name; } //总时间 public int Duration {  get  {   durLength = "";   durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;   APIClass.mciSendString("status media length", durLength, durLength.Length, 0);   durLength = durLength.Trim();   if(durLength == "") return 0;   return (int)(Convert.ToDouble(durLength) / 1000f);   } } //当前时间 public int CurrentPosition {  get  {   durLength = "";   durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;   APIClass.mciSendString("status media position", durLength, durLength.Length, 0);   mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);   return mc.iPos;  } }}public class APIClass{  [DllImport("kernel32.dll", CharSet = CharSet.Auto)]  public static extern int GetShortPathName (   string lpszLongPath,   string shortFile,   int cchBuffer);[DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]public static extern int mciSendString (   string lpstrCommand,   string lpstrReturnString,   int uReturnLength,   int hwndCallback  );}

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表