Sunshine 游戏串流完整指南:把 PC 变成 Moonlight 串流服务器
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
按下电视前遥控器上的播放键,三米外游戏 PC 里的《艾尔登法环》立刻开始运行——这就是 Sunshine 游戏串流的效果。Sunshine 是一个自托管的游戏串流主机:跑在你的游戏 PC 上,把桌面画面用硬件编码压缩,推给 Moonlight 客户端(Moonlight 装在电视、平板或手机上,负责显示画面并回传键鼠手柄输入)。开源、免费、无订阅费。本文按"第一次跑通 → 按硬件选配置 → 典型用法 → 出问题怎么办"的顺序,带你把它用起来。
🚀 第一次跑通:从安装到 Moonlight 配对成功
这节帮你解决"第一次把它装好、连上"的问题。全程大约十分钟。
安装,按你的系统选一条。Linux 用户推荐 Flatpak,装完执行一次附加安装脚本:
flatpak install --system flathub dev.lizardbyte.app.Sunshine flatpak run --command=additional-install.sh dev.lizardbyte.app.SunshineWindows 可用winget install LizardByte.Sunshine,macOS 用 Homebrew 的 sunshine 包,Debian/Ubuntu 也可以直接装官方 .deb 包。各平台完整安装包(AppImage、.rpm、FreeBSD pkg 等)见 docs/getting_started.md。
启动。没装成服务时直接在终端跑sunshine;Linux 上建议起一个用户服务,开机自动跑:
systemctl --user --now enable app-dev.lizardbyte.app.Sunshine打开 Web UI。浏览器访问https://localhost:47990,提示"不安全网站"是正常的——它用的是自签名证书,点继续即可。首次进入会要求你创建用户名和密码,这是后台的唯一入口,当场记下来。
客户端配对。在电视或手机上的 Moonlight 客户端里添加这台主机,客户端会显示一个 PIN;把它填进 Sunshine Web UI 顶部的 PIN 页面,顺手给设备起个名字,配对完成,就能开始串流了。
编码器怎么选:按显卡对号入座
这节帮你解决"我的显卡该用哪种编码方式"的问题。串流的核心动作是把画面压成视频流,硬件编码(NVENC、AMF 这类 GPU 上的专用编码模块)不占 CPU,画质和帧率都更好;软编(CPU 编码)是兜底方案,1080p 下 CPU 占用会明显上升,能硬编就别硬扛。
| 你的显卡 | 选它 | 说明 |
|---|---|---|
| NVIDIA | NVENC | Windows / Linux 都支持,Linux 端核心实现在 src/nvenc/ |
| AMD | Windows 选 AMF,Linux 选 VAAPI | VAAPI 是 Linux 通用的视频加速接口 |
| Intel | Windows 选 QuickSync,Linux 选 VAAPI | 核显同样有独立编码单元 |
| Apple 芯片 | VideoToolbox | macOS 平台,官方标记为实验性 |
| 没有独显 / 都不支持 | 软编(CPU) | 三平台兜底,注意 CPU 开销 |
Web UI 的 AudioVideo 页签里可以随时切换编码器。另一件事和编码相关:HDR 串流在 Windows 上是正式功能,Linux 上仍是实验性的,需要 Intel/AMD 显卡 + VAAPI 的 HEVC Main 10 或 AV1 10-bit 编码 + KMS 捕获后端 + 支持 HDR 的合成器(如 Gamescope、KDE Plasma 6)。主机开了 HDR 而 Moonlight 客户端没开,画面会过曝发白——两端要同时开,细节见 docs/getting_started.md 的 HDR 章节。
把游戏加进串流列表:客户端一键启动
这节帮你解决"Moonlight 里想看到哪些入口"的问题。Moonlight 客户端显示的应用列表来自 Sunshine,Web UI 里点 "Add New" 就能添加:填应用名、可执行文件路径、工作目录,还可以加prep-cmd(启动前执行的命令,比如先切显示器分辨率)。Linux 默认的"桌面"和"Steam 大屏模式"两个入口就来自内置的 src_assets/linux/assets/apps.json。
三条行为规则,配应用前先知道:
- 启动新应用时,正在串流的应用会被先终止;
prep-cmd执行失败,这次启动直接放弃;- 应用退出,串流随之结束。
典型用法:4K 电视串 Steam 大屏。确认列表里有 "Steam Big Picture"(默认自带,没有就按上面方法手动加,命令用steam steam://open/bigpicture),AudioVideo 页签把分辨率设成电视原生(如 3840×2160),码率按你的网络带宽调,具体推荐值参考 docs/performance_tuning.md。电视上的 Moonlight 里选 "Steam Big Picture" 启动即可。另外,每个配置项都能用 Web UI 顶部的搜索框直接搜到,不用一页页翻。
无头主机:不接显示器的 PC 怎么串流
这节帮你解决"游戏 PC 没接显示器,人在远处,如何拉起串流"的问题。Linux/X11 环境下,SSH 进去手动指定显示设备再启动就行:
ssh <user>@<主机IP> 'export DISPLAY=:0; sunshine'注意一点:没有物理显示器时,部分显卡会认为"没有输出"而停掉渲染。NVIDIA 显卡走 NvFBC 捕获,通常需要一个 HDMI 欺骗器或 EDID 模拟器让显卡保持输出状态。这套无头方案的完整步骤(包括 X11 自登录、服务化)在 docs/getting_started.md 里有专门章节。
⚠️ 排障:连不上、卡顿、没输入怎么办
这节帮你解决"串流体验不对,先查什么"的问题。先说一条判断原则:串流卡顿八成是网络问题,不是编码问题。Sunshine 每 16ms 突发发一帧(对应 60fps),路径上任何一台设备带宽或缓冲不够就会丢数据——典型如主机是 2.5Gb 有线、客户端只有 1Gb 或 Wi-Fi。所以先量网络:主机起iperf3服务端,客户端做 60 秒 UDP 反向测试:
iperf3 -s # 主机 iperf3 -c {主机IP} -t 60 -u -R -b 50M # 客户端看客户端输出:理想情况丢包低于 5%、抖动低于 1ms。不达标,先换 5GHz Wi-Fi 或改有线;确认是两端速率差(2.5G vs 1G)导致,就把主机网卡降速到 1G,或升级到 0.23.1 之后的版本(改进了突发传输)。
其余高频问题按现象对号:
| 现象 | 最可能的原因 | 先做什么 |
|---|---|---|
| 浏览器打不开 47990 | 防火墙挡了端口,或服务没在跑 | 先查服务状态,再放行 47990 端口 |
| 忘了 Web UI 账号密码 | 凭据只存在本地,没有云端找回 | 停掉 Sunshine 后用--creds重置(见下) |
| Linux 上键鼠/手柄没反应 | 运行用户没有 uinput 权限 | 把用户加进input组并重新登录 |
| 画面发白过曝 | 客户端没开 HDR,流按 SDR 解码 | Moonlight 设置里启用 HDR,主机端确认 HDR 已激活 |
重置凭据的命令是sunshine --creds {新用户名} {新密码}(Flatpak 环境用flatpak run --command=sunshine dev.lizardbyte.app.Sunshine前缀),停止服务执行即可。完整的网络测试、丢包处理和各平台细节都在 docs/troubleshooting.md。
最后养成一个习惯:出问题先打开 Web UI 的 Troubleshooting 页,每条 warning/error 都能点开看细节,比翻论坛快得多。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考