我的wave不会在调试下播放。如果我按下CTRL + F5,我会获得一个不错的WAV,并且控制台会写出文件光标位置(buf.PlayPosition
),然后当声音结束时该方法退出。在调试下(当我刚刚按F5时)没有音频输出,但是在控制台窗口中文件光标位置仍然增加,并且该方法毫无例外地退出。
using Microsoft.DirectX.DirectSound;
public void Play()
{
var fileName = "bass.wav";
using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
using (var dev = new Device())
{
dev.SetCooperativeLevel(this, CooperativeLevel.Priority);
using (Buffer buf = new Buffer(stream, dev))
{
buf.Volume = 0;
buf.Play(0, BufferPlayFlags.Default);
while (buf.Status.Playing)
{
System.Console.WriteLine("playing " + buf.PlayPosition);
}
}
}
}
}
有什么想法吗?
答案 0 :(得分:2)
也许你需要使用BufferDescription给缓冲区“Global Focus”。来自C ++文档:
“中的DSBCAPS_GLOBALFOCUS标志 示例确保缓冲区将 即使是在继续玩的时候 应用程序窗口不在 前景。没有这面旗帜, 另一个缓冲区将被静音 应用程序甚至是对话框都有 输入焦点。“
尝试使用构造函数的public SecondaryBuffer(Stream, BufferDescription, Device); 形式。
答案 1 :(得分:0)
我禁用了Visual Studio Hosting Process,这似乎解决了这个问题。