Sunshine 游戏串流主机 30 分钟从安装到串出第一帧画面
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
场景切入 + 一句话定位
客厅电视很大,主机却塞在书房,抬过来太沉,跨房间拉 HDMI 太乱,再买一块显示硬件更贵。你只想把主机画面推到电视上,坐在沙发上把昨晚的进度续完。
Sunshine 是一个自托管游戏串流主机(self-hosted game stream host):装在这台主机上,负责采集画面、硬件编码,把流推到局域网里任意一台 Moonlight 客户端上。
跑通标准
带着目标往下看,三条全部满足才算成功:
- 在客户端设备(手机、平板、电视盒子都行)打开 Moonlight,主机出现在设备列表里。
- 点进列表里自带的Desktop条目,客户端屏幕上出现主机桌面的实时画面,键鼠操作有响应。
- 主机端装完服务后不需要你做任何额外操作,它在那儿待命。
三条都做到,说明采集、编码、传输、配对四条链路全部打通,后面只是加应用和调参数。
事实速查
| 维度 | 内容 |
|---|---|
| 主机端平台 | Windows、Linux、FreeBSD;macOS 实验性且不支持手柄 |
| 编码通路 | NVENC、QuickSync、AMF、VAAPI、Vulkan Video、VideoToolbox,CPU 软编码兜底,默认自动选第一个可用 |
| 画面采集 | Windows 走桌面复制 API;Linux 可选 NvFBC、KMS、X11、Wayland、KWin、Portal 后端;macOS 走系统屏幕录制 |
| 管理入口 | 浏览器 Web UI,地址https://localhost:47990 |
| 费用 | 开源免费、自托管,无账号无订阅 |
与云端串流的本质区别一句话:编码跑在你自己的机器上,画质上限留在局域网里,隐私和钱都不经过第三方。
最短路径
阶段一:装主机端软件
📌 Step 1|按系统拿安装包
- Windows:到 Release 页面下
Sunshine-Windows-AMD64-installer.msi,双击安装,防火墙规则由安装器自动写入,不用手动加。 - Linux:按发行版选 deb、copr 或 pacman 包。
- macOS:把 DMG 里的
Sunshine.app拖进 Applications。
官方安装包已经把采集后端、编码库、输入驱动都打包好了,你不用自己挑依赖。
📌 Step 2|Flatpak 用户补一步
Flatpak 装完必须再执行下面这条,补装输入依赖,否则键鼠注入会缺组件:
flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine检查点:安装程序正常退出,无报错弹窗。
阶段二:把服务跑起来
📌 Step 3|启动服务
Windows 上 MSI 已把 Sunshine 注册成系统服务并开机自启,这步直接跳过。Linux 手动拉起:
systemctl --user start app-dev.lizardbyte.app.Sunshine想开机自启,再加一条:
systemctl --user --now enable app-dev.lizardbyte.app.SunshinemacOS 首次启动会弹屏幕录制和麦克风授权,两个都点允许,否则后面采集不到画面。
检查点:进程在后台活着。Linux 用systemctl --user status app-dev.lizardbyte.app.Sunshine确认状态为 running。
阶段三:建账号、配对、出画面
📌 Step 4|建管理员账号
浏览器打开https://localhost:47990。页面报"不安全"是正常的,自签名证书所致,忽略即可。首次进入会让你设置管理员用户名和密码——记好,配对全靠它。
📌 Step 5|Moonlight 端配对
客户端设备打开 Moonlight,它会自动扫到局域网里的主机。首次连接 Moonlight 会弹一个四位 PIN 码:回到 Web UI 顶部导航的 PIN 页输入,顺手给设备起个名字,看到成功提示即配对完成。配对建立的是 Moonlight 与主机的信任关系,之后的连接不再要码。
检查点:Moonlight 里点 "Desktop",客户端屏幕出现主机桌面,画面和声音都到位。第一帧,串出来了。
隐性坑点
同一时间全局只有一条流:新串流启动会默认终止上一个在跑的应用,同时只有一条。共用时谁在串谁用,用完退出会话。
Steam 这类启动命令别直写:Steam 进程会立即退出,流刚开就断。在应用配置里勾上detached(脱离式启动)。
Flatpak 环境忘加前缀:沙箱里找不到宿主程序,命令必须加flatpak-spawn --host前缀。
应用路径别写死:路径支持$(HOME)这类环境变量写法,写死路径换用户就失效。
想静音主机扬声器别动audio_sink:它决定采哪个声卡,改了就换了采集源。改用virtual_sink指向虚拟声卡。
新应用在这一页添加。三个关键参数,只在需要时动:
max_bitrate:默认0,含义是码率完全由 Moonlight 请求说了算 → 只有想在主机端给带宽封顶时才改 → 比如5000(Kbps)。encoder:默认自动选第一个可用编码器 → 只有排障时才手动指定nvenc、amdvce、vaapi、vulkan、software→ 日常留空。nvenc_preset:1(最快)到7(压缩率最高),默认1→ 只有网络或客户端解码顶不住时才调大 → 多数情况下提高码率比调 preset 划算。
配置页顶部有搜索框,几百个设置项直接输bitrate就能定位,不用翻菜单。
对号入座
- 如果你是轻薄本显卡带不动 3A 的人:用它当解码显示端,串流书房主机跑游戏。前提:两台设备同一局域网且网络稳定,客户端分辨率按自身屏幕设即可。
- 如果你不玩游戏、只想要一块大屏:主机当家庭影音节点,把 Desktop 串到电视上放本地片源。不用动编码参数,静态内容带宽占用很小。
- 如果你是一家人共用一台主机:每个成员在自己的 Moonlight 设备上独立配对,Web UI 里各记各的设备名。前提:所有人同一局域网。
故障速查
| 症状 | 最可能原因 | 一条修复动作 | 验证方式 |
|---|---|---|---|
https://localhost:47990打不开 | 防火墙拦了 47990 | Windows 先确认 MSI 写入的防火墙规则还在,临时关防火墙验证一次 | 重新开启防火墙后页面仍可打开 |
| Moonlight 发现不了主机 | 不在同一局域网,或服务没在跑 | Linux 执行systemctl --user status app-dev.lizardbyte.app.Sunshine确认 running,再核对两台设备同网段 | Moonlight 设备列表出现主机 |
| 串流卡顿、掉帧 | 大概率是网络,不是 Sunshine | 跑 iPerf3 体检,命令见下 | 丢包低于 5%、抖动低于 1ms |
| 忘了管理员密码 | 凭据丢失 | sunshine --creds {新用户名} {新密码}直接重置 | 用新凭据登录 Web UI |
体检先在主机端起服务端:
iperf3 -s客户端侧测速(把主机 IP 换进去,UDP 反向测 60 秒):
iperf3 -c <主机IP> -t 60 -u -R -b 50M目标值:丢包低于 5%、抖动低于 1ms。丢包高的典型诱因是"两头速度不匹配",比如 2.5G 网卡配 WiFi 客户端:降一档网卡速率,或把主机改回有线,通常立刻见效。
还不解,看日志:Web UI 的 Troubleshooting 页内置日志与告警导航;日志文件 Windows 在%ProgramFiles%\Sunshine\config\sunshine.log,Linux/macOS/FreeBSD 在~/.config/sunshine/sunshine.log,Docker 用docker logs sunshine。
收尾 + 下一步
- 稳定性比峰值带宽更决定体验:动手调画质之前先跑一次 iPerf3。
- 编码器自动选择日常够用:手动指定只留给排障场景。
- 码率 0 等于听客户端的:只有要封顶带宽才去碰
max_bitrate。 - 想走出局域网先开门:
upnp默认disabled,公网连不进来,确认改成enabled。
现在就拿第二台设备配一次对,再往应用列表里加一条真实游戏,完整走一遍"配对 → 启动 → 串流 → 退出"。
想深入:完整参数表见 docs/configuration.md,疑难杂症索引见 docs/troubleshooting.md,各平台采集与编码实现在 src/platform/ 目录。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考