首先,我想说我已经在 stackoverflow 上阅读了与我的问题相关的所有主题(当然还有谷歌搜索),但这些研究没有为我的问题提供解决方案。我正在为 Windows Phone 编写应用程序,我需要同时播放两种声音,但这段代码不起作用,因为两种声音之间有轻微但明显的延迟,而且我的项目中必须没有明显的延迟。
Stream s1 = TitleContainer.OpenStream("C.wav");
Stream s2 = TitleContainer.OpenStream("C1.wav");
SoundEffectInstance sci = sc.CreateInstance();
SoundEffectInstance sci1 = sc1.CreateInstance();
sci.Play();
sci1.Play();
我还尝试执行两个 wav 文件的简单混合,但由于我不知道的原因它不起作用。(ArgumentException - 确保指定的流包含有效的 PCM 单声道或立体声波数据。 - 在调用 SoundEffect.FromStream(WAVEFile.Mix(s1, s2)) 时抛出);
public static Stream Mix(Stream in1,Stream in2)
{
BinaryWriter bw;
bw = new BinaryWriter(new MemoryStream());
byte[] header = new byte[44];
in1.Read(header, 0, 44);
bw.Write(header);
in2.Seek(44, SeekOrigin.Begin);
BinaryReader r1 = new BinaryReader(in1);
BinaryReader r2 = new BinaryReader(in2);
while (in1.Position != in1.Length)
{
bw.Write((short)(r1.ReadInt16() + r2.ReadInt16()));
}
r1.Dispose();
r2.Dispose();
bw.BaseStream.Seek(0, SeekOrigin.Begin);
return bw.BaseStream;
}
Stream s1 = TitleContainer.OpenStream("C.wav");
Stream s2 = TitleContainer.OpenStream("C1.wav");
s3 = SoundEffect.FromStream(WAVEFile.Mix(s1, s2));
那么,有谁知道当时如何播放两个声音?