sunshine如何捕获并流式传输桌面

问题描述 投票:0回答:1

我希望了解 Loki 的 Sunshine 项目,该项目与 moonlight 配合使用,基于 Nvidia 的 GameStream 以非常低的延迟传输桌面。

我查看了 GitHub 上的源代码,但无法弄清楚如何捕获屏幕以及如何将流转换为 RTSP 数据包。 我认为他们使用 ffmpeg 来捕获屏幕。

我确实找到了 RTSP 数据包定义 here

有人可以解释一下这是如何工作的吗? 我试图在较低的层面上理解这一点,因为我想在以后的项目中实现一个类似的程序(可能是在 C++ 本身中)。

我在这里没有太多经验,但我希望亲自动手! :)

希望我的问题很清楚,如果能帮助理解这个或我可以查看的其他资源,我们将不胜感激。

c++ ffmpeg rtsp
1个回答
0
投票

我只是在寻找其他东西时遇到了这个,所以我想我会回答,因为我是该项目的新维护者。

在撰写此答案时,我们在 Windows 上使用 DXGI API。

以前的 Nvidia Gamestream 服务使用 NVFBC(Nvidia 帧缓冲区捕获),该功能在 Windows 上已弃用。

对于 Linux,我们还使用 NVFBC 以及一些其他协议,具体取决于用户拥有的桌面环境。

该项目现已发布于 https://github.com/LizardByte/Sunshine

如果您想与项目开发人员聊天,请联系我们的 discord

© www.soinside.com 2019 - 2024. All rights reserved.