我的wave不會在調試下播放。如果我按CTRL + F5,我會得到一個很好的WAV,控制檯寫出文件光標位置(buf.PlayPosition
),然後在聲音結束時退出該方法。在調試下(當我剛剛點擊F5時),沒有音頻輸出,但是在控制檯窗口中文件光標位置仍然增加,並且該方法毫無例外地退出。爲什麼DirectSound緩衝區在調試條件下無法播放?
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);
}
}
}
}
}
任何想法?
使用SecondaryBuffer比使用Buffer有什麼好處? – gingerbreadboy 2010-01-26 09:38:38