如何在C#中播放mp3文件?

Waf*_*les 13 c# mp3

我正在尝试使用本指南在C#中播放MP3文件:http: //www.crowsprogramming.com/archives/58

我正在列出所有内容,但我仍然无法在我的C#程序中播放任何音乐.谁能告诉我我做错了什么?

 static void Main(string[] args)
    {
        WMPLib.WindowsMediaPlayer a = new WMPLib.WindowsMediaPlayer();
        a.URL = "song.mp3";
        a.controls.play();
    }
Run Code Online (Sandbox Code Playgroud)

音乐文件"Song"位于bin文件夹中.

Joe*_*yle 10

我没有使用Windows Media Player COM对象,但这里是一个替代方法的链接.(我不是作者.)它使用pinvoke调用winmm.dll来播放MP3.我在Windows Server 2008上测试了它,它运行得很好.

这是一个使用链接代码的示例类.

using System.Runtime.InteropServices;

public class MP3Player
{
      private string _command;
      private bool isOpen;
      [DllImport("winmm.dll")]

      private static extern long mciSendString(string strCommand,StringBuilder strReturn,int iReturnLength, IntPtr hwndCallback);

      public void Close()
      {
         _command = "close MediaFile";
         mciSendString(_command, null, 0, IntPtr.Zero);
         isOpen = false;
      }

      public void Open(string sFileName)
      {
         _command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
         mciSendString(_command, null, 0, IntPtr.Zero);
         isOpen = true;
      }

      public void Play(bool loop)
      {
         if(isOpen)
         {
            _command = "play MediaFile";
            if (loop)
             _command += " REPEAT";
            mciSendString(_command, null, 0, IntPtr.Zero);
         }
      }
}
Run Code Online (Sandbox Code Playgroud)


小智 8

您需要做的就是添加对Window Media Player COM组件的引用.您需要添加对文件wmp.dll的引用,您可以在System32目录中找到该文件.


Rob*_*der 0

我会尝试以下几件事:

1) 完全限定该 .mp3 文件的路径,以防万一。2)尝试a.Ctlcontrols.play(); 反而。

另外,我几乎可以肯定您正在尝试加载一个 Windows(ActiveX 控件)。它可能需要 Windows 上下文才能加载和工作。我确信还有另一种播放 .mp3 的方法,因为我以前用过它,但我找不到代码。但它可能是 DirectX SDK 的一部分。希望有帮助。