Sunshine 游戏串流服务器 30 分钟新手指南:从安装到串出第一帧
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是开源自托管的游戏串流主机,配合 Moonlight 客户端使用:它在你的主机上采集画面、硬件编码,经局域网推送到手机、平板或电视等任意屏幕上。无需账号与订阅,画质上限和数据都留在你的局域网里。
值不值得上手
- 适合谁?想在"另一块屏幕"上观看"强力主机上跑的游戏"的人——主机在书房,笔记本在卧室,电视在客厅,都算。
- 要付出什么?一台主机(Windows / Linux / macOS 实验性 / FreeBSD)+ 一台装了 Moonlight 客户端的客户端设备,两者在同一局域网;安装加配对约 30 分钟。
- 换回来什么?主机的全部性能与硬件编码能力,免费、无订阅,且整条流不离开家庭网络。
与云串流服务的本质区别就一句话:编码跑在你自己的机器上。
动手前备齐
- 主机系统:Windows、Linux、macOS(实验性,暂不支持手柄模拟)或 FreeBSD 之一
- 客户端:手机 / 平板 / 电视盒子 / 另一台电脑,装有 Moonlight 客户端
- 网络前提:两台设备同一局域网;连接稳定比带宽峰值更影响体验
- 权限:Linux 下运行 Sunshine 的用户需属于
input组,否则键鼠、手柄的虚拟输入不可用;macOS 首次启动要允许屏幕录制与麦克风权限 - 编码:NVENC、QuickSync、AMF、VAAPI、VideoToolbox 任选其一即可,全都没有时退回 CPU 软编码
跑通全流程
Sunshine 安装步骤
- Windows:安装官方 Release 的
Sunshine-Windows-AMD64-installer.msi。安装器会自动注册系统服务、开机自启并写入防火墙规则,不用你手动加。 - Linux:用发行版包管理器安装,或从官方 Release 取 deb / RPM / Flatpak / AppImage。
- macOS:把 DMG 里的
Sunshine.app拖进 Applications。
📌 通过信号:安装程序正常退出,无报错弹窗。
Linux 启动 Sunshine 服务
为什么执行:Linux 上 Sunshine 进程不会自己拉起,服务没起,Web 管理页就不响应。
systemctl --user start app-dev.lizardbyte.app.Sunshine启动后用下面这条确认状态,看到 active (running) 就是起来了:
systemctl --user status app-dev.lizardbyte.app.Sunshine想让开机自启,把上面命令里的start换成--now enable再执行一次,效果是"立即启动并注册自启"。
Windows 用户跳过本节(MSI 已注册服务);macOS 用户首次启动Sunshine.app时,把屏幕录制和麦克风授权都点允许,不开这一步,后面采集不到画面。
Flatpak 用户还必须补执行这条,用来同步宿主机的输入依赖规则,不补则键鼠注入缺组件:
flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine执行完连接一次流,键鼠能正常注入即补装成功。
创建 Sunshine 管理员账号
浏览器打开https://localhost:47990。页面报"不安全"是自签名证书所致,忽略即可。首次进入会让你设置管理员用户名和密码——后续配对全靠它,记好。
📌 通过信号:登录成功,顶部导航栏出现 PIN、Applications、Configuration、Troubleshooting 等入口。
Moonlight 配对串出第一帧
客户端打开 Moonlight,它会自动扫到局域网里的 Sunshine。首次连接时 Moonlight 弹出一个四位 PIN 码:回到 Web UI 顶部的 PIN 页输入,顺手给设备起个名字,出现成功提示即配对完成。然后在 Moonlight 里选列表自带的 "Desktop" 条目——它串整个桌面、不启动任何程序。
📌 通过信号:客户端屏幕上出现主机桌面的实时画面,键鼠操作有响应,声音也到位。到这一步,采集、编码、传输、配对四件事全通了。
参数怎么调
默认别动
encoder:自动选第一个可用编码器,日常留空。max_bitrate:默认0,码率完全由 Moonlight 请求说了算。nvenc_preset:默认1(最快)。audio_sink:默认取系统默认声卡,决定"采集哪个声卡"。
什么情况才动
max_bitrate:只想在主机端给带宽封顶时才填数字,例如5000(Kbps)。encoder:自动选择不当时手动填nvenc、vaapi、software等,这是排障手段。nvenc_preset:1(最快)到 7(压缩率最高),只有网络或客户端解码顶不住时才调大。virtual_sink:串流时想静音主机扬声器,用它指向虚拟声卡(一块纯软件设备);直接改audio_sink是错的,那会改变采集源。upnp:默认disabled,只有想走出局域网公网连接时才开。
动了怎么验证
配置页顶部有搜索框,输bitrate就能直达对应设置项,不用翻几百个条目。保存后重开一次串流,观察画质与带宽占用;实际生效的编码器可去 Troubleshooting 页的日志里核对。
组合玩法
- 轻薄本带不动 3A 的人,把它当解码显示端:书房主机跑游戏,串到笔记本或电视,端只负责解码显示。前提:两台设备同一稳定局域网,客户端分辨率按自身屏幕设。
- 不玩游戏的人,把主机变家庭影音节点:串 Desktop 到电视,放本地片源、看网页。前提:
max_bitrate保持默认0,静态内容带宽占用很小,不用拉码率。 - 一家人共用一台主机:每个成员在自己的 Moonlight 设备上独立配对,Web UI 里各记各的设备名。前提:同一时间全局只有一条串流,谁在串谁用,用完退出。
问题定位
Q:https://localhost:47990 打不开?最可能原因:防火墙拦了 47990 端口。 修复:Windows 先确认 MSI 写入的防火墙规则还在;临时关防火墙验证一次,通了再补一条放行 47990 的规则。
Q:Moonlight 发现不了主机?最可能原因:不在同一局域网,或服务没在跑。 修复:Linux 执行systemctl --user status app-dev.lizardbyte.app.Sunshine确认 running,再核对两台设备是否同网段。
Q:串流卡顿、掉帧?最可能原因:网络问题,而不是 Sunshine 本身。 修复:先在主机端跑iperf3 -s起服务,客户端跑iperf3 -c <主机IP> -t 60 -u -R -b 50M反向 UDP 测 60 秒,目标是丢包低于 5%、抖动低于 1ms。
Q:忘了管理员密码?最可能原因:凭据丢失。 修复:不用重装,执行sunshine --creds {新用户名} {新密码}直接重置。
Q:连接后键鼠没反应(Linux)?最可能原因:运行 Sunshine 的用户不在input组。 修复:把该用户加入input组后重新登录。
日志文件位置:Windows 在%ProgramFiles%\Sunshine\config\sunshine.log,Linux / macOS / FreeBSD 在~/.config/sunshine/sunshine.log。Web UI 的 Troubleshooting 页内置日志与告警导航,点告警可直接跳到对应日志段。
带走一句话
- 编码器拿不准就留空,自动选择日常够用,手动指定只留给排障。
max_bitrate为 0 意味着码率听 Moonlight 的,想封顶带宽才需要碰它。- 走出局域网前确认
upnp = enabled,默认disabled,公网连不进来。
下一步动作:现在就拿第二台设备配一次对,再往应用列表里加一条真实游戏,完整走一遍"配对 → 启动 → 串流 → 退出"。
延伸阅读:docs/getting_started.md、docs/configuration.md,各平台采集与编码实现见 src/platform/。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考