Sunshine 自托管游戏串流:从安装到首帧画面的 15 分钟完整流程
2026/9/12 9:40:35 网站建设 项目流程

Sunshine 自托管游戏串流:从安装到首帧画面的 15 分钟完整流程

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

Sunshine 是一个面向 Moonlight 的自托管游戏串流服务端:主机端负责抓屏和硬件编码,把视频流经局域网推到任意客户端设备。从装好软件到看见第一帧画面,完整流程大约 15 分钟,全程只需要你操作主机一侧。

先搞清楚它是什么

  • Sunshine 只装在主机上,接收端另需安装 Moonlight 客户端
  • 它不是云串流服务:编码跑在你自己的机器上,画质上限和隐私都留在局域网
  • 开源免费、自托管,无账号、无订阅
  • 支持 Windows、Linux、FreeBSD 主机;macOS 为实验性且不支持手柄模拟
  • 编码器按顺序自动选择:NVENC、QuickSync、AMF、VAAPI、Vulkan Video、VideoToolbox,最后是软编码兜底

动手前,先核对这 5 件事

  1. 两台设备在同一局域网,网络稳定;将来要走出局域网连,路由器需支持 UPNP
  2. macOS 主机首次启动会要屏幕录制和麦克风授权,必须允许,否则采集不到画面
  3. macOS 主机没有手柄模拟,要用控制器就选 Windows 或 Linux 主机
  4. Linux 上运行 Sunshine 的用户要在input组里,否则连接后键鼠、手柄注入不生效
  5. 同一时间全局只有一条串流,谁在连谁在用,多人共用要自己排时间

第一帧画面:4 步走完

📌 1. 装主机端程序

Windows 从 Release 页取Sunshine-Windows-AMD64-installer.msi双击安装,防火墙规则由安装器写入;Linux 按发行版选 deb、copr 或 pacman 包;macOS 把 DMG 里的Sunshine.app拖进 Applications。

检查点:安装程序正常退出、无报错弹窗。装的是 Flatpak 的话,再补一条输入依赖,缺了它键鼠注入不完整:

flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine

📌 2. 把服务跑起来

Windows 的 MSI 已把 Sunshine 注册成系统服务并开机自启,这步直接跳过。Linux 在终端执行:

systemctl --user --now enable app-dev.lizardbyte.app.Sunshine

检查点:systemctl --user status app-dev.lizardbyte.app.Sunshine显示 running,才算服务活着。

📌 3. 建管理员账号

浏览器打开https://localhost:47990。页面提示"不安全"来自自签名证书,直接忽略。首次进入会让你设置管理员用户名和密码,写下来,后面配对全靠它。

检查点:用刚设的账号能登录进主页。

📌 4. Moonlight 怎么配对

客户端打开 Moonlight,它会自动扫到主机。首次连接弹出一个四位 PIN:回到 Web UI 导航栏的 PIN 页输入,并给设备起个名字。

检查点:Moonlight 里点 "Desktop" 条目,客户端出现主机桌面实时画面,键鼠有响应、声音出来。四项全过,链路才算通。

出画面之后做什么

怎么加游戏

场景:你不想只串整个桌面,而是直接拉起某个游戏。

操作:Applications 页新建条目。像 Steam 这种启动命令会立即退出的进程,要勾上detached(脱离式启动),否则流刚开就断;Flatpak 环境里的宿主程序,命令加flatpak-spawn --host前缀;路径写$(HOME)这类环境变量,别写死。

验证:Moonlight 点新条目,目标程序直接拉起,启动后 3 秒内不断流。

码率到底要不要改

场景:网络顶不住,或者你想给主机端带宽封顶。

操作:max_bitrate默认0,含义是码率完全按 Moonlight 的请求走;只有封顶时才填具体数,比如5000(Kbps)。

验证:改完重开一次串流,画面帧率稳定,没有新增卡顿。

编码器要不要动

场景:拿不准用哪个编码器。

操作:encoder留空就是自动选,日常够用;手动填nvencamdvcevaapivulkansoftware是排障手段。nvenc_preset从 1(最快)到 7(压缩率最高),默认1,只有网络顶不住时才调大。

验证:改完后 Web UI 的 Troubleshooting 页没有编码相关报错。

一家人共用怎么做

场景:多个成员轮流用同一台主机。

操作:每人在自己的 Moonlight 设备上独立配对,各起各的设备名,Web UI 里记录。

验证:A 在串时 B 无法启动,A 退出后 B 立刻能串。

卡壳了先查这张表

症状最可能原因一条修复动作
https://localhost:47990打不开防火墙拦了 47990 端口临时关防火墙验证,通了就补一条放行 47990 的规则
Moonlight 找不到主机不同网段,或服务没在跑Linux 执行systemctl --user status app-dev.lizardbyte.app.Sunshine看是否 running
卡顿、掉帧网络丢包,不是 Sunshine 的锅主机起iperf3 -s,客户端跑下面的 UDP 测速,目标丢包低于 5%、抖动低于 1ms
忘了管理员密码凭据丢失执行sunshine --creds {新用户名} {新密码}直接重置
Linux 键鼠、手柄不响应运行用户不在 input 组把该用户加入input组,注销后重新登录

客户端测速命令(<主机IP>换成实际地址):

iperf3 -c <主机IP> -t 60 -u -R -b 50M

丢包高的典型诱因是两头速度不匹配,比如 2.5G 有线对 WiFi 客户端:网卡降一档速率或改回有线,通常立刻见效。日志位置:Windows 在%ProgramFiles%\Sunshine\config\sunshine.log,Linux/macOS/FreeBSD 在~/.config/sunshine/sunshine.log

三句带走的话

  • 动手调画质前先跑 iPerf3,网络稳定性比带宽峰值更决定体验
  • 编码器拿不准就留空,max_bitrate为 0 代表码率听客户端的,封顶才去碰它
  • 要走出局域网,得把upnp改成enabled,默认是disabled

下一步动作:现在拿第二台设备配一次对,再往应用列表加一条真实游戏,把"配对 → 启动 → 串流 → 退出"完整走一遍。

疑难杂症索引见 docs/troubleshooting.md,各平台的采集与编码实现在 src/platform/ 目录。

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

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

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

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

立即咨询