如何将我的第一台显示器镜像到第二台显示器上,但有延迟

如何将我的第一台显示器镜像到第二台显示器上,但有延迟

我正在尝试从我的第一个显示器上获取显示内容并将其显示在我的第二个显示器上,但使用3-5秒延迟。如果它只是镜像一个应用程序,我不介意。

目的是当我在玩游戏时,我想看第二台显示器并检查发生了什么。我真的不知道该怎么做。

答案1

您可以使用 OBS(Open Broadcast Studio)执行此操作。将场景/输入设置为游戏后,您可以向其中添加一些延迟过滤器(右键单击源 --> 添加过滤器 --> 源延迟)。然后,您需要在 OBS 中设置输出以在高级输出设置中使用 ffmpeg 的自定义 URL。您将获得类似于 (udp://ipaddress:2222) 的 URL。然后,您可以下载 VLC Media Player 并在第二台显示器上使用该 URL 打开网络流。

来源1:添加延迟滤波器

来源 2:obs 线程关于流式传输到本地 vlc 实例

来源3:ffmpeg点对点流

答案2

实施延迟需要FIFO 缓冲区 https://helloacm.com/how-do-you-design-a-circular-fifo-buffer-queue-in-c/

数据从一端进入缓冲区并一直移动直到到达另一端。

您可以在软件、硬件、空间上或通过缓冲网络实现缓冲区。

软件

您必须在游戏的同时运行一个进程,这样它们才能共享处理器时间。如果延迟程序无法挂接到游戏代码中,那么它必须使用中断来读取图形内存。然后它会获取内存快照并将其存储在 RAM 中。如果游戏加载后您有足够的 RAM 可用,这可能是可行的。然后,同一个程序会通过不同的输出端口将延迟的图片发送到另一台显示器。

硬件

你可以在插入电缆的硬件中实现电子延迟,但该硬件需要自己的处理器和内存。它将是一个必须进行编程的微处理器。

空间

如果您可以将激光导向月球上的反射器,然后再返回给您,那么总延迟时间为 1.3 + 1.3 = 2.6 秒。

如果您将信号发送到人造卫星并返回,则可以使用网络内置的缓冲区。只要卫星的带宽从未过载,那么您将获得恒定的延迟。想想新闻记者用卫星电话从海外打电话,因此很难进行正常通话。

网络

互联网在任何速度下都充斥着缓冲。例如,如果你把手机关机一周,当你回来时你仍然可以看到你错过的短信。互联网延迟的问题在于很难对其进行精确控制。

推荐

如果这是一款没有重播功能的单人游戏,那么我相信你可以购买可以截屏甚至重播的软件。你可能希望在线搜索这些。

如果您不想立即分析发生了什么,而是稍后再闲暇,那么我建议您再次搜索第三方软件。它将为您进行缓冲(并存储在磁盘上)。

除非你能买到现成的软件或硬件,否则你只能自己动手了。这将是一项伟大的成就(对你的简历来说也很棒),但接下来的几个月里,你得花上几个月的时间来实现缓冲区,而不是玩游戏!

相关内容