Sunshine 游戏串流搭建教程:从装机到电视投屏的完整路径
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一个自托管的游戏串流服务器(self-hosted game stream host for Moonlight),它把游戏 PC 的屏幕画面用硬件编码器压缩后,通过局域网实时推送给 Moonlight 客户端播放。整个过程相当于给 PC 接上了一条"局域网 HDMI 线":主机负责抓屏、编码,电视、平板、手机负责解码显示,数据全程不出你的路由器。
先厘清一件事:Sunshine 只负责主机端,播放端必须安装 Moonlight 客户端。两者配合后,你得到的是一台可以放在任何房间的"游戏终端"。
按显卡选编码方案,先跑通最小闭环
编码是整条链路里唯一重 CPU/GPU 的环节,Sunshine 会自动探测可用的编码器,但你可以按下面这张表核对自己的显卡(兼容矩阵来自 README):
| 显卡 | 推荐编码方式 | 支持平台 |
|---|---|---|
| NVIDIA | NVENC | Windows / Linux |
| AMD | AMF(Windows)/ VAAPI(Linux) | Windows / Linux |
| Intel | QuickSync(Windows)/ Video Toolbox(macOS)/ VAAPI(Linux) | 各平台 |
| 没有独显 | 软件编码(libx264) | 全部 |
最小闭环分四步,每步都有明确的成功标志:
- 安装 Sunshine——Windows 用 MSI 安装包,Linux 用发行版对应的 deb/rpm/Flatpak,macOS 用 DMG,详细命令见 官方入门文档。
- 启动 Sunshine,浏览器访问
https://localhost:47990(自签名证书,忽略浏览器警告),首次进入会要求创建管理员账号,记下用户名和密码。 - 在 Web 界面把默认语言、主题切到自己顺眼的,这一步不耗时。
- 确认默认应用列表里存在 "Desktop"(桌面)应用,它不需要启动命令,点击即开始串流整个桌面。
第一次在客户端配对,三分钟搞定
配对是新手最容易卡住的一步,因为 PIN 码在主机端而不在客户端上:
- 在电视或手机上安装 Moonlight 客户端,点击"添加 PC"。
- Moonlight 显示一个 6 位 PIN 码。
- 回到主机 Web 界面,点导航栏的 "PIN",输入 PIN 码,给这台设备起个名字,提交后会看到成功提示。
- 回到 Moonlight,选择 "Desktop",画面应该几秒内出现。
配对成功后,主机端每次新设备连接都会走同样流程,旧设备则直接免 PIN 重连。
客厅场景:把 Steam 游戏搬上电视
桌面能串通之后,下一步是把游戏库接进来。Sunshine 通过 应用示例文档 提供了现成模板,常用的三类:
| 应用类型 | 命令写法 | 说明 |
|---|---|---|
| Steam 大屏模式 | steam://open/bigpicture(detached 命令) | 进大屏后用客户端手柄选游戏 |
| 单个 Steam 游戏 | steam://rungameid/464920 | 用游戏 AppID 最稳定 |
| 非 Steam 游戏 | 填可执行文件路径 + 工作目录 | 如 Epic 游戏的 exe 路径 |
两点容易踩坑的地方:
- Steam 必须用detached(分离)命令而不是普通命令。Steam 启动时父进程会自杀重启,用普通命令会导致串流瞬间断开。
- 串流一个应用时,上一个应用会被结束。所以建议用 Steam 大屏模式,进游戏前手动切换,而不是给每个游戏单独建应用。
手柄方面,Sunshine 会在主机上创建虚拟手柄(Xbox、DualShock/DualSense、Switch Pro 等,兼容表见 README)。Linux 和 FreeBSD 上如果手柄没反应,把运行 sunshine 的用户加入input组再重登录即可;Windows 需要单独安装 Virtual HID 驱动,详见 入门文档的 Windows 小节。
移动与远程场景:让串流走出客厅
在家用局域网时默认配置就够用。想在外网访问,需要动两处设置:
- 在 Web 界面搜索
upnp,把默认 disabled 的选项改成 enabled,Sunshine 会尝试让路由器自动放行串流端口(见 配置文档 upnp 条目)。 - 客户端和主机尽量都挂在 5GHz WiFi 上;README 的系统要求里明确写的是 5GHz 802.11ac。
远程串流对延迟比局域网更敏感,码率建议先压到 50 Mbps 以下试水,流畅后再逐步上调。Moonlight 客户端在各平台都有官方版本,Web 界面的 "Featured Apps" 标签页列出了官方推荐的客户端清单,可以按设备平台直接对照选择。
串流卡顿或连不上时,先查这三处
官方 故障排查手册 覆盖了很多细节,这里按出现频率排序给出排查顺序:
| 症状 | 优先检查 | 处理动作 |
|---|---|---|
| 客户端搜不到主机 | 主机防火墙、Web 界面能否在本机打开 | 放行 Sunshine 相关端口 |
| 连上后频繁掉帧 | 丢包,而非带宽不足 | 用 iperf3 做 UDP 60 秒测试,丢包应低于 5%、抖动低于 1ms |
| 主机千兆以上而客户端只有百兆/WiFi | 突发流量冲爆中间设备缓存 | 把主机网卡限速到 1Gbps 或与客户端同档 |
| 主机 Linux 上硬件编码报错 | Mesa 默认禁用了硬编码 | 按排查文档重编 Mesa 并开启h264enc,h265enc |
Web 界面的 Troubleshooting 标签页可以直接在线翻看日志,每条 warning/error 都带上下文,比翻本地日志文件快。
进阶调优:HDR、编码细节与多显示器
确认基础链路稳定后,再考虑这些项目:
- HDR:Windows 主机正式支持(要求显卡支持 HEVC Main 10 或 AV1 10-bit 编码,Pascal 及以上 NVIDIA 卡均可),需要主机系统开启 HDR 且 Moonlight 客户端同步打开 HDR 选项,否则画面会过曝。
- 编码延迟:NVIDIA 卡可在驱动里开 Fast Sync,AMD 卡可开 Enhanced Sync,各能省一帧延迟,见 性能调优文档。
- 多显示器切换:串流中按
Ctrl+Alt+Shift+F1~F12切换输出显示器,Ctrl+Alt+Shift+N隐藏/显示光标(远程桌面场景有用)。 - 配置项查询:几百个配置项不必背,Web 界面顶部有搜索框,直接输关键词跳转。
编码器实现如果想深挖,NVIDIA 侧的完整代码在 src/nvenc/,Vulkan 编码后端在 src/platform/linux/vulkan_encode.cpp。
落地清单
- 安装 Sunshine 并启动,浏览器打开
https://localhost:47990创建管理员账号。 - 在 Moonlight 端添加主机,用 Web 界面的 PIN 页面完成第一次配对。
- 按显卡类型确认 NVENC/AMF/QuickSync 编码器被选中,跑一次 10 分钟串流验证画面与延迟。
- 在应用列表中添加 Steam 大屏模式(detached 命令)和 1~2 个常玩游戏。
- 需要外网访问时启用 upnp,并用 iperf3 复测一次链路丢包。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考