三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

零成本自建云游戏:Sunshine串流服务器完整上手攻略,一台PC全家设备畅玩

零成本自建云游戏:Sunshine串流服务器完整上手攻略,一台PC全家设备畅玩

零成本自建云游戏:Sunshine串流服务器完整上手攻略,一台PC全家设备畅玩

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

如果你正在为「云游戏平台月费越来越贵、游戏库还由别人说了算」而头疼,那么免费开源的Sunshine 游戏串流服务器值得你花十分钟了解一下。它是一款自我托管(Self-hosted)的串流主机端,配合免费的 Moonlight 客户端,就能把家里任何一台 PC 变成你的私人云游戏平台——不交订阅费、不依赖公网云机房,数据全程在你自己的局域网里跑。

为什么我劝你先别急着开云游戏会员

先算一笔现实的账:主流的云游戏服务动辄每月几十元订阅费,热门 3A 大作还要另外购买;延迟取决于服务商机房离你多远,高峰时段画面糊成一团是家常便饭;更关键的是,游戏库是服务商给的,不是你的。你真正想要的,其实只是"在客厅电视上玩我 Steam 库里的游戏"而已。

Sunshine 的解法完全不同:游戏跑在你的电脑上,画面通过编码压缩后传到任意设备。这笔账算下来,差距非常直观:

对比维度商业云游戏平台Sunshine 自托管方案
费用月费 + 游戏单独购买完全免费、开源
游戏库平台精选,随时可能下架你自己的全部 PC 游戏
延迟取决于机房与骨干网局域网内,延迟极低
画质上限受平台码率限制由你的显卡和带宽决定
隐私账号、存档在云端全部数据留在本地网络
自定义几乎为零分辨率、码率、HDR 全可调

一句话总结:云游戏平台卖的是"省事",Sunshine 给的是"完全掌控",而后者成本为零。

它到底是什么:一对分工明确的"串流搭档"

Sunshine 官方定位是Self-hosted game stream host for Moonlight,翻译过来就是"为 Moonlight 而生的自托管串流主机"。理解这个项目,只需要搞清两个角色的分工:

  • Sunshine(主机端):安装在你的游戏 PC 上,负责抓取屏幕画面、调用显卡硬件编码、把输入指令回传给游戏;
  • Moonlight(客户端):安装在手机、平板、笔记本、电视盒子等任意设备上,负责解码画面并采集你的操作。

也就是说,你的 PC 只需要跑一个 Sunshine,全家的设备都能连上来玩。Sunshine 最厚道的地方在于硬件兼容性:它不只支持 NVIDIA,而是把市面上主流编码 API 基本收齐了:

编码方式适用显卡平台
NVENCNVIDIAWindows / Linux
AMFAMDWindows
QuickSyncIntel 核显Windows
VAAPIAMD / Intel / NVIDIALinux / FreeBSD
Video ToolboxApple / IntelmacOS
Vulkan Video各厂商Linux
软件编码任意 CPU全平台

抓屏方式同样覆盖全面:Windows 用 DXGI 桌面复制,Linux 支持 X11、Wayland、KMS/DRM、KWin、XDG Portal 等十余种后端,macOS 用 ScreenCaptureKit。这意味着无论你是什么平台组合,Sunshine 基本都能找到一条可用的采集链路

从零到第一次串流:二十分钟的上手旅程

第一步:按你的系统选一条安装命令

Sunshine 为 Windows、Linux、macOS、FreeBSD 都准备了官方打包,优先用系统自带的包管理器,别折腾源码编译

# Windows:winget 一条命令装好(也可用官方 MSI 安装包) winget install LizardByte.Sunshine # Linux:Flatpak 全发行版通用 flatpak install --system flathub dev.lizardbyte.app.Sunshine # macOS:Homebrew 安装 brew install sunshine # 想自己折腾源码?先克隆仓库再按文档构建 git clone https://gitcode.com/GitHub_Trending/su/Sunshine

⚠️避坑提示:官方文档明确写着 Docker 镜像"不推荐给大多数用户",AppImage 和 Flatpak 则不支持 KMS 抓屏。能用发行版原生包就优先用它,这是官方反复强调的一条建议。

第二步:打开欢迎页,创建你的登录凭据

装好后启动 Sunshine(通常安装为系统服务,会自动运行),浏览器访问http://localhost:47990,你会看到它的欢迎界面。

这里有两个新手最容易踩的坑,提前说清楚:

  • 浏览器会警告"不安全网站",这是自签名 SSL 证书的正常现象,直接忽略
  • 首次登录用默认用户名sunshine创建密码后,务必把凭据记在安全的地方——Web 界面所有配置都靠它,忘了密码只能去终端用sunshine --creds 新用户名 新密码重置。

第三步:在 Moonlight 里配对

  1. 在手机或另一台电脑上安装Moonlight客户端(Windows / macOS / Linux / Android / iOS 都有官方版本);
  2. 客户端里手动添加你的 PC 局域网 IP;
  3. 此时 Moonlight 会显示一个 4 位 PIN 码;
  4. 回到 Sunshine 的 Web 界面,点导航栏的PIN,输入这串数字并给设备起个名字,回车看到 Success 即配对完成。

配对成功后,Moonlight 里就会出现 Sunshine 预置的应用列表,点一下就能开始串流。整个过程 20 分钟内就能跑通,比想象中简单得多。

把核心功能用出价值:四个真实使用场景

场景一:应用管理——把 Steam 大屏模式一键搬进客厅

Sunshine 的Applications页面是它最实用的功能:每个"应用"就是一条启动命令,你可以为任意游戏或程序创建独立的串流入口。预置的Desktop(直接串流整个桌面)和Steam(默认启动 Steam 大屏模式)两个模板开箱即用。

添加自定义应用时,注意两点细节:命令支持环境变量占位(如$(HOME)),且启动参数推荐用 detached 方式运行——比如把steam配成前台 cmd,会导致游戏一退出串流就中断。

场景二:配置搜索——不用翻手册也能精确调参

Sunshine 的配置项很多,但它的Configuration页面内置了实时搜索。比如想开 UPnP 自动端口转发,直接搜 "Upnp" 就能定位到对应开关并保存。

最常用的几个配置,记住就够日常使用了:视频码率(按你的网络带宽给上限)、分辨率与帧率(匹配客户端屏幕)、HDR 开关,以及音频输出设备。

场景三:精选应用——官方帮你把客户端"配齐"

新手最常问"该装哪个客户端",Sunshine 的Featured Apps页面直接给出了答案:Moonlight PC、Moonlight Android、Moonlight Embedded 等官方客户端,以及性能监控、网络诊断、手柄配置等配套工具,一站式列出。

场景四:日志排查——出问题先看这里而不是瞎猜

串流出问题时的第一动作,是打开Troubleshooting标签页看日志。它会按时间列出每条 Info / Warning / Error,还能一键复制,比如Could not open codec这类编码器报错,一眼就能定位是驱动还是配置问题。

加分项:HDR、手柄与快捷键

  • HDR 串流:Windows 端官方支持(需显卡支持 HEVC Main 10 或 AV1 10bit 编码),Linux 端为实验性支持且必须用 KMS 抓屏后端
  • 手柄:Windows 下需先安装ViGEmBus虚拟手柄驱动(Web 界面的 Troubleshooting 页即可一键安装);Linux 下把手柄输入交给系统uinput即可;
  • 快捷键Ctrl+Alt+Shift+N隐藏光标,Ctrl+Alt+Shift+F1~F12切换串流显示器,远程桌面场景很实用。

让画质和延迟兼得:编码与网络的调优思路

Sunshine 会根据你的显卡自动选择编码方案,但手动调对参数能让体验再上一个台阶。一个粗参考:

使用场景分辨率/帧率建议码率
手机/平板局域网1080p 60fps15–25 Mbps
客厅大屏1440p 120fps25–50 Mbps
4K 电视4K 60fps50–100 Mbps

网络方面要破除一个误区:串流看重的不是峰值带宽,而是稳定性。用 iperf3 做一次 60 秒反向 UDP 测试(丢包率低于 5%、抖动低于 1ms 才算健康),比盲目调高码率有效得多。N 卡用户建议在驱动里开启Fast Sync,A 卡用户开启Enhanced Sync,都能再压下一帧延迟。编码实现细节可以参考 src/nvenc/ 目录,里面是各硬件编码器的完整实现。

新手最常踩的六个坑,一次帮你排完

  1. 忘了 Web 界面密码→ 终端执行sunshine --creds 新用户名 新密码重置;
  2. 鼠标键盘连上后没反应→ Linux/FreeBSD 下把运行 Sunshine 的用户加入input组,重新登录生效;
  3. Windows 手柄不识别→ 还没装 ViGEmBus 虚拟手柄驱动;
  4. 客户端死活搜不到服务器→ 检查防火墙是否放行 47990 端口,并确认两台设备在同一局域网;
  5. 画面爆卡、掉帧→ 先降码率或分辨率,再查主机端 CPU/GPU 占用和网络丢包,而不是盲目升级硬件;
  6. 串流偶尔花屏→ 主机网卡 MTU 从 1500 降到 1428 往往能救回来(某些电视客户端的已知问题)。

最后的行动清单与进阶路线

把文章读到这里,你只需要做五件事就能"上车":

  1. 用上文命令在你的游戏 PC 上装好 Sunshine;
  2. 打开localhost:47990完成首次登录和密码设置;
  3. 给常用游戏配置好应用列表(或直接用预置的 Desktop);
  4. 在手机/平板装 Moonlight,完成 PIN 配对;
  5. 跑一次串流,按上文的码率表微调画质。

想深入的话,官方文档都躺在项目里:安装与首次配置看 docs/getting_started.md,逐项参数说明看 docs/configuration.md,排错手册看 docs/troubleshooting.md,性能专项看 docs/performance_tuning.md。

一句话总结:Sunshine 用零成本换来了商业云游戏给不了的掌控感——一次部署,全家设备随时开玩,游戏库永远是你自己的。

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

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

← 返回列表