Sunshine 完全指南:搭建游戏串流主机并与 Moonlight 完成联动
2026/9/11 2:07:05 网站建设 项目流程

Sunshine 完全指南:搭建游戏串流主机并与 Moonlight 完成联动

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

Sunshine 是一款免费开源的游戏串流主机(self-hosted game stream host)。它装在你自己的游戏电脑上,负责屏幕采集、硬件编码和输入转发;你则通过 Moonlight 客户端在手机、平板、电视或另一台电脑上观看和操作。本文不堆砌参数,只讲清楚一件事:从安装到第一次串流通路,中间每一步会发生什么、容易在哪里卡住。

先分清 Sunshine 和 Moonlight 的分工

串流链路有两端,很多人一开始就搞混了:

  • Sunshine(主机端):运行在游戏所在的那台 PC 上,把画面抓下来、编码成视频流,再把你在客户端上的键盘、鼠标、手柄操作回传进去。
  • Moonlight(客户端):运行在你观看的任意设备上,负责解码播放,并提供操作入口。

理解这个分工后,Sunshine 的核心工作就三块:

  1. 画面采集——用各平台的原生方式抓屏(Windows 用 DXGI/WGC,Linux 用 KMS/DRM、Wayland、XDG Portal 等,macOS 用 ScreenCaptureKit)。
  2. 视频编码——优先走 GPU 硬件编码(NVIDIA 的 NVENC、Intel 的 QuickSync、AMD 的 VAAPI/AMF、Apple 的 VideoToolbox),没有合适的硬件时才退回软件编码。
  3. 输入转发——把客户端的操作变成主机能识别的输入,包括模拟 Xbox、DualShock、Switch Pro 等虚拟手柄。

整个安装和配置过程都在浏览器里完成,不需要手写配置文件。

按系统选安装方式,避开两个坑

不同平台推荐的安装路径不一样,先对号入座:

  • Windows:用官方 MSI 安装器,默认以服务形式在后台运行。注意:更换安装器类型前,先手动卸载旧版本。
  • Linux:优先用你发行版的官方包(DEB、RPM、Arch 包都有)。官方包内置了 NVIDIA 编码所需的 CUDA 依赖,省去手动处理。
  • macOS:目前仍是实验性支持,手柄功能不可用,先心里有数。
  • FreeBSD:官方提供 pkg 安装包,但采集只有 X11 和 Wayland,手柄功能也有精简。

两个容易踩的坑,官方文档里是明确写了警告的:

  • AppImage 不支持 KMS 采集。如果你的发行版有现成软件包,别用 AppImage,除非只是临时测试。
  • Docker 镜像对大多数用户不推荐,官方文档原话如此——容器内的屏幕采集和输入权限会多出一层麻烦,不是好选择。

完整的分平台安装步骤在 docs/getting_started.md。如果你还想读源码,仓库地址是 https://gitcode.com/GitHub_Trending/su/Sunshine ,核心逻辑集中在 src/ 目录。

装完之后,下一步就是在浏览器里打开它的 Web UI。

首次启动:打开 Web UI 并设置凭据

启动 Sunshine 后,在主机浏览器访问https://localhost:47990(也可以把 localhost 换成内网 IP,用其他设备配置)。两件事要有预期:

  • 浏览器会提示"网站不安全"。这是自签名证书导致的,属正常现象,继续访问即可。
  • 首次进入时设置用户名和密码。现在就把它们记下来——忘了的话后面还有补救方法,但没必要给自己找麻烦。

登录后可以先花 30 秒看看界面:顶部导航栏有主题切换下拉菜单,整个 Web UI 支持多套主题,随时可换。

界面本身很直观,真正的工作在接下来三步:加应用、配对客户端、调配置。先从配对说起,因为它最接近"跑通"。

5分钟完成首次 Moonlight 配对

配对走的是 PIN 码流程,实际体验比想象中快:

  1. 在 Moonlight 客户端里找到 Sunshine 这台主机。搜不到就手动按 IP 添加。
  2. Moonlight 会提示你输入 PIN。此时回到 Sunshine 的 Web UI,点顶部导航栏的PIN入口,把 PIN 码填进去,给设备起个名字,回车确认。
  3. 看到成功提示后,回到 Moonlight 选一个应用,串流就开始了。

客户端去哪里下?不用自己满世界找——Web UI 的Featured Apps页签收录了各平台的 Moonlight 客户端入口和配套工具,直接在那边取就行。

配对成功只代表通路打通。想让 Moonlight 里有东西可点,得先给 Sunshine 添加应用。

整理游戏库:给 Sunshine 添加应用

应用管理在 Web UI 的应用页签,本质是在给 Sunshine 一份"启动清单"。加哪几类最有代表性:

  • Desktop(桌面):不加任何命令,流出来就是你的整个桌面。适合远程管理机器或做桌面串流,也是新手验证链路的最快方式。
  • Steam:注意要用分离(detached)方式启动 Steam 大画面模式。原因是 Steam 启动时会先跑一个自更新进程然后退出原进程,用普通命令方式跑,Sunshine 会认为应用立即退出,串流秒断。
  • 普通游戏/程序:填可执行文件路径,按需指定工作目录。没填工作目录时,默认取程序所在目录。

几条运行规则值得记住,它们解释了很多"为什么我的应用启动就断流":

  • 串流中再次启动同名应用,旧进程会被终止。
  • 配置了 prep 命令的,prep 失败则整个启动中止。
  • 应用进程结束时,串流随之结束。

各平台(含 macOS、Flatpak)的应用配置实例,包括 URI 启动、环境变量用法,都整理在 docs/app_examples.md。

游戏库就位后,剩下的体验差距主要来自一个地方:你的画面用什么方式采集、用什么方式编码。

编码与采集:平台差异才是体验的分水岭

结论先说:能用硬件编码就别用软件编码。软件编码全平台可用、兼容性最好,但延迟和 CPU 占用都更高,只建议当作兜底。

各编码 API 的平台分布大致如下:

编码 API适用 GPU平台
NVENCNVIDIALinux / Windows
QuickSyncIntel(Skylake 及以后)Windows
AMFAMDWindows
VAAPIAMD / Intel / NVIDIALinux / FreeBSD
VideoToolboxApple / IntelmacOS
Vulkan VideoAMD / Intel 等Linux
软件编码任意全平台

真正的复杂性在 Linux:采集方式和编码方式之间存在配对约束。官方 README 里有一张对应矩阵,要点是——KMS/DRM、XDG Portal、KWin 采集配合 VAAPI/Vulkan Video/NVENC 都比较自由;而NvFBC(X11 + CUDA)采集只能配 NVENC 或软件编码。也就是说,X11 + NVIDIA 老方案并不是万能组合,Wayland 或 XDG Portal 往往是更顺的选择。

Windows 侧相对省心,但有两个注意点:DXGI 桌面复制只能采集负责显示的 GPU,如果你想在 eGPU 上采集编码,需要接上显示设备让该 GPU 接管输出;macOS 则首次运行时会弹屏录和麦克风权限,授予后若想让 Sunshine 直接取系统声音,把 Audio Sink 留空即可。

排错时如果画面出不来,九成问题出在"采集 + 编码"这对组合上,而不是网络。

出问题时先排查这三处

Web UI 的 Troubleshooting 页签能翻到全部运行日志,逐条看警告和错误是最直接的定位手段。但在翻日志之前,按现象先做这几步,能省下大量时间:

打不开 Web UI?先查防火墙——47990 端口没放行的情况下,局域网内的其他设备连不上。这是"配对了半天客户端找不到主机"的最常见原因。

忘了 Web UI 的账号密码?不用重装。以命令行方式运行一次:

sunshine --creds {新用户名} {新密码}

这是官方排错文档给出的重置凭据方式,替换花括号内容即可(AppImage 用户把sunshine换成对应 AppImage 路径)。

画面卡、延迟高?官方文档对此的态度很明确:决定串流体验的不是裸带宽,而是链路稳定性——低延迟、低抖动、几乎无丢包。想量化验证,在主机上运行iperf3 -s开一个测试服务端,在客户端跑一条 60 秒的 UDP 测试就能看出抖动和丢包情况,比盯着带宽数字猜要靠谱得多。

输入没反应(鼠标/键盘/手柄)?Linux 上最常见的原因是运行 Sunshine 的用户不在input组里;Windows 上则确认是否装了 Virtual HID Driver——它是驱动级的输入方案,ViGEmBus 只算受限回退,仅支持 Xbox 360 和 DualShock 4。手柄"在 Steam 里能用、进游戏就不认"时,检查一下 Steam 的手柄支持设置,有时把主机的物理手柄暂时禁用、让 Sunshine 的虚拟手柄成为"第一个"手柄反而能解决。

更多场景(含 pfSense 防火墙规则、无头主机 SSH 启动等)见 docs/troubleshooting.md。

配置文件与几个值得记住的细节

配置全部在 Web UI 里改,顶部搜索栏可以直接搜任意选项——所有选项按 General、Input、Audio/Video 等分组,改完即生效,不用找文件。

几个实用细节:

  • 配置文件是sunshine.conf。不指定路径就用默认位置,文件不存在时会自动创建。想指定路径的话,启动时把目录作为参数传给 sunshine。
  • 串流默认走 47989 端口,防火墙策略要覆盖到它,而不只是 Web UI 的 47990。
  • 串流进行中有两个快捷键:Ctrl+Alt+Shift+N显示/隐藏光标(远程桌面场景很实用),Ctrl+Alt+Shift+F1/F12切换串流显示器。
  • 全部选项的说明在 docs/configuration.md,遇到某个选项不确定含义时查它比搜论坛快。

收尾:按顺序走一遍就能跑通

Sunshine 的门槛不在安装,而在"采集 + 编码 + 端口放行"这条主链路上任何一环没对齐。把顺序理顺,第一次跑通通常不超过半小时。接下来照做即可:

  1. 按系统选择官方包安装 Sunshine,启动后访问https://localhost:47990并记下凭据。
  2. 在应用页签至少添加一个 Desktop 应用,作为链路验证的保底选项。
  3. 在 Featured Apps 页签下载对应平台的 Moonlight 客户端,完成 PIN 配对。
  4. 按显卡类型确认编码方式:NVIDIA 选 NVENC,Intel 核显选 QuickSync,AMD 在 Linux 上优先考虑 VAAPI。
  5. 串流卡顿或延迟异常时,用 iperf3 验证主机与客户端之间的链路抖动,再看 Troubleshooting 日志定位。

主链路通了之后,再去动分辨率、刷新率、音频这些调优项才有意义——顺序反了,你很难分清是配置问题还是环境问题。

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询