家里串流玩游戏:Moonlight + Sunshine 替代 Steam Link 的完整方案

前言

PC 在书房,人在客厅。想躺在沙发上用电视玩 Steam 库里的游戏。

这就是串流要解决的问题 —— 把电脑画面实时传到另一台设备上,同时把你的手柄 / 键盘操作传回去。

听起来简单,实际上串流对延迟极其敏感。看视频缓冲两秒无所谓,但玩游戏按了跳跃键等两秒角色才跳 —— 根本没法玩。

串流方案那么多,怎么选?

市面上主流的家庭串流方案:

方案延迟画质自托管现状
Moonlight + Sunshine1-5ms极好推荐
Steam Link5-15ms否(需 Steam)偶尔断连
Parsec3-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 上装

Terminal window
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 吃灰,试试把它变成全屋的游戏串流服务器。