三步搭起一台 PC 游戏串流服务器:Sunshine 与 Moonlight 的低延迟串流实践
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一款自托管的游戏串流服务器。把它装在 PC 上后,它会持续把游戏画面和系统声音编码成低延迟视频流,推送到电视、手机或其他电脑上的 Moonlight 客户端。不需要任何云订阅,设备全部留在家里。本文按"核对 → 安装 → 配置 → 排障"的顺序走一遍,所有配置项和数字都取自仓库官方文档,详见 docs/getting_started.md。
先核对硬件与网络
Sunshine 和 Moonlight 是服务端与客户端的关系:Sunshine 跑在你玩游戏的这台机器上,顺序做三件事——捕获屏幕(截取当前画面)、视频编码(把画面压缩成码流,优先使用 GPU 内置的硬件编码器)、网络传输;Moonlight 则装在你想观看的设备上。
安装前对照下表(来自 README,官方标注这些表格仍在完善,不建议作为购买依据):
| 用途 | GPU | CPU | 网络 |
|---|---|---|---|
| 最低要求 | AMD VCE 1.0+;Intel 需 VAAPI 兼容(Linux)或 Skylake 及以上带 QuickSync(Windows);NVIDIA 需支持 NVENC 的显卡 | Ryzen 3 或 Core i3 及以上 | 两端 5GHz 802.11ac Wi-Fi |
| 4K 串流 | AMD VCE 3.1+;Intel HD Graphics 510+ 或 Skylake+;NVIDIA RTX 2000 系+(Linux)或 GTX 1080+(Windows) | Ryzen 5 或 Core i5 及以上 | 两端 CAT5e 有线及以上 |
| HDR 串流 | AMD VCE 3.4+;Intel HD Graphics 730+;NVIDIA GTX 10 系及以上 | Ryzen 5 或 Core i5 及以上 | 两端 CAT5e 有线及以上 |
内存 4GB 及以上即可。操作系统版本要求:Windows 11+、Ubuntu 22.04+ / Debian 13+ / Fedora 43+、macOS 14.2+、FreeBSD 15.1+。
手柄兼容性按平台差别很大:Windows 和 Linux 可以模拟 Generic、Xbox 360/One/Series、DualShock 4/DualSense、Switch Pro 等虚拟手柄;FreeBSD 为部分支持(缺少体感、触摸板、电量状态、RGB 灯效、自适应扳机);macOS 不支持。
小结:这一节让你用两分钟确认设备能不能跑起来,硬件缺口多少都补不回来。
📦 按你的系统选安装路径
总原则:优先用官方预构建包。官方明确说明第三方打包的仓库不提供支持。
Windows:MSI 安装器优先
- 从发布页下载对应架构的 MSI(AMD64 对应 Intel/AMD 机器;ARM64 属于实验性,没有 GPU 硬件加速)
- 运行后逐项确认安装选项,不要盲选
- 更换安装方式之前,先卸载旧版本
发布页另有"lite"独立压缩包,官方标注其性能会降低、不推荐;如果要用,需要手动运行scripts/add-firewall-rule.bat添加防火墙规则,再用两个 bat 脚本安装后台服务。安装日志位于%TEMP%/Sunshine/logs/install/。
Linux:发行版包优先
- Debian/Ubuntu、Fedora/openSUSE:官方提供 stable 与 beta 两个软件源(DEB/RPM 包),配置好源之后执行
sudo apt install sunshine,或sudo dnf install Sunshine/sudo zypper install Sunshine(包名区分大小写) - Arch:优先用官方 pacman-repo 的预构建包,它已包含 CUDA 支持,无需自己装 CUDA Toolkit;如果走 AUR 自己编译,必须在编译前装好 CUDA Toolkit——编译后再装 CUDA 不会增加 NVFBC 捕获和显存直编码的支持
- Flatpak 与 AppImage:不支持 KMS/DRM 内核级捕获;用 Flatpak 安装后还要执行
flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine同步 udev 规则 - Alpine:包内不含 CUDA 与 NVFBC
macOS:DMG,实验性
下载 arm64(Apple 芯片)或 x86_64 的 DMG,拖进应用程序目录。首次启动会请求屏幕录制与麦克风权限;macOS 14 及以上可以通过 Apple 的 Audio Tap 接口直接捕获系统声音,audio_sink 一项留空即可。该平台不支持手柄,整体定位是实验性。
启动它并让它开机自启
Windows 安装器默认把 Sunshine 注册为后台服务,无需手动启动。Linux 上是用户级 systemd 服务:
# 只启动一次 systemctl --user start app-dev.lizardbyte.app.Sunshine # 设为开机自启 systemctl --user --now enable app-dev.lizardbyte.app.Sunshine不要同时跑两个 Sunshine 实例。想把无显示器的机器改造成串流主机,可以通过 SSH 登录启动(X11 场景):
ssh user@host 'export DISPLAY=:0; sunshine'小结:这一节给你一个正在运行的 Sunshine 进程,后续操作基本都在浏览器里完成。
打开 Web UI,配对第一个客户端
浏览器打开https://localhost:47990(localhost 可换成主机的局域网 IP)。浏览器会提示"网站不安全",这是因为证书是自签的,可以忽略。首次运行会要求你创建用户名和密码——务必记下来,配对时要用。
配对分五步:
- 换主题(可选):用顶栏下拉菜单
- 添加应用:在 Applications 页创建条目;默认的 "Desktop" 条目不执行任何启动命令,点它只会开桌面串流
- 获取客户端:Featured Apps 页里能找到各平台的 Moonlight 客户端入口
- 在 Moonlight 中手动添加这台 PC
- PIN 配对:Moonlight 要求输入 PIN 时,到 Web UI 顶栏的 PIN 页填入 PIN、给设备起名,页面会显示成功提示
应用行为的三个要点:
- 启动新应用时,之前正在运行的应用会被终止
- 预启动命令(prep command)失败会中止启动
- 被启动的程序退出后串流也结束(Desktop 条目不受影响)
- 串流中的快捷键:
Ctrl+Alt+Shift+N隐藏鼠标,Ctrl+Alt+Shift+F1/F12切换串流屏幕 - Windows 双显卡:捕获只来自负责显示的 GPU,想用 eGPU 做捕获加编码,需要给它接上显示器或Dummy 插头并在该屏跑游戏
小结:这一节让你走到"配对成功、能开流"为止。
调低延迟:五个可验证的调整点
延迟的关键不在某一个参数,而在"捕获 → 编码 → 网络"这条链路是否都走得通。
1. 选对"捕获 + 编码"组合
捕获方式决定"怎么拿到画面",编码器决定"用哪个压缩器压画面",两者存在兼容约束。Linux/FreeBSD 官方支持的组合:
| 捕获方式 | 可用编码器 | 说明 |
|---|---|---|
| nvfbc(NVIDIA,仅 X11) | 仅 nvenc | 画面直接写入显存,不支持 Wayland |
| kms(KMS/DRM 内核捕获) | vaapi / vulkan / nvenc / software | 需要 cap_sys_admin 权限 |
| wlr(wlroots 系 Wayland) | vaapi / nvenc / software | |
| x11 | vaapi / nvenc / software | 官方标注最慢、最耗 CPU,能避则避 |
| portal / kwin | 全部 |
Windows 侧通常是 ddx(Desktop Duplication)捕获,搭配 nvenc、quicksync、amdvce 或 software;wgc(Windows.Graphics.Capture)还是 beta,且与服务模式不兼容。对应配置项是 docs/configuration.md 里的capture与encoder,也可以在 Web UI 里搜索。
2. 设定码率与帧率下限
- `
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考