如何在C#中播放mp3文件?我正在尝试使用本指南在C#中播放MP3文件:http://www.crowsprogramming.com/archives/58我列出了所有内容,但我仍然无法在我的C#程序中播放任何音乐。谁能告诉我我做错了什么?staticvoidMain(string[]args){WMPLib.WindowsMediaPlayera=newWMPLib.WindowsMediaPlayer();a.URL="歌曲.mp3";a.controls.play();}音乐文件“Song”位于bin文件夹中间。我没有使用WindowsMediaPlayerCOM对象,但这里有一个替代方法的链接。(我不是作者。)它使用pinvoke调用winmm.dll来播放MP3。我在WindowsServer2008上对其进行了测试,它运行良好。这是一个使用链接代码的示例类。使用System.Runtime.InteropServices;公共类MP3Player{私有字符串_command;私人布尔是开放的;[DllImport("winmm.dll")]privatestaticexternlongmciSendString(stringstrCommand,StringBuilderstrReturn,intiReturnLength,IntPtrhwndCallback);publicvoidClose(){_command="closeMediaFile";mciSendString(_command,null,0,IntPtr.Zero);isOpen=false;}publicvoidOpen(stringsFileName){_command="open""+sFileName+""typempegvideoaliasMediaFile";mciSendString(_command,null,0,IntPtr.Zero);打开=真;}publicvoidPlay(boolloop){if(isOpen){_command="playMediaFile";如果(循环)_command+=“重复”;mciSendString(_command,null,0,IntPtr.Zero);您需要做的就是添加对WindowMediaPlayerCOM组件的引用。您需要添加对文件wmp.dll的引用,您可以在System32目录中找到该文件。我不确定它是否仍然相关,但是当我尝试它时,它仅在代码未在主线程中运行时才起作用,即this.InvokeRequired==false所以,我建议您尝试类似的方法:ThreadPool.QueueUserWorkItem(delegate(objectparam){WMPLib.WindowsMediaPlayerplayer=newWMPLib.WindowsMediaPlayer();player.URL="song.mp3";});不需要player.controls.play()因为播放器设置为自动播放。我不确定为什么主线程无法正常播放,但我希望这会有所帮助。您可以尝试从“主”事件中删除您的代码并将其放入“form_load”或“button_click”或类似的东西中。因为它看起来应该有效。也像RobertSeder建议的那样,您可以尝试将整个路径写入mp3文件。我会尝试以下几件事:1)完全限定.mp3文件的路径,以防万一。2)试试a.Ctlcontrols.play();反而。此外,我几乎可以肯定您正在尝试加载Windows(ActiveX控件)。它可能需要Windows上下文才能加载和工作。我确信还有另一种播放.mp3的方法,因为我以前用过它,但我找不到代码。它可能是DirectXSDK的一部分。希望有所帮助。简单的方法需要以下代码:1.在第一行添加System.Runtime.InteropServices命名空间。2.在类级别创建:staticclassProgram{[DllImport("winmm.dll")]privatestaticexternlongmciSendString(stringstrCommand,StringBuilderstrReturn,intiReturnLength,IntPtrhwndCallback);//somecode}3.在main方法中添加属性:[STAThread]staticvoidMain(string[]args){//somecode}然后创建player方法,so:publicvoidplayer(){mciSendString("open""+"mp3文件路径"+""类型mpegvideo别名MediaFile",null,0,IntPtr.Zero);mciSendString("播放MediaFile",null,0,IntPtr.Zero);我有同样的问题,我通过让播放器静态来解决它,例如:以上是C#学习教程:Howtoplaymp3filesinC#?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicclassMiClass(){staticWMPLib.WindowsMediaPlayerwplayer;privatevoidPlayMusic(){wplayer=newWMPLib.WindowsMediaPlayer();wplayer.URL="c:shoryuken.mp3";wplayer.controls.play();}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
