gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:30:11 25 4
gpt4 key购买 nike

一直在努力寻找一种将音频从文件或网络流式传输到特定输出设备的方法,而不仅仅是默认设备。尝试使用 mciSendStringopen command确实接受设备 ID/文件名 我还没有找到使用它的方法,我什至不确定这是否是我要找的,但考虑到它说 ... or the filename of the device driver我猜是(?),但如果我错了,请纠正我,这不是 specify your output device类型参数。

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

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

注意:请做不是 向我推荐 NAudio 之类的第 3 方库,我问这个问题的原因是没有获得对库的推荐,否则我已经使用过一个并且永远不会写这个,刚刚看到很多答案就像:Use {LibName}, it has what you want或类似的规定。

如果所写的内容奇怪或在某些地方措辞不正确,基本上这就是最终目标应该是:

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: mciSendCommand()

To set the WaveAudio device (soundcard) used by the Multimedia Control, you must use the mciSendCommand API. The Multimedia Control does not directly provide a method to let you set the device used for playing or recording.


  • 调用 mciSendCommand()MCI_SET & MCI_WAVE_SET_PARMS将 wOutput 设置为所需播放设备的 ID。
  • 然后获取 IDDevice对于 mciSendCommand( ) 通过mciGetDeviceID("waveaudio")

  • 它不是 100% 清楚 wOutput想要,它可能与 waveOutGetDevCaps() 返回的 ID 相同

    我只是个搬运工。

    请引用:

    https://stackoverflow.com/a/13320137/11128312

    https://stackoverflow.com/a/10968887/11128312

    关于c# - 如何将音频流式传输到特定的输出设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58552660/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com