第一种:使用C#自带的SoundPlayer
view plain copy to clipboard print ?
- using System.Media;
- SoundPlayer sound = new SoundPlayer(“声音.wav”);
- 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 ?
- 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);
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 ?
- 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
- );
- }
- }
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 ?
- MP3Player mp3 = new MP3Player();
- //设置要播放的文件
- mp3.FilePath = “声音.mp3”;
- //播放
- mp3.Play();
- //暂停
- mp3.Pause();
- //停止
- mp3.Stop();
原文:https://blog.csdn.net/shen_yin/article/details/78091246