求c#播放mp3文件的方法

求代码,最好有注释!好的话还可以再加分的哦!请高手赐教,在线等!... 求代码,最好有注释!好的话还可以再加分的哦!
请高手赐教,在线等!
展开
 我来答 举报
21d801
2012-06-29 · TA获得超过660个赞
知道小有建树答主
回答量:830
采纳率:100%
帮助的人:933万
展开全部
1 调用directsound来进行播放
usingSystem;
usingSystem.Runtime.InteropServices;
usingSystem.Text;
usingSystem.IO;
namespaceclsMCIPlay
{
 ///<summary>
 ///clsMci的摘要说明。
 ///</summary>
 publicclassclsMCI
 {
  publicclsMCI()
  {
   //
   //TODO:在此处添加构造函数逻辑
   //
  }

  //定义API函数使用的字符串变量
  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]
  privatestringName="";
  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
  privatestringdurLength="";
  [MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]
  privatestringTemStr="";
  intilong;
  //定义播放状态枚举变量
  publicenumState
  {
   mPlaying=1,
   mPuase=2,
   mStop=3
  };
  //结构变量
  publicstructstructMCI
  {
   publicboolbMut;
   publicintiDur;
   publicintiPos;
   publicintiVol;
   publicintiBal;
   publicstringiName;
   publicStatestate;
  };

  publicstructMCImc=newstructMCI();

  //取得播放文件属性
  publicstringFileName
  {
   get
   {
    returnmc.iName;
   }
   set
   {
    //ASCIIEncodingasc=newASCIIEncoding();
    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)+"aliasmedia";
     Name="open"+Convert.ToChar(34)+Name+Convert.ToChar(34)+"aliasmedia";
     ilong=APIClass.mciSendString("closeall",TemStr,TemStr.Length,0);
     ilong=APIClass.mciSendString(Name,TemStr,TemStr.Length,0);
     ilong=APIClass.mciSendString("setmediatimeformatmilliseconds",TemStr,TemStr.Length,0);
     mc.state=State.mStop;
    }
    catch
    {
     MessageBox.Show("出错错误!");
    }
   }
  }
  //播放
  publicvoidplay()
  {
   TemStr="";
   TemStr=TemStr.PadLeft(127,Convert.ToChar(""));
   APIClass.mciSendString("playmedia",TemStr,TemStr.Length,0);
   mc.state=State.mPlaying;
  }
  //停止
  publicvoidStopT()
  {
   TemStr="";
   TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
   ilong=APIClass.mciSendString("closemedia",TemStr,128,0);
   ilong=APIClass.mciSendString("closeall",TemStr,128,0);
   mc.state=State.mStop;
  }

  publicvoidPuase()
  {
   TemStr="";
   TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
   ilong=APIClass.mciSendString("pausemedia",TemStr,TemStr.Length,0);
   mc.state=State.mPuase;
  }
  privatestringGetCurrPath(stringname)
  {
   if(name.Length<1)return"";
   name=name.Trim();
   name=name.Substring(0,name.Length-1);
   returnname;
  }
  //总时间
  publicintDuration
  {
   get
   {
    durLength="";
    durLength=durLength.PadLeft(128,Convert.ToChar(""));
    APIClass.mciSendString("statusmedialength",durLength,durLength.Length,0);
    durLength=durLength.Trim();
    if(durLength=="")return0;
    return(int)(Convert.ToDouble(durLength)/<chmetcnv
w:st="on" unitname="F" sourcevalue="1000" hasspace="False"
negative="False" numbertype="1" tcsc="0">1000f</chmetcnv>);
   }
  }

  //当前时间
  publicintCurrentPosition
  {
   get
   {
    durLength="";
    durLength=durLength.PadLeft(128,Convert.ToChar(""));
    APIClass.mciSendString("statusmediaposition",durLength,durLength.Length,0);
    mc.iPos=(int)(Convert.ToDouble(durLength)/<chmetcnv
w:st="on" unitname="F" sourcevalue="1000" hasspace="False"
negative="False" numbertype="1" tcsc="0">1000f</chmetcnv>);
    returnmc.iPos;
   }
  }
 }

 publicclassAPIClass
 {
  [DllImport("kernel32.dll",CharSet=CharSet.Auto)]
  publicstaticexternintGetShortPathName(
   stringlpszLongPath,
   stringshortFile,
   intcchBuffer
  );

  [DllImport("winmm.dll",EntryPoint="mciSendString",CharSet=CharSet.Auto)]
  publicstaticexternintmciSendString(
   stringlpstrCommand,
   stringlpstrReturnString,
   intuReturnLength,
   inthwndCallback
  );
 }
}
2 使用API函数mciSendString进行操作
http://wenku.baidu.com/view/e4552353ad02de80d4d84026.html
去吧死去
推荐于2016-01-04 · 超过20用户采纳过TA的回答
知道答主
回答量:121
采纳率:100%
帮助的人:52.7万
展开全部
点击工具--选择工具箱--com组件---然后选择WindowMediaPlayer组件最后拖放到窗体上,
WindowMediaPlayer有个URL属性,你可以将mp3文件的地址交给它,然后就可以播放了。
更多追问追答
追问
我想要的不是拖个控件就OK的,我想要的是自己写的方法···
追答
有能耐,那你自己写个个关于读取二进制文件的解码器
本回答被提问者采纳
5 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
118218157
2012-06-29 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:31.3万
展开全部
不是在Media命名空间里有一个好像叫SoundPlayer的吗
追问
这个东东不能播放mp3类型的
2 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式