托管代码播放wav

iie 2008-12-02 08:52:53
请问怎样用托管代码播放wav文件
...全文
114 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ken_sniper 2008-12-03
  • 打赏
  • 举报
回复
没看清楚题意,呵呵,不好意思,我答错了
是是非非 2008-12-02
  • 打赏
  • 举报
回复

using System.Media;

//...........
SoundPlayer sp=new SoundPlayer(@"C:\test.wav");
sp.Play();
是是非非 2008-12-02
  • 打赏
  • 举报
回复
.NET Framework 类库
SoundPlayer.Play 方法
请参见 示例


注意:此方法在 .NET Framework 2.0 版中是新增的。

使用新线程播放 .wav 文件,如果尚未加载 .wav 文件,则先加载该文件。

命名空间:System.Media
程序集:System(在 system.dll 中)

语法
Visual Basic(声明)
Public Sub Play

Visual Basic(用法)
Dim instance As SoundPlayer

instance.Play

C#
public void Play ()

C++
public:
void Play ()

J#
public void Play ()

JScript
public function Play ()


异常
异常类型 条件
TimeoutException
加载所用的时间超出了 LoadTimeout 指定的时间(以毫秒为单位)。

FileNotFoundException
无法找到由 SoundLocation 指定的文件。

InvalidOperationException
.wav 标头已损坏;由 SoundLocation 指定的文件不是 PCM .wav 文件。


备注
Play 方法使用新线程播放声音。如果在调用 Play 时 .wav 文件尚未加载到内存中,则在播放开始前先加载 .wav 文件。可以使用 LoadAsync 或 Load 方法事先将 .wav 文件加载到内存中。成功地从 Stream 或 URL 加载 .wav 文件后,只要声音文件的路径没有改变,将来的 SoundPlayer 的播放方法调用就不再需要重新加载 .wav 文件。

如果尚未指定 .wav 文件或者加载失败,Play 方法将播放默认的嘟嘟声。

示例
下面的代码示例演示如何使用 Play 方法异步播放 .wav 文件。此代码示例摘自一个为 SoundPlayer 类提供的更大的示例。

Visual Basic 复制代码
ReportStatus("Playing .wav file asynchronously.")
player.Play()


C# 复制代码
ReportStatus("Playing .wav file asynchronously.");
player.Play();



.NET Framework 安全性
iie 2008-12-02
  • 打赏
  • 举报
回复
各位老大,兄弟可能没表达清楚。
问的是纯托管代码实现,不是p/invoke。
pp_shy 2008-12-02
  • 打赏
  • 举报
回复
可以调用API来实现

public class PlayWav
{
public PlayWav()
{

}

public enum PlaySoundFlags : int
{
SND_SYNC = 0x0000,
SND_ASYNC = 0x0001,
SND_NODEFAULT = 0x0002,
SND_MEMORY = 0x0004,
SND_LOOP = 0x0008,
SND_NOSTOP = 0x0010,
SND_NOWAIT = 0x00002000,
SND_ALIAS = 0x00010000,
SND_ALIAS_ID = 0x00110000,
SND_FILENAME = 0x00020000,
SND_RESOURCE = 0x00040004
}

[DllImport("winmm")]
public static extern bool PlaySound(string szSound, IntPtr hMod, PlaySoundFlags flags);

public static void Play(string strFileName)
{
PlaySound(strFileName, IntPtr.Zero, PlaySoundFlags.SND_FILENAME | PlaySoundFlags.SND_ASYNC);
}
}
FlyBird2004 2008-12-02
  • 打赏
  • 举报
回复
播放wav文件可以使用声音控件。实现托管,将此过程定义为托管即可。
http://blog.sina.com.cn/u/1283685453
你可参考一下这上面的例子。
ken_sniper 2008-12-02
  • 打赏
  • 举报
回复
也可以直接嵌入Com组件:windows Media play
ken_sniper 2008-12-02
  • 打赏
  • 举报
回复
dx里有相关DLL,你可以用下Microsoft.DirectX.DirectSound、Microsoft.DirectX.DirectPlay 什么的

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧