我有多个音频输入
我想将这些WaveProvider转发到多个音频输出WaveOut(到多个DeviceNumber)。
但我有3个问题:
有人有示例代码正常工作吗?
以下是一个不适用于2个任务的示例:
Buffer = new BufferedWaveProvider(new WaveFormat(44100, 16, 2));
WaveOut = new WaveOut();
WaveOut.DeviceNumber = device;
WaveOut.Init(Buffer);
...
Buffer.AddSamples(bytes, 0, bytes.Length);
WaveOut.Play();
我没有找到所有WaveOut的样本。根据NAudio作者的说法,我不应该使用Tasks,但我不知道如何在魔术混音器类中设置多个输出和输入?
此致
答案 0 :(得分:0)
WaveOut是同步和独家解决方法是使用FunctionCallback在后台线程中设置WaveOut
WaveOutSpeech = new WaveOut(WaveCallbackInfo.FunctionCallback());
WaveOutSpeech.DeviceNumber = device;
如果您仍需要同步代码,则必须:
以下是一个示例:
private void RunSession(WaveOut WaveOut, WaveStream stream, string match) {
played.Add(match);
WaveOut.Init(stream);
WaveOut.Play();
while (stream.CurrentTime < stream.TotalTime && played.Contains(match)) {
Thread.Sleep(100);
}
WaveOut.Stop();
stream.Dispose();
played.Remove(match);
}
第三个参数匹配是流项目的名称。这允许在结束前停止循环。