我正在进行一个WinRT项目,在该项目中我同时播放多个视频文件。我有3个音频设备连接到机器上,将专门用于渲染正在播放的视频文件中的音频。可以同时播放的视频的最大数量为3。因此,每个音频设备将被用于从其对应的视频文件中呈现音频。即音频设备1将播放视频1等等。这是我的要求。
到目前为止,我遇到了两种方法。首先,我们使用杜比或任何其他API将音频引导到相应的设备。即左通道被呈现给设备1,中间/中心被呈现给装置2,并且右通道被呈现到装置3。我试过适用于Windows 10的杜比音频示例应用程序。他们在嵌入式视频中进行了通灵,而不是在代码中。我找不到Windows 10杜比API的文档。因此,对于这种方法,我可以以通道的形式将音频呈现给特定的音频设备吗?而且我无论如何都不想合并音频。
其次,我们使用3个声卡,并在每个声卡上连接一个音频设备。我们通过提供设备ID来选择要在其上播放音频的设备。我在XAudio2中尝试过这种方法,方法是用我想要的设备ID调用createMasteringVoice()方法。这适用于单个音频文件,然而,我想渲染正在播放的多个视频的音频。
这两种方法都没有解决核心需求。所以,考虑到这种情况,满足需求的最佳方法是什么?
我想说,您可以使用第二种方法中提到的XAudio2
。由于可以将deviceId
传递给createMasteringVoice()
,因此可以创建多个UniversalAudioPlayer
实例,并将不同的ID传递给每个实例。这样可以同时播放多个声音。在这里查看函数定义和社区添加。