隐藏

C#播放音乐的几种方式

发布:2024/2/18 18:19:42作者:管理员 来源:本站 浏览次数:419

好久没用都要忘记了,记录下,温故而知新。




1. 播放系统事件声音


System.Media.SystemSounds.Asterisk.Play();


System.Media.SystemSounds.Beep.Play();


System.Media.SystemSounds.Exclamation.Play();


System.Media.SystemSounds.Hand.Play();




2 使用System.Media.SoundPlayer播放.wav音乐文件


播放WAV格式的声音

常用属性

IsLoadCompleted 声音资源是否加载完成

LoadTimeout 加载声音资源的最大允许时间(毫秒)

SoundLocation 声音资源的位置

Stream 声音资源的字节流(可以指定声音资源的位置,也可以指定已经加载的字节流)

常用方法


Dispose() 释放声音资源并销毁对象

Load() 加载声音资源

Play() 在新线程播放一次,如果声音资源未加载,则首先加载

PlayLooping() 在新线程循环播放,如果声音资源未加载,则首先加载


Stop() 停止播放

常用事件


Disposed 声音资源被释放后触发

LoadCompleted 声音资源加载完成或失败后触发

SoundLocationChanged 声音资源的位置改变后触发

StreamChanged 声音资源的字节流改变后触发


System.Media.SoundPlayer sp = new SoundPlayer();

sp.SoundLocation = @"D:/ms.wav";

sp.PlayLooping();




3.使用MCI Command String多媒体设备程序接口播放mp3,avi等

复制代码


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;


namespace MyWenxinTool

{

   public class musicplay

   {


       public static uint SND_ASYNC = 0x0001;

       public static uint SND_FILENAME = 0x00020000;

       [DllImport("winmm.dll")]

       public static extern uint mciSendString(string lpstrCommand, string lpstrReturnString, uint uReturnLength, uint hWndCallback);


       public static void PlayNmusinc(string path)

       {

           mciSendString(@"close temp_alias", null, 0, 0);

           mciSendString(@"open """+path+@""" alias temp_alias", null, 0, 0);

           mciSendString("play temp_alias repeat", null, 0, 0);

       }


       /// <summary>

       /// 播放音乐文件(重复)

       /// </summary>

       /// <param name="p_FileName">音乐文件名称</param>

       public static void PlayMusic_Repeat(string p_FileName)

       {

           try

           {

               mciSendString(@"close temp_music", " ", 0, 0);

               mciSendString(@"open " + p_FileName + " alias temp_music", " ", 0, 0);

               mciSendString(@"play temp_music repeat", " ", 0, 0);

           }

           catch

           { }

       }


       /// <summary>

       /// 播放音乐文件

       /// </summary>

       /// <param name="p_FileName">音乐文件名称</param>

       public static void PlayMusic(string p_FileName)

       {

           try

           {

               mciSendString(@"close temp_music", " ", 0, 0);

               //mciSendString(@"open " + p_FileName + " alias temp_music", " ", 0, 0);

               mciSendString(@"open """ + p_FileName + @""" alias temp_music", null, 0, 0);

               mciSendString(@"play temp_music", " ", 0, 0);

           }

           catch

           { }

       }


       /// <summary>

       /// 停止当前音乐播放

       /// </summary>

       /// <param name="p_FileName">音乐文件名称</param>

       public static void StopMusic(string p_FileName)

       {

           try

           {

               mciSendString(@"close " + p_FileName, " ", 0, 0);

           }

           catch { }

       }


   }


}