我希望了解 Loki 的 Sunshine 项目,该项目与 moonlight 配合使用,基于 Nvidia 的 GameStream 以非常低的延迟传输桌面。
我查看了 GitHub 上的源代码,但无法弄清楚如何捕获屏幕以及如何将流转换为 RTSP 数据包。 我认为他们使用 ffmpeg 来捕获屏幕。
我确实找到了 RTSP 数据包定义 here
有人可以解释一下这是如何工作的吗? 我试图在较低的层面上理解这一点,因为我想在以后的项目中实现一个类似的程序(可能是在 C++ 本身中)。
我在这里没有太多经验,但我希望亲自动手! :)
希望我的问题很清楚,如果能帮助理解这个或我可以查看的其他资源,我们将不胜感激。
我只是在寻找其他东西时遇到了这个,所以我想我会回答,因为我是该项目的新维护者。
在撰写此答案时,我们在 Windows 上使用 DXGI API。
以前的 Nvidia Gamestream 服务使用 NVFBC(Nvidia 帧缓冲区捕获),该功能在 Windows 上已弃用。
对于 Linux,我们还使用 NVFBC 以及一些其他协议,具体取决于用户拥有的桌面环境。
该项目现已发布于 https://github.com/LizardByte/Sunshine
如果您想与项目开发人员聊天,请联系我们的 discord