Sunshine 快速入门指南:Moonlight 串流主机完整上手手册
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是自托管游戏串流主机:装在自己的 PC 上,把画面、音频和手柄输入推给任意 Moonlight 客户端,电视、手机、另一台电脑都能当屏幕。边界先讲清:一台 Sunshine 同一时间只维持一条活跃串流,第二台设备发起连接会顶掉当前会话。
🧠 30 秒建立心智模型
把 Sunshine 想成你自己机房里的一间「直播棚」:它负责抓屏、硬编码、打包推流;Moonlight 客户端是「电视机」,只负责解码播放。串流主机和播放端分工明确,你调参数永远只调「棚」这一侧。
能做什么
- 用 GPU 硬件编码(
nvenc/quicksync/amdvce/vulkan/vaapi)推 1080p、4K 视频 + 系统音频 - 把键盘、鼠标、手柄输入反向送进主机上的游戏
- 提供
https://localhost:47990的 Web 管理面板,管理应用、设备、配置 - 同网段内 Moonlight 自动发现主机,零配置连接
- 外网场景下用
upnp让路由器自动开端口映射
不能做什么
- 不能多人同时各看各的:只有一条活跃串流,带宽也不会"平分"
- 不自带播放端,必须搭配 Moonlight 客户端(各平台入口在 Web 面板 Featured Apps 页)
- macOS 目前不支持虚拟手柄;Linux 上 HDR 串流仍是实验性支持
最小闭环:5 步到第一帧画面
第 1 步:安装 Sunshine
Windows 装官方 MSI 安装包(自带系统服务,装完即自启);macOS 把Sunshine.app拖进 Applications,首次启动授予屏幕录制、麦克风权限;Linux 加官方源后装包:
sudo apt update && sudo apt install sunshine验证信号:Windows 任务栏托盘出现 Sunshine 图标;macOS 菜单栏出现图标;Linux 跳到第 2 步。想从源码构建的,clone 仓库(https://gitcode.com/GitHub_Trending/su/Sunshine)后 Linux 执行bash scripts/linux_build.sh,macOS 执行scripts/macos_build.sh。
第 2 步:启动 Linux 用户级服务
systemctl --user --now enable app-dev.lizardbyte.app.Sunshine验证信号:命令无报错返回,且systemctl --user status app-dev.lizardbyte.app.Sunshine显示active (running)。
第 3 步:设定管理员账号
浏览器打开https://localhost:47990。自签证书会有警告,点继续即可。首次访问要求设定管理员用户名和密码——务必写下来,丢了只能翻配置文件找回。
验证信号:输入用户名密码后登录成功,进入串流主界面。
第 4 步:批准 Moonlight 设备
Moonlight 客户端里手动添加主机(填 Sunshine 本机的局域网 IP),发起连接时客户端会弹出一串 PIN。回到 Sunshine 面板顶部的 PIN 页面输入这串码、给设备起个名字、确认。
验证信号:PIN 页面出现批准成功提示,此后这台设备被记住,不用再输。
第 5 步:添加第一个应用并串出第一帧
进 Applications 页面点 "Add New",填名字、图标、启动命令。命令支持环境变量展开($(HOME)会替换为$HOME的值)。Steam 游戏建议选detached类型,否则串流结束游戏进程会被直接杀掉。
验证信号:新应用出现在应用列表里;Moonlight 客户端点开它,电视/手机出现主机画面且声音正常——闭环完成。
场景化调参:一个表定参数
核心判断只有一条:编码器决定画质和负载,帧率决定手感。进配置页直接用顶部搜索框搜bitrate、encoder、upnp,比翻长列表快。
| 场景 | 关键参数 | 推荐值 | 取值理由 |
|---|---|---|---|
| 客厅电视 | encoder | 不填(自动选第一个可用硬编码器) | software软编在电视大屏分辨率下 CPU 会先崩 |
| 客厅电视 | max_bitrate | 0,或兜底5000 | 0表示完全跟随 Moonlight 客户端请求,想限流再设 5000 |
| 客厅电视 | nvenc_preset | 1 | P1 是 NVENC 最快档,低延迟优先;带宽紧张再上调换压缩效率 |
| 手机/平板 | 分辨率/帧率(客户端侧) | 720p–1080p,60 帧 | 客户端解码器和屏幕是瓶颈,先降分辨率测帧率稳定 |
| 手机/平板 | nvenc_preset | 1 | 编码延迟最低 |
| 外网远程 | max_bitrate | 3000–5000 | 上行带宽是硬瓶颈,画质参数全部让位 |
| 外网远程 | nvenc_preset | 2及以上 | 牺牲一点延迟换压缩效率,码流更省 |
| 外网远程 | upnp | enabled | 默认disabled;路由器不支持 UPnP 时改手动转发 |
手动转发的端口全集(基端口47989,由源码端口偏移推出):TCP47984(客户端 HTTPS)、47989(客户端 HTTP)、47990(Web 面板)、48010(RTSP 信令);UDP47998(视频)、47999(控制)、48000(音频)。光猫+路由的双层 NAT 结构,两层都要转。参数逐项含义见 官方配置文档。
故障速查:顺着分岔问下去
出问题先看 Web 面板Troubleshooting页——实时日志就在里面,每条 warning/error 都带上下文。
Q1 客户端能不能看到主机?同网段却没被发现 → 在 Moonlight 里手动填主机 IP 添加。能发现但连不上 → 进 Q2。
Q2 是网络问题还是参数问题?主机是否插了网线、客户端是否走 5 GHz Wi-Fi 或有线?否 → 先换线/换频,多数"卡顿"到此为止。是 → 进 Q3。
Q3 帧率稳不稳?把分辨率降到 720p 测:稳了 → 瓶颈在带宽,逐级升分辨率定位拐点;仍不稳 → 编码过载,把nvenc_preset降回低档或降到 30 帧。
Q4 有没有声音?配置里的audio_sink是否指到正确的回环设备?否 → 改成对应设备名。是 → macOS 用户确认装了 BlackHole 这类虚拟声卡且 Sunshine 有麦克风权限。
Q5 键鼠/手柄没反应?Linux 用户:运行 Sunshine 的用户在input组里吗?否 → 加组并重新登录才生效。是 → 看日志里输入设备初始化段的报错。
Q6 外网到底通没通?upnp = enabled不等于映射成功——查日志里的 UPnP 映射结果。失败 → 按上文端口清单手动转发,双层 NAT 检查光猫和路由两层。更多细节对照 官方排障文档。
上线前决策清单
硬件与网络
- 主机走有线;所有客户端在 5 GHz Wi-Fi 或有线环境内
- 编码器确认是硬件编码(
encoder非software)
账号与设备
- 管理员密码已记录在安全处
- Moonlight 设备已批准并命名,再次连接无需 PIN
- 第二个设备发起连接前已知晓:它会顶掉当前串流
参数与外网
max_bitrate已按需设置:保持0或兜底5000- 外网场景:
upnp开启且日志确认映射成功,或 TCP 47984–47990/48010 与 UDP 47998–48000 手动转发生效 - 常驻类应用(如 Steam 本体)已设为
detached,避免退出串流时被杀进程
打开电视,从 Moonlight 里点开你的第一个应用,等第一帧画面亮起来。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考