Sunshine 游戏串流快速上手:5 步从装好到第一次串流跑通
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 游戏串流主机装在你自己的 PC 上:采集本机画面和声音,硬件编码后推给任意 Moonlight 客户端。本文覆盖安装、配对、加应用到第一次串流跑通,外加调参和排障。先立一条硬边界:一台 Sunshine 同时只有一条活跃串流,第二台设备的请求会直接接管当前会话。
🧭 对号入座:先决定这篇值不值得看
- ✅ 适合:主机常开、想让自己的一台设备(手机 / 平板 / 电视 / 另一台 PC)串流主机游戏;Windows 装 MSI 自带系统服务,Linux 是用户级 systemd 服务,macOS 拖
Sunshine.app进 Applications 即可 - ⚠️ 勉强:需要外网访问(得开
upnp或手动转发端口,主机还必须一直开机——它是本地软件,不是云服务) - ❌ 别用:想让两台设备"各看各的",做不到;官方文档明确不推荐普通用户用 Docker 部署,AppImage 和 Flatpak 也不支持 KMS 采集,有发行版包就优先用发行版包
装包命令三平台各一句带过:Linuxsudo apt update && sudo apt install sunshine,Windows 装Sunshine-Windows-AMD64-installer.msi,macOS 拖拽安装后按系统提示授权。从源码构建:git clone https://gitcode.com/GitHub_Trending/su/Sunshine,然后bash scripts/linux_build.sh(macOS 用scripts/macos_build.sh)。
🚀 跑通路线:先主机后客户端
主机侧:装好 Sunshine 并确认服务在跑
最小操作:
systemctl --user --now enable app-dev.lizardbyte.app.SunshineWindows 的 MSI 安装器已带服务;macOS 按提示授予屏幕录制和麦克风权限即可。
这步算过的标志:systemctl --user status app-dev.lizardbyte.app.Sunshine显示active (running)。
卡住了怎么办:浏览器能打开管理界面但状态不对,先查这条状态命令;macOS 上屏幕录制权限没给全,进程起不来或画面黑屏,按系统弹窗授权并选择"Quit & Reopen"。
主机侧:管理界面账号怎么设
最小操作:浏览器打开https://localhost:47990。自签证书,浏览器的安全警告直接点继续。首次登录会要求创建管理员用户名和密码。
这步算过的标志:能登录并看到管理界面首页。
卡住了怎么办:账号密码丢了不用翻配置文件,sunshine --creds 新用户 新密码直接重置。
客户端侧:Moonlight 怎么配对设备
最小操作:Moonlight 里添加主机——同网段会自动发现;发现不了就手动填 Sunshine 本机的局域网 IP。发起连接时客户端会弹出一串 PIN,回到管理界面顶部的 PIN 页面输入这串码,给设备起个名字。
这步算过的标志:PIN 页面出现成功提示,之后 Moonlight 不再要码,设备被记住了。
卡住了怎么办:客户端根本看不到主机,就是网络发现不通,走手动填 IP 这条路,别在"为什么搜不到"上耗时间。
客户端侧:加第一个应用并发起串流
最小操作:Applications 页面点 "Add New",填名字、图标和启动命令,命令支持$(HOME)环境变量展开。新手直接选自带的 "Desktop"——它是特殊应用,不启动任何程序,直接推整个桌面。Moonlight 里选中应用,连接。
应用分两种:cmd型应用进程退出时串流跟着断;detached型命令执行完进程留在后台,断流不杀进程。"关游戏就断流"还是"挂着后台",按你要的行为选。
这步算过的标志:主机画面出现在客户端上,且按键、移动鼠标在主机上有即时响应——第一条串流到此跑通。
卡住了怎么办:画面来了但键鼠没反应,多半是输入链路问题,直接进下面排障板块按关键词查。
🎛️ 参数:先判断,后动数字
一句总判断:编码器只管画质和主机负载,帧率和网络稳定性才决定手感。进配置页直接搜参数名比翻列表快,全部参数定义见 docs/configuration.md。
| 参数 | 默认值 | 什么时候才改 | 推荐起步值 |
|---|---|---|---|
encoder | 自动选第一个可用硬件编码器 | 一般不动;software是 CPU 软编,大屏分辨率下只在负载上吃亏,当最后手段 | 留默认 |
max_bitrate | 0(完全跟随 Moonlight 客户端请求) | 想让 Sunshine 兜底限流时 | 5000(Kbps) |
nvenc_preset | 1(P1,最快) | 官方口径:网络或解码端不受限时别动,直接加码率效果等价 | 留默认 |
两个自问句分流:
- 客户端和主机在不在同一局域网?在:什么都不改,自动发现生效。不在:看下面外网一段。
- 瓶颈是带宽还是编码?带宽不够先压
max_bitrate和分辨率,别先去动编码器。
外网访问:把upnp从默认disabled改为enabled,让路由器自动做端口映射——映射是否成功以日志结果为准,"开了"不等于"成了"。路由器不支持 UPnP 就手动转发:端口基点port默认47989,Web 管理在47990(基点+1)、RTSP 在48010(基点+21),TCP 和 UDP 把47989–48010整段转掉;改基点值整组端口跟着平移。
🩺 出问题:先取证,再分流
总原则一句话:先开 Web 管理界面的 Troubleshooting 页拿实时日志,每条 warning/error 都带上下文,不猜。
| 日志关键词 / 症状 | 分支处置 |
|---|---|
Couldn't bind | 端口被占。同一台机器只能跑一个 Sunshine 实例,停掉多余进程或改port |
Buffer overrun | 网络丢包 / 缓冲溢出,带宽压力大了,压max_bitrate或降分辨率 |
| 完全没声音 | audio_sink要指向正确的回环设备;macOS 14+ 留空即用原生系统音频采集,旧系统装 BlackHole 类虚拟声卡再填设备名;想本机喇叭不出声用virtual_sink |
键鼠 / 手柄没反应(Linux / FreeBSD):sudo usermod -aG input $USER,把用户加进input组后重新登录生效;仍不行看日志里输入设备初始化段。
更细的对照见 docs/troubleshooting.md。
✅ 收工前过一遍
- 已确认编码器是硬件编码,
encoder不是software - 已确认管理员账号已记录,Moonlight 设备已批准并命名
- 已确认
max_bitrate按需设了上限(默认0跟随客户端,兜底值5000) - 已确认外网场景
upnp或手动转发47989–48010端口段已生效 - 已确认主机走有线,客户端在 5 GHz Wi-Fi 或有线环境内
主机亮着,电视黑着——在 Moonlight 上点一下 Desktop,主机桌面应该立刻在屏幕上活过来。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考