Sunshine 实战指南:把游戏 PC 变成三端可用的游戏串流服务器
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一个开源的游戏串流服务器。把它装在自己的游戏 PC 上,同一局域网里的设备就能通过它玩这台 PC 上的游戏。画面和声音都来自你自己的显卡和网卡,不经过任何第三方云。适合想把游戏搬上电视、平板或手机,又不想额外买硬件的人。
它对你有什么用
客厅大屏玩 3A 游戏。Sunshine 跑在游戏 PC 上,电视或电视盒子装 Moonlight 客户端(Sunshine 配套的自由客户端,相当于串流的"接收端")。游戏画面由显卡的硬件编码芯片压成视频流发到电视上。跑 4K 流,官方建议两端都走网线(CAT5e 及以上)。
手机、平板玩 PC 游戏。Moonlight 有 Android、iOS、Windows、macOS、Linux 版本。你在触屏设备或蓝牙手柄上的操作会被送回主机——对主机来说,就像真接了一只 Xbox 或 PlayStation 手柄,游戏按普通手柄识别。
整个桌面也能串。应用列表里加一条 "Desktop" 条目,就能直接串整个桌面,不局限于游戏。键鼠输入同样生效:客户端的键盘鼠标会映射成主机上的虚拟键鼠。
跑起来需要什么
先花两分钟确认硬件,能省掉后面大半的折腾:
| 平台 | 可用的硬件编码器 |
|---|---|
| Windows | NVIDIA NVENC、AMD AMF、Intel QuickSync |
| Linux | NVENC(NVIDIA)、VAAPI(AMD/Intel)、Vulkan Video |
| macOS | VideoToolbox(整个 macOS 平台目前是实验性,手柄不支持) |
| 任意平台 | 软件编码(走 CPU,兜底方案) |
- 系统要求:Windows 11、macOS 14.2+、Linux(Ubuntu 22.04+ / Debian 13+ / Fedora 43+)、FreeBSD 15.1+。
- 网络要求:官方最低标准是主机和客户端都用 5GHz(802.11ac)WiFi;跑 4K 建议有线。
- 客户端必须是 Moonlight 客户端,Sunshine 本身只是服务器端。
最短路径跑起来
官方推荐直接用 releases 页面提供的预编译安装包。Docker 镜像虽然存在,但文档原话是"不推荐给大多数用户"。
# Windows:从官方 releases 页下载 MSI 安装程序,双击安装 # Debian/Ubuntu: sudo dpkg -i sunshine-ubuntu-24.04-amd64.deb # 安装后开启开机自启(Linux 用户级服务): systemctl --user --now enable app-dev.lizardbyte.app.Sunshine # macOS(实验性,手柄不可用): brew tap LizardByte/homebrew && brew install sunshine系统包里没有你的发行版时,可以走 Flatpak(注意它不支持 Linux 的 KMS 抓取);想折腾源码编译的话,需要 CMake 3.25+ 和 GCC 14+,依赖清单在 docs/building.md。
启动后在浏览器打开https://localhost:47990。首次会让你创建用户名和密码,务必记下来。浏览器会提示"不安全网站",那是自签名证书,忽略即可。
接着在客户端设备上装 Moonlight。它的下载入口就在 Sunshine Web UI 的 "Featured Apps" 页里,省得自己找:
在 Moonlight 里添加这台 PC(搜不到就手动填 IP)。Moonlight 会要一个配对 PIN:登录 Sunshine 的 Web UI,在导航栏的 "PIN" 页面输入密码就能看到 PIN,填回 Moonlight 即可,之后就能选游戏开串了。
真正好用的部分
进网页配置面板
几乎所有设置都在 Web UI 里完成,不用手改配置文件(配置文件位置供参考:Linux 在~/.config/sunshine/sunshine.conf,Windows 在%ProgramFiles%\Sunshine\config)。配置项有上百个,好在页面顶部有搜索框,输 "encoder"、"bitrate" 直接定位:
几个值得先认识的选项:
port默认 47989,是一组流媒体端口的基准,改了它整组端口会跟着偏移。upnp控制是否用 UPnP(一种让路由器自动开端口的技术),开着时局域网其他设备更容易连上。encoder强制指定编码器(nvenc、quicksync、amdvce、vaapi、vulkan、software),默认自动选第一个可用的。- 界面主题在导航栏下拉框里切,深浅色随你。
把游戏加进串流列表
"Applications" 页就是应用库,客户端启动的每一条可串项目都在这里:
以 Steam 大屏幕模式为例:Windows 填分离命令steam://open/bigpicture,Linux 填setsid steam steam://open/bigpicture。更多游戏(Epic、原生 exe 等)的填写范例在 docs/app_examples.md。几条规则要知道:
- 启动新应用时,上一个正在串的应用会被终止。
- "prep commands"(启动前命令)失败会直接中止启动。
- "Desktop" 条目比较特殊:不启动任何程序,只开串流。
让客户端手柄变成主机上的真手柄
客户端手柄传上来的不是"按键映射",而是 Sunshine 在主机上创建的真实虚拟手柄。Windows 需要装 Virtual HID Driver(较新版本安装器会引导你装);旧版 ViGEmBus 驱动只是有限兜底,只支持 Xbox 360 和 DualShock 4。Linux 走系统 uinput 接口,连上后没反应就把用户加进input组再重新登录。
Xbox 360/One/Series、DualShock 4/5、Switch Pro 这些主流手柄都能模拟出来,所以大多数游戏不用额外做手柄兼容性设置。
容易踩的坑
docs/troubleshooting.md 里的问题归纳下来主要是这几种:
| 现象 | 原因 | 解法 |
|---|---|---|
| 打不开 Web UI,客户端找不到服务器 | 防火墙挡了端口(Web UI 47990,流媒体端口从 47989 起) | 临时关防火墙验证,再放行对应端口 |
| 连接后手柄没反应 | 虚拟输入驱动或权限缺失 | Windows 装 Virtual HID Driver;Linux 用户加入input组后重新登录 |
| 频繁卡帧,日志出现 buffer overrun | 客户端一段网络更慢,突发数据被中途丢弃 | 用 iperf3 测路,目标丢包 <5%、抖动 <1ms;降码率,优先有线或 5GHz WiFi |
| 忘了 Web UI 密码 | 首次设置的凭据遗失 | 运行sunshine --creds 新用户 新密码重置 |
仍定位不了时,Web UI 的 "Troubleshooting" 页会把日志聚合起来,可以逐条翻警告和错误:
再提醒一个安装方式上的坑:AppImage 和 Flatpak 都不支持 KMS 抓取(Linux 上不依赖桌面环境的直接屏抓接口),需要它的用户请用系统包。
装好包、打开 47990 网页、加几条应用、客户端配对完成,这套串流系统就能用了。具体配置项查 docs/configuration.md,各平台的安装细节查 docs/getting_started.md。遇到问题先看上面的表和 Troubleshooting 页,绝大多数情况能自己定位。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考