是否可以使用任何C#库,例如NAudio,从扬声器播放一个音频文件,从“默认音频设备”(耳机/头戴式耳机)播放另一个音频文件。
我有一些示例代码在C#控制台应用程序中运行,但似乎不起作用:
using var mp3 = new Mp3FileReader(stream);
var enumerator = new MMDeviceEnumerator();
var dev = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active);
Console.WriteLine(dev.Count); // - 2: Speaker + Headset
// basically play from all devices
foreach (var o in dev)
{
var outSpeakerInit = new WasapiOut(o, AudioClientShareMode.Shared, true, 100);
var ev = new ManualResetEvent(false);
outSpeakerInit.PlaybackStopped += (s, e) => ev.Set();
outSpeakerInit.Init(mp3);
outSpeakerInit.Play();
ev.WaitOne();
}
它似乎适用于非控制台应用程序,例如WinForms。也许是因为存在窗口事件循环。