我目前使用SharpDX SourceVoice播放WP8應用程序中的wav文件,該文件適用於播放單個文件。SharpDX:循環播放多個wav文件
但是,我找不到在循環中一個接一個地播放多個文件的方法,無需註冊SourceVoice上的事件並排隊下一個文件。這似乎引入了一些口吃,並不是非常無縫,所以我希望有一種方法可以將兩個文件排隊一次,然後循環播放它們。
關於同時播放兩個文件有幾個問題(比如這個:Best way to play two audio files simultaneously in Windows Phone 8),但是我想在一個循環中一個接一個地播放它們。
我要扮演一個文件的代碼如下所示:
xaudio = new XAudio2();
masteringVoice = new MasteringVoice(xaudio);
var nativefilestream = new NativeFileStream(String.Format(@"{0}", soundfile),NativeFileMode.Open,NativeFileAccess.Read,NativeFileShare.Read);
var soundstream = new SoundStream(nativefilestream);
var waveFormat = soundstream.Format;
var buffer = new AudioBuffer
{
Stream = soundstream.ToDataStream(),
AudioBytes = (int)soundstream.Length,
Flags = BufferFlags.EndOfStream
};
sourceVoice = new SourceVoice(xaudio, waveFormat, true);
sourceVoice.SubmitSourceBuffer(buffer, soundstream.DecodedPacketsInfo);
sourceVoice.Start();
如果我想循環單片音頻的,我設置了AudioBuffer無限循環計數,如下所示:
LoopCount = AudioBuffer.LoopInfinite,
我曾嘗試使用不同的AudioBuffers調用兩次SubmitSourceBuffer方法,並將LoopCount設置爲LoopInfinite,但只有第一個播放。