Sunshine 游戏串流主机完整教程:30 分钟免费配对,串出第一帧画面
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
你瘫在沙发上想续昨晚的游戏,主机却塞在书房桌下——抬机器太沉,跨房间拉 HDMI 太乱。Sunshine 是一款自托管游戏串流主机:装在主机上,用显卡硬件编码采集画面,经局域网把流推到 Moonlight 客户端。照这篇文章做完,你在第二台设备上配对一次,30 分钟内就能把主机的画面和声音串到手里。
先问自己 3 个问题
Q1:主机有没有硬件编码?NVIDIA、AMD、Intel 带硬编码(NVENC / AMF / QuickSync / VAAPI)最理想;纯 CPU 也能跑,会落到软编码,帧率上限低一些。
Q2:两台设备在同一个局域网吗?主机和客户端在同一个路由器的网段里体验最好;跨网段、跨公网要先处理upnp和 NAT,不是本文覆盖的范围。
Q3:要花多少钱?免费,自托管,无账号、无订阅。唯一成本是时间:安装加配对大约 30 分钟。
| 项目 | 说明 |
|---|---|
| 主机平台 | Windows、Linux、macOS(实验性)、FreeBSD |
| 采集与编码 | NVENC、QuickSync、AMF、VAAPI、Vulkan Video、VideoToolbox,CPU 软编码兜底,默认自动选第一个可用 |
| 费用 | 免费,自托管,无账号无订阅 |
| 管理入口 | 浏览器 Web UI,https://localhost:47990 |
| 开源协议 | GPL v3 |
| 配套客户端 | Moonlight,装在显示端设备上 |
它和同类方案的本质区别一句话:云端串流在厂商服务器上编码,Sunshine 的编码跑在你自己的机器上,画质上限和你的数据都留在局域网里。
手把手跑通:从安装到出画面
装上主机端
目标:把 Sunshine 装到主机上。
- Windows:到官方 Release 页面下
Sunshine-Windows-AMD64-installer.msi,双击安装。 - Linux:按发行版选 deb、RPM、Flatpak 或 AppImage 安装。
- macOS:把 DMG 里的
Sunshine.app拖进 Applications。macOS 是实验性且不支持手柄,想用手柄请用 Windows 或 Linux 主机。
验证门:执行安装,安装程序正常退出、无报错弹窗即通过。
把串流服务跑起来
目标:让 Sunshine 作为常驻服务在后台跑。
Windows 的 MSI 已把 Sunshine 注册成系统服务并开机自启,这步直接跳过。Linux 手动拉起:
# 启动用户级服务 systemctl --user start app-dev.lizardbyte.app.Sunshine # 想开机自启,再补这一条;不想做可以跳过 systemctl --user --now enable app-dev.lizardbyte.app.SunshinemacOS 首次启动会弹屏幕录制和麦克风授权,都点允许,否则采集不到画面。
Flatpak 用户装完必须补一条输入依赖,否则键鼠注入缺组件(不想做可以跳过,但跳过后键鼠不生效):
flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine验证门:执行systemctl --user status app-dev.lizardbyte.app.Sunshine,看到状态显示 running 即通过。
建管理员账号,配出第一帧
目标:让 Moonlight 和主机认下对方。
- 浏览器打开
https://localhost:47990。页面报"不安全"是自签名证书所致,忽略即可。 - 首次进入会让你设置管理员用户名和密码,记好,配对全靠它。
- 客户端设备打开 Moonlight,它会自动扫到局域网里的主机。首次连接弹一个四位 PIN,回 Web UI 的 PIN 页输入,顺手给设备起个名字。
验证门:执行 Moonlight 点 "Desktop",看到客户端屏幕上出现主机桌面、画面和声音都到位即通过。
文档没明说、但你一定会踩
- 全局只有一条流。同一时间整个主机只允许一条串流,新串流一起来,上一个应用直接被终止。多人共用时谁连着谁用,不需要你做任何仲裁。
- 默认留空不是没配置。
encoder留空 = 自动选第一个可用的编码器,手动填nvenc、amdvce、vaapi、vulkan、software只是排障手段。max_bitrate默认 0 = 码率完全由 Moonlight 的请求说了算,只有想给带宽封顶才填具体数,比如 5000(Kbps)。 - 启动器类应用要勾 detached。Steam 这类启动后进程会立即退出的启动器,不勾
detached脱离式启动,流刚开就断。Flatpak 里串宿主程序还要加flatpak-spawn --host前缀,沙箱内直接找不到目标。 - 多声卡时默认值会骗你。
audio_sink默认取系统默认设备,它决定的是"采哪个声卡"。串流时想静音主机扬声器,别改它,改用virtual_sink指向虚拟声卡。Linux 上可以先跑pactl info | grep Sink查名字再填。 - macOS 手柄用不了。macOS 端是实验性,暂不支持手柄模拟。想用手柄串流,换 Windows 或 Linux 主机。
出事了按这个顺序来
https://localhost:47990打不开→ 大概率防火墙拦了 47990。第一步:临时关一次防火墙验证,确认是它再补放行规则。- Moonlight 发现不了主机→ 不同网段或服务没在跑。第一步:Linux 执行
systemctl --user status确认 running,再核对两台设备是否同网段。 - 串流卡顿、掉帧→ 大概率是网络,不是 Sunshine。第一步:跑一次下面的网络体检。
- 忘了管理员密码→ 不用重装。第一步:直接重置凭据:
# 重置管理员用户名和密码,替换成你的新值 sunshine --creds 新用户名 新密码网络体检:主机端起服务,客户端侧 UDP 反向测 60 秒(<主机IP>换成你的主机地址),目标是丢包低于 5%、抖动低于 1ms:
# 主机端:启动 iperf3 服务 iperf3 -s # 客户端:测速 60 秒 iperf3 -c <主机IP> -t 60 -u -R -b 50M丢包高的典型诱因是"两头速度不匹配",比如 2.5G 网卡配 WiFi 客户端:降一档网卡速率或把主机端改回有线,通常立刻见效。
日志文件位置:Windows 在%ProgramFiles%\Sunshine\config\sunshine.log;Linux/macOS/FreeBSD 在~/.config/sunshine/sunshine.log;Docker 用docker logs sunshine。
它最适合这三类人
- 轻薄本带不动 3A 的人:笔记本当解码显示端,串流书房主机跑游戏。前提:两台设备同一局域网且网络稳定。
- 不玩游戏、只想要大屏的人:主机当家庭影音节点,把 Desktop 串到电视上看片、看网页。前提:静态内容带宽占用很小,
max_bitrate保持默认 0 即可。 - 一家人共用一台主机的人:每个成员在自己的 Moonlight 设备上独立配对。前提:同一时间只有一条流,谁在串谁用,用完退出。
装完立刻可做的四件事
- 先测网络再调画质:动手改任何参数前,先跑一次 iPerf3,稳定性比带宽峰值更决定体验。
- 编码器拿不准就留空:自动选择日常够用,手动指定只留给排障。
- 码率封顶才碰
max_bitrate:为 0 意味着码率听 Moonlight 的。 - 走出局域网前确认
upnp = enabled:默认是 disabled,公网连不进来。
现在就可以做:拿第二台设备配一次对,再往应用列表里加一条真实游戏,完整走一遍"配对 → 启动 → 串流 → 退出"。
想再深入:完整参数表、疑难杂症索引、编码与采集的平台源码。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考