提问者:小点点

C#/Windows:从扬声器播放一个音频文件,从“默认音频设备”(耳机/头戴式耳机)播放另一音频文件?


是否可以使用任何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();
}


共1个答案

匿名用户

它似乎适用于非控制台应用程序,例如WinForms。也许是因为存在窗口事件循环。