Sunshine 游戏串流服务器实战指南:把 PC 游戏免费投到电视和手机
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
你花大几千配的那台游戏 PC,显卡一天里超过 23 小时在空转。而 Sunshine 是一款开源的游戏串流服务器:它把 PC 画面实时编码成视频流,通过局域网送到电视、平板或手机,配合 Moonlight 客户端,本地游戏库就能在客厅直接开玩——零订阅、零按游戏收费,从安装到连上通常只要 10 分钟。
为什么你的游戏库"困"在一块屏幕前
先算一笔账:云游戏订阅一年几百块,能玩什么看平台脸色,还受公网带宽限制;再买一台掌机或主机,3000 元起步,游戏库和 PC 的还是两摊事;每次想投屏就把台式机拖进客厅,更不现实。
三条路都在为"换块屏幕玩游戏"付费。其实还有第四条:你的主机本来就够强,缺的只是把画面和手柄信号送出去的一条管线。Sunshine 补的就是这条管线,它沿用 NVIDIA GameStream 时代的成熟协议,服务端开源,客户端 Moonlight 各平台免费,你只需要一台愿意常开的电脑。
画面是怎么"搬"到另一块屏幕的
把主机 PC 想象成一个直播间:每一帧屏幕画面(60 fps 时约 16 ms 一帧)被实时编码成视频,经局域网这条"直播线路"推给电视端的 Moonlight;你按下手柄的每个键,再以指令的形式发回"直播间",主机照着执行。
这个方案能否做到低延迟,关键在编码这一步有没有甩给 CPU:
- NVIDIA 显卡走 NVENC,AMD 走 AMF,Intel 走 QuickSync,Linux 下还有 VAAPI,macOS 用 Video Toolbox;
- 这些 GPU 上的专用硬件编码器几乎不吃 CPU 资源,编码延迟小,画面才有"跟手"的感觉;
- 协议、服务端、客户端三样都不收费,所以整套链路没有过路成本。
原理就一句话:编码交给显卡,传输走局域网,剩下的事是装好它、配对上它。
从安装到第一次连上
1. 安装 Sunshine
三种平台各取最省事的方式,细节见 docs/getting_started.md:
- Windows:从官方发布页下载 MSI 安装包,双击安装即可;
- Linux 桌面:优先用 Flatpak,一条命令装完,依赖不污染系统;
- macOS:
brew tap LizardByte/homebrew后brew install sunshine(注意 macOS 版本目前是实验状态,手柄暂不支持)。
flatpak install --user flathub dev.lizardbyte.app.Sunshine装完运行一次 Sunshine(Windows 安装版默认注册为服务,自动在后台跑)。
2. 打开 Web 管理面板
浏览器访问https://localhost:47990(证书是自签的,浏览器提示"不安全"属正常现象,点继续即可)。默认用户名sunshine,首次进入会让你设一个密码——这个密码同时用于后续客户端配对,记牢它。
3. 添加要串流的应用
进入 Applications 页面,列表里已经自带一条Desktop(桌面)——什么都不配,你也能先远程操控整个电脑桌面。想单独串某个游戏,点Add New,填名称、可执行文件路径和启动参数,保存即可。
4. 配对 Moonlight 客户端
在手机、平板或电视上装 Moonlight,确保与主机在同一局域网。打开客户端会自动发现 Sunshine,此时它会要一个 4 位 PIN 码——在 Web 面板顶部的 PIN 页签里能看到,输入、回车、给设备起个名字,授权完成。
💡 之后想再放行一台新设备,不需要人在主机旁:任何设备的浏览器打开
:47990就能读 PIN、做授权。
连不上时:按顺序查这 4 件事
现象:Moonlight 发现不了主机。原因:防火墙拦了端口,或两台设备不在同一网段。解法:放行47989(串流基础端口)到47990(Web 面板)这一段,确认设备同在一个局域网。
现象:能连上但画面卡、按键迟滞。原因:串流对网络稳定性比带宽更敏感,抖动和丢包才是元凶。解法:用 iperf3 在主机跑服务端iperf3 -s,客户端跑这条命令测 60 秒 UDP:
iperf3 -c <主机IP> -t 60 -u -R -b 50M丢包高于 5%、抖动超过 1 ms 就不达标,先降分辨率和码率再谈其他。完整方法在 docs/troubleshooting.md。
现象:手柄有信号但游戏里没反应。原因:主机上直连的实体手柄抢了"第一手柄"的位置,Steam 也没走通用识别。解法:Steam 设置里只保留"通用手柄"支持,并在串流时停用物理手柄,让 Sunshine 注入的虚拟手柄成为唯一输入源。
现象:Web 面板忘了密码,进不去了。原因:密码同时是面板口令和配对凭据,没有找回通道。解法:不必重装,在主机上执行这条命令直接重置:
sunshine --creds 新用户名 新密码✅ 以上都排查完还有问题,Web 面板的 Troubleshooting 页签会实时滚动日志,报错写得相当直白,比如编码器缺失会直接点名,比翻论坛快得多。
自托管串流值不值:和另两条路对比
| 决策维度 | Sunshine + Moonlight | 云游戏订阅 | 另买一台掌机/主机 |
|---|---|---|---|
| 持续花费 | 0 元 | 月费/年费,常年累积 | 机器 + 每个游戏的单价 |
| 游戏库 | 本地全部游戏,想串什么串什么 | 仅限平台上架内容 | 新平台库,旧作另买一遍 |
| 延迟水平 | 局域网内通常个位数毫秒级 | 受公网与机房位置影响 | 原生,无串流环节 |
| 网络要求 | 同一局域网即可 | 需稳定上行公网带宽 | 无 |
| 限制 | 主机必须开机 | 内容受平台控制 | 只能玩该平台的库 |
结论很清楚:设备和屏幕都在同一屋檐下,Sunshine 就是成本最低的那条路;追求极致便携、游戏库又不在 PC 上,才需要考虑云订阅或新硬件。
回到开头那台"待机 23 小时"的主机——装好 Sunshine 之后,客厅电视、卧室平板、出差路上的手机都只是它的一块"外接屏",游戏库一次购买,处处开玩。想动手的话,从这里开始:
git clone https://gitcode.com/GitHub_Trending/su/Sunshine装完跑起来之后,逐项调参看 docs/configuration.md,想深入源码编译或定制构建再看 docs/building.md。下一局游戏,别让它只开在一块屏幕上。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考