【发布时间】:2010-12-10 03:30:31
【问题描述】:
我想使用 C# 来实现一个可以同时播放多个音频流的应用程序。花生 - 现在有趣的部分:假设每个流都是单声道(单声道)我想分别为每个流调整每个扬声器(5.1 甚至 7.1)的音量。我可以使用 windows 混音器来做到这一点,但问题是,只有一个混音器,我想分别为每个流调整它。有什么想法可以实现吗?
我的第一个猜测是将流多路复用 8 次 (7.1),为每个“通道”应用音量级别,然后将其发送到 windows 混音器,例如,所有通道的电平为 80%。您知道任何可能支持此类用例的库吗?
AFAIK bass 和 fmod 无法做到这一点,但如果我错了,请纠正我。作为替代方案,我正在考虑为此破解 XNA:使用描述与听者相关的流位置的向量并使用它来应用音量补偿......只是漫无边际。
(请不要在这方面向我指出一些 C++/WinAPI 的想法,这个项目现在不值得学习另一种语言。)
【问题讨论】:
-
我脑子里突然冒出一个想法:要求将可用的声音文件导入并最初转码到某种声音库中是完全可以的。 vorbis 格式最多支持 255 个通道,并且有一个(可能已废弃)可用的库:vorbisdotnet.sourceforge.net
-
有点颠簸:我在 Codeplex 上找到了 NAudio 库。好东西……