如何在 c#中利用 directsound 来播放声音
2个回答
展开全部
//src:音频文件名(包括路径),owner主窗口句柄
public void play(string src,IntPtr owner)
{
//获取默认音频播放设备
DevicesCollection playerDevices = new DevicesCollection();
// 建立声音设备
dev = new Device(playerDevices[i].DriverGuid);
dev.SetCooperativeLevel(owner, CooperativeLevel.Normal);
if(dev==null)
{
return;
}
// 为声音建立二级缓冲区
try
{
BufferDescription buffDes = new BufferDescription();
buffDes.GlobalFocus = true;//设置缓冲区全局获取焦点
buffer = new Microsoft.DirectX.DirectSound.SecondaryBuffer(src, buffDes, dev);
buffer.Pan = Convert.ToInt32(Pan.Center);
// 播放声音
buffer.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
}
catch (Exception ex)
{
MessageBox.Show("建立二级缓冲区异常:" + ex.Message);
}
}
public void play(string src,IntPtr owner)
{
//获取默认音频播放设备
DevicesCollection playerDevices = new DevicesCollection();
// 建立声音设备
dev = new Device(playerDevices[i].DriverGuid);
dev.SetCooperativeLevel(owner, CooperativeLevel.Normal);
if(dev==null)
{
return;
}
// 为声音建立二级缓冲区
try
{
BufferDescription buffDes = new BufferDescription();
buffDes.GlobalFocus = true;//设置缓冲区全局获取焦点
buffer = new Microsoft.DirectX.DirectSound.SecondaryBuffer(src, buffDes, dev);
buffer.Pan = Convert.ToInt32(Pan.Center);
// 播放声音
buffer.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
}
catch (Exception ex)
{
MessageBox.Show("建立二级缓冲区异常:" + ex.Message);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询