troXi Asked: 2020-09-05 10:29:08 +0800 CST2020-09-05 10:29:08 +0800 CST 2020-09-05 10:29:08 +0800 CST 如何将我的第一台显示器镜像到我的第二台显示器但有延迟 772 我正在尝试从我的第一台显示器上显示,并在我的第二台显示器上显示,但有3-5 秒的延迟。我不介意它是否只是反映一个应用程序。 目的是当我玩游戏时,我想查看我的第二台显示器并检查发生了什么。我真的不知道如何处理这件事。 multiple-monitors gaming 2 个回答 Voted chasly - supports Monica 2020-09-05T12:12:10+08:002020-09-05T12:12:10+08:00 实现延迟需要FIFO 缓冲区 https://helloacm.com/how-do-you-design-a-circular-fifo-buffer-queue-in-c/ 数据从一端进入缓冲区并一直移动直到到达另一端。 您可以在软件、硬件、空间上或通过缓冲网络实现缓冲区。 软件 您必须在游戏旁边运行一个进程,以便他们共享处理器时间。如果延迟程序不能挂接到游戏代码,那么它就必须使用中断来读取图形内存。然后它会拍摄内存的快照并将它们存储在 RAM 中。如果您在游戏加载后有足够的 RAM 可用,这可能是可能的。然后,同一程序通过不同的输出端口将延迟的图像发送到另一台监视器。 硬件 您可以在插入电缆的硬件中实现电子延迟,但该硬件需要自己的处理器和内存。这将是一个必须编程的微处理器。 空间 如果你可以将激光指向月球上的反射器,然后反射到你身上,你可以获得 1.3 + 1.3 = 2.6 秒的总延迟。 如果您将信号发送到人造卫星并返回,您可以使用网络的内置缓冲区。如果卫星的带宽永远不会超载,那么您将获得持续的延迟。想想新闻记者通过卫星电话从海外打来的,因此很难进行正常的谈话。 网络 互联网挤满了各种速度的缓冲。例如,如果您将手机关机一周,当您回来时,您仍然可以看到您错过的短信。互联网延迟的问题是很难精确控制它们。 推荐 如果这是一款没有重播功能的单人游戏,那么我相信您可以购买一些允许截屏甚至重播的软件。您可能希望在线搜索这些内容。 如果您不想立即分析发生的事情,但稍后在您有空的时候,那么我会再次搜索 3rd 方软件。它将为您进行缓冲(并存储在磁盘上)。 除非您可以购买现成的软件或硬件,否则您将不得不自己动手。这将是一个伟大的成就(对你的简历来说太棒了),但希望在接下来的几个月里实现一个缓冲区而不是玩游戏! Best Answer Narzard 2020-09-05T17:48:02+08:002020-09-05T17:48:02+08:00 您可以执行此 OBS(开放广播工作室)。一旦您的场景/输入设置为您的游戏,您就可以向它添加一些延迟过滤器(右键单击源 --> 添加过滤器 --> 源延迟)。然后,您需要在 OBS 中将输出设置为使用 ffmpeg 高级输出设置中的自定义 URL。您将获得类似于 (udp://ipaddress:2222) 的 URL。然后,您可以下载 VLC 媒体播放器并在第二台显示器上使用该 URL 打开网络流。 来源1:添加延迟滤波器 来源 2:流式传输到本地 vlc 实例的 obs 线程 来源 3:ffmpeg 点对点流式传输
实现延迟需要FIFO 缓冲区 https://helloacm.com/how-do-you-design-a-circular-fifo-buffer-queue-in-c/
数据从一端进入缓冲区并一直移动直到到达另一端。
您可以在软件、硬件、空间上或通过缓冲网络实现缓冲区。
软件
您必须在游戏旁边运行一个进程,以便他们共享处理器时间。如果延迟程序不能挂接到游戏代码,那么它就必须使用中断来读取图形内存。然后它会拍摄内存的快照并将它们存储在 RAM 中。如果您在游戏加载后有足够的 RAM 可用,这可能是可能的。然后,同一程序通过不同的输出端口将延迟的图像发送到另一台监视器。
硬件
您可以在插入电缆的硬件中实现电子延迟,但该硬件需要自己的处理器和内存。这将是一个必须编程的微处理器。
空间
如果你可以将激光指向月球上的反射器,然后反射到你身上,你可以获得 1.3 + 1.3 = 2.6 秒的总延迟。
如果您将信号发送到人造卫星并返回,您可以使用网络的内置缓冲区。如果卫星的带宽永远不会超载,那么您将获得持续的延迟。想想新闻记者通过卫星电话从海外打来的,因此很难进行正常的谈话。
网络
互联网挤满了各种速度的缓冲。例如,如果您将手机关机一周,当您回来时,您仍然可以看到您错过的短信。互联网延迟的问题是很难精确控制它们。
推荐
如果这是一款没有重播功能的单人游戏,那么我相信您可以购买一些允许截屏甚至重播的软件。您可能希望在线搜索这些内容。
如果您不想立即分析发生的事情,但稍后在您有空的时候,那么我会再次搜索 3rd 方软件。它将为您进行缓冲(并存储在磁盘上)。
除非您可以购买现成的软件或硬件,否则您将不得不自己动手。这将是一个伟大的成就(对你的简历来说太棒了),但希望在接下来的几个月里实现一个缓冲区而不是玩游戏!
您可以执行此 OBS(开放广播工作室)。一旦您的场景/输入设置为您的游戏,您就可以向它添加一些延迟过滤器(右键单击源 --> 添加过滤器 --> 源延迟)。然后,您需要在 OBS 中将输出设置为使用 ffmpeg 高级输出设置中的自定义 URL。您将获得类似于 (udp://ipaddress:2222) 的 URL。然后,您可以下载 VLC 媒体播放器并在第二台显示器上使用该 URL 打开网络流。
来源1:添加延迟滤波器
来源 2:流式传输到本地 vlc 实例的 obs 线程
来源 3:ffmpeg 点对点流式传输