Sunshine:自己搭一个游戏串流服务器,延迟低到离谱
文章目录
- Sunshine:自己搭一个游戏串流服务器,延迟低到离谱
- 解决了什么问题
- 技术上做了什么
- 部署方式
- 和其他方案的对比
- 一些注意事项
- 适合谁用
Sunshine:自己搭一个游戏串流服务器,延迟低到离谱
38000 多 Star 的开源项目,做的事情就一件:让你在家里的任何设备上玩主机游戏,而且体验接近本地。
这个项目叫 Sunshine,是 Moonlight 串流方案的服务端。Moonlight 负责在客户端接收画面,Sunshine 负责在主机上采集屏幕、编码、推流。两者配合,实现跨设备游戏串流。
解决了什么问题
很多人家里有一台性能不错的台式机,但想在客厅电视、卧室平板、甚至手机上玩游戏。传统方案要么搬电脑,要么用 Steam Remote Play 之类的服务,延迟和画质经常不达标。
Sunshine 的思路是直接在主机端做硬件编码,利用 GPU 的编码能力把画面压缩后通过局域网传出去。AMD、Intel、Nvidia 三家显卡都支持硬件编码,没独显也能用软件编码兜底。
实际体验下来,局域网内延迟基本感觉不到。5GHz WiFi 环境下,1080p 60fps 没什么压力。有线网络的话,4K 也能跑。
技术上做了什么
Sunshine 支持的编码方式覆盖面很广:
- AMD 显卡用 AMF 编码
- Nvidia 显卡用 NVENC
- Intel 显卡用 QuickSync
- Linux 上还能走 VAAPI
- macOS 用 Video Toolbox
- 实在没有硬件编码,就用软件编码
屏幕采集这块,Windows 上用 DXGI Desktop Duplication,Linux 上支持 KMS/DRM、X11、Wayland 等多种方式,macOS 用 ScreenCaptureKit。基本上主流系统都能找到合适的采集方案。
手柄兼容性也不错。Xbox 360、Xbox One/Series、DualShock 4、DualSense、Nintendo Switch Pro 都能在不同平台上模拟。客户端连上手柄,主机端能识别成对应的虚拟手柄,玩起来和坐在电脑前没区别。
部署方式
Sunshine 提供了多种安装方式。Windows 用户直接装 exe 或者用 winget 命令行安装。Linux 用户可以选 deb 包、rpm 包、Flatpak、Docker。Docker 镜像在 Docker Hub 和 GitHub Container Registry 都有,拉下来就能跑。
装好之后,浏览器打开本地地址就能进 Web 界面。所有配置都在网页上完成,包括添加客户端设备、调整编码参数、设置分辨率和帧率。客户端配对也是在网页上操作,输入 PIN 码就行。
和其他方案的对比
Steam 自带的 Remote Play 也能串流,但只能串 Steam 游戏。Sunshine 没有这个限制,桌面上能看到的东西都能串。想串个模拟器、串个浏览器、串个视频播放器,都可以。
Parsec 也是常用的串流方案,但它是商业产品,高级功能要付费。Sunshine 完全开源,MIT 协议,想怎么改怎么改,部署到自己服务器也没问题。
一些注意事项
硬件要求不算高,但也不是随便什么机器都能跑。GPU 至少得支持硬件编码,AMD 的 VCE 1.0 以上、Intel 的 Skylake 以上、Nvidia 的 NVENC 卡都行。CPU 方面,Ryzen 3 或 Core i3 起步。内存 4GB 够用。
网络环境很关键。WiFi 的话建议 5GHz 频段,802.11ac 以上。想跑 4K 的话,有线网络是必须的。局域网内体验最好,跨网络串流需要公网 IP 或者做内网穿透,延迟会明显增加。
系统支持方面,Windows 11、macOS 14.2 以上、主流 Linux 发行版都能用。FreeBSD 也支持,不过用户群比较小。
适合谁用
有台性能不错的主机,又想在其他设备上玩游戏的人,可以试试。特别是家里有多台设备、不想每台都装游戏的情况,一套 Sunshine 加 Moonlight 就够了。
做游戏开发的也适合,改完代码想在平板上测试效果,不用每次都跑到电脑前。
开源社区的活跃度很高,文档齐全,遇到问题基本能在 Issue 里找到答案。
平板上测试效果,不用每次都跑到电脑前。
开源社区的活跃度很高,文档齐全,遇到问题基本能在 Issue 里找到答案。
