Sunshine 游戏串流新手教程:5 步装完串出第一帧
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
书房里的游戏主机配置拉满,人却在客厅,手里只有一台带不动 3A 的轻薄本。想玩又懒得折腾显示硬件,Sunshine 就是干这事的:一个开源自托管的游戏串流主机端,装在自己的主机上采集、编码画面,把实时流推到局域网里任何一台 Moonlight 客户端,全程免费。照下面 5 个步骤做完,客厅那块屏就能直接显示主机桌面并操作。
先弄清它是什么、和云串流差在哪
Sunshine 是一个跑在自家主机上的串流服务端:主机端负责抓屏和编码,你手里手机、平板、电视盒子上的 Moonlight 应用只负责解码播放。
它和云端串流服务的本质区别:编码跑在你自己的显卡上,画面从不出你家路由器,没有账号、没有订阅费。
| 维度 | 内容 |
|---|---|
| 主机端平台 | Windows、Linux、FreeBSD、macOS(实验性,不支持手柄) |
| 编码通路 | NVENC、QuickSync、AMF、VAAPI、Vulkan Video、VideoToolbox,CPU 软编码兜底,默认自动挑第一个可用的 |
| 画面采集 | Windows 走桌面复制 API;Linux 有 KMS、X11、Wayland、KWin、Portal 等后端;macOS 走系统屏幕录制 |
| 管理入口 | 浏览器 Web UI,地址https://localhost:47990 |
| 客户端 | 任意支持 Moonlight 的设备:手机、平板、PC、电视盒子 |
| 费用 | 开源免费,自托管 |
动手前的 30 秒自查
- 主机端和看画面的设备插在同一个家里路由器下(同一局域网)。
- 主机端有一张带硬件编码能力的显卡(NVIDIA、AMD、Intel 都行),没有也能用 CPU 软编码跑,只是吃性能。
- 手边至少还有一台能装 Moonlight 的设备。
- Linux 用户注意:Flatpak 和 AppImage 形态不支持 KMS 采集,有发行版包就优先用发行版包。
串出第一帧的 5 步路径
📌 Step 1|装好主机端程序
- Windows:从项目 Release 页下载
Sunshine-Windows-AMD64-installer.msi双击安装,防火墙规则安装器会自己写入,不用手动加。 - Linux:按发行版装官方 deb、copr 或 pacman 包。
- macOS:把 DMG 里的
Sunshine.app拖进 Applications。
✅ 安装程序正常退出、没有报错弹窗,这步就算过了。
📌 Step 2|把 Sunshine 服务拉起来
Windows 的 MSI 已经把它注册成系统服务、开机自启,直接跳过。Linux 执行:
systemctl --user start app-dev.lizardbyte.app.Sunshine想开机自启,再补一条:
systemctl --user --now enable app-dev.lizardbyte.app.Sunshine✅ 执行systemctl --user status app-dev.lizardbyte.app.Sunshine,输出里状态显示为 active (running) 才算起好。
📌 Step 3|在 Web UI 建管理员账号
浏览器打开https://localhost:47990。页面提示"不安全"属正常现象,自签名证书所致,继续访问即可。首次进入会让你设置管理员用户名和密码,记牢它,后面配对全靠它。
✅ 页面跳到带 Configuration、Applications 选项卡的主界面,账号就建好了。
📌 Step 4|用 Moonlight 端完成配对
在看画面的设备上打开 Moonlight,它会自动扫到局域网里的主机,点它连接。Moonlight 首次连接会弹一个四位 PIN:切回 Web UI 顶部导航的 PIN 页,输入 PIN,顺手给这台设备起个名字,回车。
✅ Moonlight 弹出成功提示,设备列表里能看到你给主机起的名,配对完成。
📌 Step 5|启动 "Desktop",出第一帧
Moonlight 的应用列表里默认自带一条 "Desktop"(串整个桌面、不启动任何程序),点它连接。
✅ 客户端屏幕上出现主机桌面的实时画面,鼠标键盘有响应,声音也出来了——三样都齐,第一帧就串出来了。
新手最常翻车的三个默认行为
⚠️ 启动 Steam 这类进程,流刚开就断
默认行为:被启动的应用一退出,串流跟着终止。Steam 这类启动器会把任务交出去后自己立刻退出,于是流一开就断。什么时候改:你要串流的目标恰好是这种"启动器"应用。改成什么:在该应用的配置里勾上detached(脱离式启动),其他不动。
⚠️ 编码器和码率,默认值就够用
编码器默认是auto,自动选第一个可用的硬件编码通路,日常足够;只有画面卡住、或你要固定某条编码通路排障时,才手动填nvenc、amdvce、vaapi、vulkan或software。max_bitrate默认是0,含义是码率完全由 Moonlight 客户端说了算;只有你想在主机端给带宽封顶时,才改成具体数字,比如5000(Kbps)。配置页顶部有搜索框,输入bitrate这类关键词直达对应项,不用翻菜单。
⚠️ Flatpak 里启动宿主程序找不到目标
默认行为:Flatpak 应用跑在沙箱里,看不到宿主机装的程序。什么时候改:你要启动的目标装在宿主机上。改成什么:给命令加flatpak-spawn --host前缀。另外装完 Flatpak 版必须补一次输入依赖,执行flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine,否则键鼠注入会缺组件。
对号入座:三种场景直接抄
轻薄本跑不动 3A 的人:用客厅的设备当解码端,把书房主机的游戏串过来。前提:两台设备同一局域网,主机端能插网线就插网线。
不玩游戏、只想要一块大屏的人:串 "Desktop" 到电视上放本地片源、刷网页。max_bitrate保持默认0就行,静态画面带宽占用很小,不用往上加码率。
一家人共用一台主机的人:每个成员在自己的 Moonlight 设备上独立配对,Web UI 里各自记设备名。前提就一条——全局同时只有一条串流,谁在串谁在用,用完退出。
出错时先查这张表
| 症状 | 最可能原因 | 一条修复动作 |
|---|---|---|
https://localhost:47990打不开 | 防火墙拦了 47990,或服务没在跑 | 先确认服务 running,再临时关防火墙验证一次,通了就补放行 47990 的规则 |
| Moonlight 发现不了主机 | 不在同一局域网,或服务已停 | Linux 执行systemctl --user status app-dev.lizardbyte.app.Sunshine确认 running,再核对两台设备同网段 |
| 连上后键鼠无响应 | Linux 上运行 sunshine 的用户不在input组 | 把该用户加入 input 组,重新登录生效 |
| 忘了管理员密码 | 凭据丢失 | 不用重装,执行sunshine --creds {新用户名} {新密码}直接重置 |
网络体检:主机端跑iperf3 -s起服务,客户端跑iperf3 -c <主机IP> -t 60 -u -R -b 50M。判断标准:丢包低于 5%、抖动低于 1ms,网络就不是问题;丢包高多半是两头速度不匹配,比如 2.5G 网卡配 WiFi 客户端,把网卡降一档或改回有线,通常立刻见效。再不行打开 Web UI 的 Troubleshooting 页,日志和告警都带导航;日志文件位置——Linux 在~/.config/sunshine/sunshine.log,Windows 在%ProgramFiles%\Sunshine\config\sunshine.log。
收尾:四件马上能做的事
- 编码器拿不准就留
auto,手动指定只留给排障。 max_bitrate = 0等于码率听 Moonlight 的,想封顶带宽才改它。- 要走出局域网串流,先把
upnp改成enabled(默认disabled),否则公网进不来。 - 现在就拿第二台设备走完整流程:配对 → 加一条真实游戏 → 启动 → 串流 → 退出。
想深入:完整参数表见 docs/configuration.md,疑难杂症索引见 docs/troubleshooting.md,各平台编码与采集的实现在 src/platform/ 目录。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考