家里串流玩游戏:Moonlight + Sunshine 替代 Steam Link 的完整方案
前言
PC 在书房,人在客厅。想躺在沙发上用电视玩 Steam 库里的游戏。
这就是串流要解决的问题 —— 把电脑画面实时传到另一台设备上,同时把你的手柄 / 键盘操作传回去。
听起来简单,实际上串流对延迟极其敏感。看视频缓冲两秒无所谓,但玩游戏按了跳跃键等两秒角色才跳 —— 根本没法玩。
串流方案那么多,怎么选?
市面上主流的家庭串流方案:
| 方案 | 延迟 | 画质 | 自托管 | 现状 |
|---|---|---|---|---|
| Moonlight + Sunshine | 1-5ms | 极好 | 是 | 推荐 |
| Steam Link | 5-15ms | 好 | 否(需 Steam) | 偶尔断连 |
| Parsec | 3-10ms | 好 | 否(需账号) | 免费版有限制 |
| AMD Link | — | — | — | 已停更 |
Steam Link 以前是我的首选,但它在非 Steam 游戏上体验很差,而且经常莫名其妙断连。Parsec 画质不错但要注册账号,免费版有分辨率限制。
Moonlight + Sunshine 是目前最稳的方案。Moonlight 是客户端(前身是 NVIDIA GameStream 的开源客户端),Sunshine 是服务端(开源替代 NVIDIA 停更的 GameStream)。两者都是开源免费的,延迟低到感知不到。
怎么工作的?
简化版流程:
游戏画面 → GPU 编码(H.264/HEVC/AV1) → 网络传输 → 客户端解码 → 屏幕显示你的操作 → 客户端采集 → 网络回传 → 服务端注入输入 → 游戏响应关键在编码这一步。用 GPU 硬件编码,延迟可以控制在毫秒级。不用 CPU 软编码 —— 那延迟没法玩游戏。
服务端:Sunshine 部署
Windows 上装 Sunshine
下载安装包:https://github.com/LizardByte/Sunshine/releases
安装后打开 Web 管理界面 https://localhost:47990。首次使用需要设置用户名密码。
Linux / Docker 上装
docker run -d \ --name sunshine \ --restart unless-stopped \ --network host \ --device /dev/dri \ -v /opt/sunshine/config:/config \ -e PUID=1000 -e PGID=1000 \ linuxserver/sunshine:latest关键配置
Web 管理界面里,重点调这几个:
编码器:NVIDIA 选 NVENC,AMD 选 AMF,Intel 选 QuickSync。别选 Software—— 那是 CPU 软编码。
分辨率与帧率:跟你的客户端屏幕匹配就行。电视一般 1080p60fps 或 4K60fps。内网千兆可以轻松跑 4K,WiFi 的话建议 1080p。
码率:内网有线的直接拉满 150Mbps,WiFi 根据信号质量设 20-50Mbps。
客户端:Moonlight
Moonlight 的客户端覆盖很全:
- Windows / macOS / Linux — 桌面端
- Android / iOS — 手机平板
- Apple TV / Android TV — 电视盒子
- Steam Deck / 各类掌机
- 甚至浏览器版(实验性)
装好之后 Moonlight 会自动发现同网络的 Sunshine。配对方式是 Moonlight 上点连接 → 弹出一个 PIN 码 → 在 Sunshine 管理界面输入 PIN。
配好之后,Moonlight 里会列出你电脑上的游戏(也可以手动添加任何 exe)。点一下就能串流。
延迟优化
串流延迟从几个环节入手:
网络
- 服务端插网线,这个是底线。WiFi 串流主机 = 自找延迟
- 客户端优先网线,不行的话用 5GHz WiFi,离路由器近点
- 别再 2.4GHz WiFi 上玩串流 —— 带宽和干扰都扛不住
编码器
- NVENC(NVIDIA 显卡)延迟最低
- AMF(AMD 显卡)次之,RX 6000 系列以上表现不错
- QuickSync(Intel 核显)也可以,但画质略差
码率与分辨率
- 1080p60fps:20-50Mbps 足够
- 4K60fps:至少 80Mbps
- HDR 需要额外带宽
实测:内网千兆有线,1080p60fps 编码延迟 1-3ms,网络延迟 <1ms,解码延迟 3-5ms。加起来不到 10ms,完全感知不到。
踩坑记录
手柄不识别
Sunshine 默认会把输入设备传给服务端。如果手柄在客户端插着但游戏不响应,在 Moonlight 设置里确认输入模式是「自动」或「Xbox 手柄」。
AMD 编码器选项不可用
AMD 显卡在 Linux 上装 Sunshine 需要 amdgpu 驱动和 VA - API。确保 vainfo 命令能看到编码器。如果看不到,检查显卡驱动。
串流黑屏但有声音
大概率是 HDR 不兼容。客户端不支持 HDR 但服务端开了 —— 关掉 Sunshine 的 HDR 选项试试。
外网串流
Moonlight 本身不支持外网,需要自己搭 Tailscale 或 ZeroTier,或者用端口转发 + DDNS。Tailscale 最简单 —— 两边都装,直接走 WireGuard 隧道,延迟增加不明显。
总结
Moonlight + Sunshine 的组合是目前家庭游戏串流的最佳实践:开源、免费、延迟低、客户端全平台。Sunshine 替代了 NVIDIA 已经停更的 GameStream,Moonlight 客户端体验一直在线。
配置不复杂 —— 服务端装 Sunshine、客户端装 Moonlight、对个 PIN 码就能用。花半小时搭好,之后躺沙发上玩 PC 游戏的感觉,说实话比坐电脑前舒服多了。
如果你也有台游戏 PC 吃灰,试试把它变成全屋的游戏串流服务器。