Sunshine 游戏串流:十分钟把游戏画面推到第二块屏幕
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
主机在书房,屏幕却在卧室。搬机器太重,再买一台太贵。Sunshine 游戏串流服务器能把这台 PC 变成家里的"发射塔":画面在主机上硬件编码,走局域网推到任何装了 Moonlight 客户端的设备上。读完这篇,你能亲手完成安装、配对、添加游戏,把画面推上第二块屏幕。
痛点与替代对比
| 维度 | 传统方式 | 用 Sunshine |
|---|---|---|
| 想在别的设备上看 | 搬主机、重插线 | 装个 Moonlight 客户端 |
| 多加一块屏幕 | 买显示器加布线 | 配对、选应用即可 |
| 费用 | 硬件投入或订阅 | 开源免费、自托管 |
| 画质与隐私 | 云端中转 | 局域网直连,自己说了算 |
环境与硬件速查
支持平台:主机端 Windows、Linux、macOS(实验性,暂不支持手柄)、FreeBSD;客户端跟 Moonlight 走,手机、平板、盒子、电视都行。
编码方案:NVENC(NVIDIA 硬件编码)、QuickSync(Intel)、AMF(AMD)、VAAPI、Vulkan、VideoToolbox(Apple),外加 CPU 软编码兜底,自动挑第一个可用的。
采集方式:Windows 走桌面复制 API;Linux 可选 NvFBC、KMS、X11、Wayland、KWin、Portal;macOS 走系统屏幕录制。
部署方式:装包或服务化运行,全部配置在浏览器 Web UI 里完成,不用碰命令行。
费用:开源免费,一次安装长期用,无账号、无订阅。
最小可行路径
Step 1|装主机端。Windows 下载官方 MSI 安装包,双击安装、组件按需勾选,防火墙规则由安装器写好;Linux 按发行版走 deb、copr 或 pacman 包,Flatpak 装完再补跑一次flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine装输入依赖;macOS 把Sunshine.app拖进 Applications。
Step 2|启动服务。Windows 装完已注册为服务、开机自启;Linux 手动拉起来:
systemctl --user start app-dev.lizardbyte.app.SunshineStep 3|打开 Web UI 建账号。浏览器访问https://localhost:47990,提示"不安全"属正常(自签名证书),点继续即可。首次进入会要求你输入管理员用户名和密码,记牢它,后面配对全靠这套凭据。
Step 4|配对新设备。在客户端设备上打开 Moonlight,它会自动发现局域网里的 Sunshine;首次连接弹出四位 PIN 码,回 Web UI 顶部导航的 PIN 页输入并给设备命名,看到成功提示就算通了。之后在 Moonlight 里选中默认自带的 Desktop 应用,画面就推上来了。
跑通之后紧接着做什么
添加第一个游戏。进 Applications 页,点新建:填应用路径、工作目录和启动参数,支持$(HOME)这类环境变量写法。
注意:会立即退出的进程(如直接拉steam)要用detached启动方式,否则串流马上断;Flatpak 版应用命令要加flatpak-spawn --host前缀,否则在沙箱里找不到宿主程序。
用搜索框直达设置。配置页顶部有搜索框,输bitrate立刻定位码率,输encoder立刻定位编码通路,几百个设置项不用一页页翻。
了解并发规则。新串流会终止上一个正在跑的应用,同一时间只有一个在跑。
注意:想找回 Desktop 项,新建一个名为 "Desktop" 的应用即可,它不启动任何程序、直接开流。
参数调优:只改这几个
max_bitrate(Kbps)默认0,表示完全采用 Moonlight 端请求的码率;想给主机封顶带宽时才改,比如设成5000。encoder默认自动选第一个可用编码器;想锁定时手动填nvenc、quicksync、amdvce、vaapi、vulkan或software,多数时候别动它。nvenc_preset(1~7)默认1最快,数字越大压缩率越高、延迟越大,只在网络或解码端顶不住时才往大调。upnp默认disabled;只有远程串流(跨网络访问)时才改成enabled,让 47990 等端口自动转发。audio_sink默认用系统默认音频设备,留空即可;多声卡设备时才填具体设备名,Linux 上可用pactl info | grep Sink查名字。
常见卡点速查
Web UI 打不开——最可能是防火墙拦了端口。先确认 Windows 安装时防火墙规则已写入,不行就临时关防火墙验证一次,通了再回头放行 47990。
客户端发现不了主机——通常是两台设备不在同一网段,或服务根本没在跑。Linux 上一条命令验证:
systemctl --user status app-dev.lizardbyte.app.Sunshine确认在运行且网络同段,还不行就重启服务和路由器。
串流卡顿、掉帧——先怀疑网络而不是 Sunshine。用 iPerf3 做一次体检:主机端起iperf3 -s,客户端跑iperf3 -c {主机IP} -t 60 -u -R -b 50M,理想是丢包低于 5%、抖动低于 1ms。两头速度不匹配(比如 2.5G 网卡配 WiFi 客户端)是典型诱因,降一档网卡速率或把主机改有线通常立竿见影。
忘记密码——不用重装,sunshine --creds 新用户 新密码直接重置。
还搞不定就翻日志:Web UI 的 Troubleshooting 页直接展示警告和错误,Windows 日志在%ProgramFiles%\Sunshine\config\sunshine.log,Linux / macOS 在~/.config/sunshine/sunshine.log。
带走这几句
- 网络稳定性比带宽峰值更决定体验——先跑一次 iPerf3 再谈画质。
- 编码器拿不准就留空——自动选择足够聪明,手动指定是排障手段,不是日常操作。
max_bitrate为 0 意味着码率听 Moonlight 的——想封顶带宽才需要碰它。- 远程串流前先确认
upnp = enabled——默认是关的,公网地址连不进来。
继续深入
完整参数表见 docs/configuration.md,疑难杂症索引在 docs/troubleshooting.md,想看各平台编码与采集怎么实现的,直接翻 src/platform/。现在就把第二台设备配上 Moonlight 配对一次,顺手给应用列表加一条真实游戏,线可以慢慢收,画面先串起来。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考