C#实现简单播放mp3的方法
更新时间:2015年03月27日 15:19:54 作者:青水
这篇文章主要介绍了C#实现简单播放mp3的方法,涉及C#播放多媒体文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了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#程序设计有所帮助。
相关文章
C#使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列
这篇文章介绍了C#使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-09-09
最新评论