设置延迟后在单独的播放设备上重复播放音频

设置延迟后在单独的播放设备上重复播放音频

首先我解释一下这个场景:我希望将一台 PC 连接到游戏 CS:GO 中的观众服务器,同时加入同一台机器上游戏玩家的语音通信服务器 (discord),然后使用 OBS 流式传输屏幕。

问题在于:观众服务器的运行有固定的延迟 - 我们就说 120 秒吧(显然是为了避免作弊),这意味着,只需将来自 Discord 的声音与连接到服务器的屏幕产生的图像一起传输,就会导致音频比图像提前 120 秒。

我正在寻找一种方法来选择虚拟声卡作为来自 Discord 的音频的输出设备。然后将音频延迟 120 秒,然后将其输出到在 OBS 上流式传输的设备上。

因此,最终得到的流将具有观众对游戏的视角,并且玩家游戏中的音频将(在某种程度上)正确同步。

这可能吗?到目前为止,我还没有找到有关该主题的任何内容。

答案1

我最终采用了以下解决方案:

事实证明,流行的媒体播放器 VLC 具有内置的此功能。我在这里找到了答案:https://softwarerecs.stackexchange.com/questions/35552/record-a-sound-and-play-it-back-after-a-user-defined-delay

处理声音时,我使用 VoiceMeeter 虚拟声音设备作为 Discord 的输出,并在 VLC 中选择 Voicemeeter 作为选定的输入设备。VLC 在默认声音设备(与游戏客户端使用的设备相同)上播放“回声”,从而匹配图像和音频。

答案2

OBS 自己的接口允许你添加最多 20 秒的延迟到您的音频接口,在主屏幕上“混音器”配置轮下的“高级音频属性”下。

但是,既然你提到了 120 秒,那还不够。你尝试使用均衡器 APO增加更多延迟。

来自维基文档

延迟(自 0.9 版起)
(...)

描述:将所选通道上的音频延迟 t 毫秒或 n 个样本。应优先选择毫秒,因为它们将提供与采样率无关的相等延迟。

理论上应该可以。 (但它可以就像 OBS 一样,它可以添加的延迟量是有限的。

但请注意,添加声音延迟也意味着在播放之前将所有延迟的秒数存储在 RAM 内存中,因此根据延迟量和软件使用的音频格式/编解码器,这可能意味着大量内存。

我猜这可能是 OBS 限制的一个原因,尽管我认为这应该由用户自行决定。

至于虚拟声卡输入和输出之间的接口,你可以使用免费版本的虚拟音频线

相关内容