第一种:使用C#自带的SoundPlayer

view plain copy to clipboard print ?

  1. using System.Media;   
  2.   
  3.   
  4. SoundPlayer sound = new SoundPlayer(“声音.wav”);   
  5. sound.Play();  

using System.Media; SoundPlayer sound = new SoundPlayer(“声音.wav”); sound.Play();

优点:简单方便

缺点:只支持PCM格式的WAV文件,即使使用线程也不能同时播放多个。

第二种:

在VS的工具箱上右键-〉添加项,然后找到Microsoft Window Media并添加

使用控件的方式进行播放,此种方式也比较简单,完全可视化操作

第三种:

使用DirectX方式:

下载Microsoft.DirectX.DLL和MicroSoft.DirectX.DirectSound.DLL两个文件,

并在项目上添加这两个DLL引用.

view plain copy to clipboard print ?

  1. using Microsoft.DirectX;   
  2. using Microsoft.DirectX.DirectSound;   
  3.   
  4. //创建设备   
  5. Device dv = new Device();   
  6. //设置优先级别   
  7. dv.SetCooperativeLevel(this, CooperativeLevel.Priority);   
  8. //开辟二级缓冲区   
  9. SecondaryBuffer buf = new SecondaryBuffer(“声音.wav”, dv);   
  10. //开始播放   
  11. buf.Play(0, BufferPlayFlags.Default);  

using Microsoft.DirectX; using Microsoft.DirectX.DirectSound; //创建设备 Device dv = new Device(); //设置优先级别 dv.SetCooperativeLevel(this, CooperativeLevel.Priority); //开辟二级缓冲区 SecondaryBuffer buf = new SecondaryBuffer(“声音.wav”, dv); //开始播放 buf.Play(0, BufferPlayFlags.Default);

这种方式只支持WAV格式的音频,不过可以同时播放多个文件

第四种:使用C#的MP3播放类,调用API函数进行播放

我把网上的MP3播放类功能简化了一下。

view plain copy to clipboard print ?

  1. using System.Runtime.InteropServices;   
  2.   
  3. namespace 使用API播放音乐   
  4. {   
  5.     public class MP3Player   
  6.     {   
  7.         /// <summary>   
  8.         /// 文件地址   
  9.         /// </summary>   
  10.         public string FilePath;   
  11.   
  12.         /// <summary>   
  13.         /// 播放   
  14.         /// </summary>   
  15.         public void Play()   
  16.         {   
  17.             mciSendString(“close all”, “”, 0, 0);   
  18.             mciSendString(“open ” + FilePath + ” alias media”, “”,0, 0);   
  19.             mciSendString(“play media”, “”, 0, 0);   
  20.         }   
  21.   
  22.         /// <summary>   
  23.         /// 暂停   
  24.         /// </summary>   
  25.         public void Pause()   
  26.         {   
  27.             mciSendString(“pause media”, “”, 0, 0);   
  28.         }   
  29.   
  30.         /// <summary>   
  31.         /// 停止   
  32.         /// </summary>   
  33.         public void Stop()   
  34.         {   
  35.             mciSendString(“close media”, “”, 0, 0);   
  36.         }   
  37.   
  38.         /// <summary>   
  39.         /// API函数   
  40.         /// </summary>   
  41.         [DllImport(“winmm.dll”, EntryPoint = “mciSendString”, CharSet = CharSet.Auto)]   
  42.         private static extern int mciSendString(   
  43.          string lpstrCommand,   
  44.          string lpstrReturnString,   
  45.          int uReturnLength,   
  46.          int hwndCallback   
  47.         );   
  48.     }   
  49. }  

using System.Runtime.InteropServices; namespace 使用API播放音乐 { public class MP3Player { /// <summary> /// 文件地址 /// </summary> public string FilePath; /// <summary> /// 播放 /// </summary> public void Play() { mciSendString(“close all”, “”, 0, 0); mciSendString(“open ” + FilePath + ” alias media”, “”,0, 0); mciSendString(“play media”, “”, 0, 0); } /// <summary> /// 暂停 /// </summary> public void Pause() { mciSendString(“pause media”, “”, 0, 0); } /// <summary> /// 停止 /// </summary> public void Stop() { mciSendString(“close media”, “”, 0, 0); } /// <summary> /// API函数 /// </summary> [DllImport(“winmm.dll”, EntryPoint = “mciSendString”, CharSet = CharSet.Auto)] private static extern int mciSendString( string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback ); } }

优点:多文件同时播放,速度快。支持MP3/WAV等格式

调用代码:

view plain copy to clipboard print ?

  1. MP3Player mp3 = new MP3Player();   
  2. //设置要播放的文件   
  3. mp3.FilePath = “声音.mp3”;   
  4. //播放   
  5. mp3.Play();   
  6. //暂停   
  7. mp3.Pause();   
  8. //停止   
  9. mp3.Stop();  

原文:https://blog.csdn.net/shen_yin/article/details/78091246

作者 申佳明

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code