C# 如何将音频流传输到特定的输出设备?

C# 如何将音频流传输到特定的输出设备?,c#,windows,winapi,audio,audio-streaming,C#,Windows,Winapi,Audio,Audio Streaming,一直在努力寻找将音频从文件或网络传输到特定输出设备(而不仅仅是默认设备)的方法。尝试使用mciSendString,虽然它确实接受设备id/文件名,但我还没有找到使用它的方法,我甚至不确定这是否是我正在寻找的,但考虑到它说的是。。。或者设备驱动程序的文件名我猜是(?),但是如果我错了,请纠正我,并且这不是指定输出设备的类型参数 如果它是正确的,那么您如何枚举已安装的设备驱动程序,查看了IMMDevice接口,因为它的接缝好像可以将文件名存储在注册表中,但没有一个输出设备注册表项具有驱动程序文件名

一直在努力寻找将音频从文件或网络传输到特定输出设备(而不仅仅是默认设备)的方法。尝试使用
mciSendString
,虽然它确实接受设备id/文件名,但我还没有找到使用它的方法,我甚至不确定这是否是我正在寻找的,但考虑到它说的是
。。。或者设备驱动程序的文件名
我猜是(?),但是如果我错了,请纠正我,并且这不是指定输出设备的类型参数

如果它是正确的,那么您如何枚举已安装的设备驱动程序,查看了
IMMDevice
接口,因为它的接缝好像可以将文件名存储在注册表中,但没有一个输出设备注册表项具有
驱动程序文件名
类型值条目,或者至少我没有找到

所以我的问题是,你如何将音频流传输到特定的输出设备,它不必通过
mciSendString
来完成,这只是我研究的内容,因为它是播放音频时最受关注的功能之一

注意:请不要向我推荐像NAudio这样的第三方库,我问这个问题的原因是没有得到对库的推荐,否则我就已经使用了一个,也不会写这个,刚才看到很多答案是这样的:
使用{LibName},它有你想要的
或类似的东西

如果书写的内容有些奇怪或不正确,基本上这就是最终目标:

Installed Output Devices:
 - Output1
 - Output2
 - Output3

Method For Playing:
  //will play x.mp3 through output device 1
  PlayAudio(output: "Output1", mp3File: "x.mp3");

  //will play x.mp3 through output device 2
  PlayAudio(output: "Output2", mp3File: "x.mp3");

  //will play x.mp3 through output device 3
  PlayAudio(output: "Output3", mp3File: "x.mp3");

您似乎正在寻找以下API:

设置多媒体设备使用的WaveAudio设备(声卡) 控件,则必须使用mciSendCommand API。多媒体控制 不直接提供用于设置的设备的方法 播放或录音

  • 使用
    MCI\u SET
    MCI\u WAVE\u SET\u参数调用
    mciSendCommand()
    将wOutput设置为所需播放设备的ID
  • 然后通过获取
    mciSendCommand(
    )的
    IDDevice
    mciGetDeviceID(“waveaudio”)
它不是100%清楚
wOutput
想要什么,它可能与
waveOutGetDevCaps()返回的ID相同

我只是个搬运工。

请参阅: