Sunshine 游戏串流服务器完整实战:5 步跑通自托管串流与 Moonlight 配对
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一款完全开源的自托管游戏串流服务器,它把游戏 PC 本身变成串流主机,搭配免费的 Moonlight 客户端,就能用手机、平板、电视或另一台电脑玩主机上的游戏。不经过云端、不产生会员费用,数据全程留在自己的设备里。本文面向新手玩家,讲清从部署主机、配对客户端到调出可用画质的完整链路。
动手前的核对清单:显卡、客户端与网络自检
动手写第一条命令之前,先逐项确认下面四项。它们都是前置条件,缺哪一项,后面就会以对应症状的形式冒出来。
- 显卡:具备硬件编码单元,NVIDIA / AMD / Intel 独显或集显均可;没有硬件编码也能退回 CPU 软件编码,功能不受影响,但占用明显更高
- 客户端:准备接收画面的设备上已装好 Moonlight(手机、平板、电脑、电视盒子都行)
- 网络:主机与客户端处于同一局域网;涉及远程访问时,家里路由器需支持 UPnP
- 端口:47984–47990(TCP)与 48010(UDP)未被防火墙拦截,前者承载串流,后者用于设备发现
四项都勾上即可直接部署;缺哪项就先补哪项,比装完再排错省事得多。
Sunshine 安装:三种方式对比与推荐路线
三种部署方式效果等价,差别只在于系统适配和你对折腾的接受度,按表选一种即可。
| 方式 | 适用场景 | 特点 |
|---|---|---|
| 包管理器 | Ubuntu / Debian / Arch 等主流发行版,Windows 与 macOS 官方安装包 | 一条命令装完,依赖和服务注册全自动,最省心 |
| 源码编译 | 想完全掌控构建过程、尝鲜最新功能 | 可控性最强,需自行准备 CMake、编译器与 FFmpeg 依赖 |
| Docker | 不想让容器外环境被改动 | 卸载无残留,配置随数据卷迁移 |
推荐路线是包管理器,一条命令:
sudo apt-get install sunshine源码路线:克隆仓库后用 CMake 构建,各平台依赖清单见 docs/building.md;Docker 路线:容器运行官方镜像并映射端口,细节见 DOCKER_README.md。无论走哪条路,装完服务都会在后台跑起来,下一步入口相同:打开 Web 界面。
Sunshine 配对指南:从 Web 界面到首次串流的 5 步操作
按顺序走完五步,主机和客户端完成互认,客户端里就能看到可串流的应用列表。
- 浏览器打开
http://localhost:47990,在欢迎页设置管理员用户名和密码。它是 Web 界面唯一的访问凭证,离开页面后不会再显示,务必保存好。
- 客户端打开 Moonlight,主机一般在局域网内自动发现;找不到就手动输入主机 IP,选择配对。
- 把主机屏幕弹出的 4 位 PIN 码填入客户端,两端互认完成。
- 进入 "Applications" 页面,点 "Add New",填写应用名称、可执行文件路径和启动参数;默认列表已包含桌面与 Steam 大屏幕模式。
- 重启客户端刷新应用列表,点击任一项目即可开始串流。
串流链路的工作原理并不复杂:Sunshine 在系统层截取桌面画面,交给显卡硬件编码器压成 H.264 / HEVC / AV1 视频流,再经网络与输入指令双向传输,Moonlight 端解码渲染。想深入实现,src/video.cpp 与 src/nvenc/ 是核心模块。编码速度决定延迟下限,网络质量决定画质上限——下文所有调优都只围绕这两个变量。
编码器怎么选:按显卡选型与关键参数
先选对硬件编码器,延迟问题就解决了大半;剩下的工作只是微调三项参数。
按显卡品牌选型:
- NVIDIA:NVENC 首选,生态成熟,直接选它即可;想进一步压延迟,把
nvenc_preset调到更快的预设 - AMD:Windows 用 AMF,Linux 可选 Vulkan 编码器或 VAAPI,Linux 上建议优先试 Vulkan Video
- Intel:Windows 用 QuickSync,Linux 用 VAAPI,macOS 走系统 VideoToolbox,桌面级串流够用
- 以上都没有:退回软件编码兜底,功能可用但 CPU 占用高,只建议应急
关键参数,按"参数 → 影响 → 建议"三句话记:
- 分辨率与帧率 → 决定带宽消耗和流畅度 → 按客户端屏幕规格设置,不必盲目上 4K;竞速、射击类优先保帧率
max_bitrate(比特率上限,单位 Kbps)→ 过高在弱网下花屏,过低有压缩痕迹 → 有线局域网可到 30000 以上,Wi-Fi 与公网适当下调- 编码器预设(nvenc_preset / qsv_preset 等)→ 压缩效率与编码延迟互换 → 延迟敏感的游戏选更快,剧情向选更慢
"Configuration" 页面带搜索框,输入关键词直接定位设置项,不用翻菜单。改完设置实测一局,手感比参数表诚实。
局域网与远程串流配置:UPnP、TLS 与动态 DNS
两个场景的准备内容完全不同:局域网零配置,远程要做足三件事。
局域网串流:主机与客户端同一网络即可,自动发现直接生效。建议主机接网线、客户端一侧走 5GHz Wi-Fi。只用局域网就不要开放额外端口,暴露面最小就是最安全的状态。
远程串流分三步准备:其一,在 Web 界面 Network 分组打开 UPnP 开关,路由器自动完成端口转发;其二,启用 TLS 加密(对应 wan_encryption_mode 与证书配置),避免公网链路被窃听;其三,家里是动态 IP 时搭配动态 DNS 服务,或用 external_ip 配置固定对外入口。远程场景建议把分辨率和比特率各降一档换稳定,公网的延迟与抖动远高于局域网。
动完这些配置不确定是否生效,可以去 Web 界面 Troubleshooting 页看 Logs 记录,编码器加载失败、网络断流这类问题通常写得很直白。
串流故障排查:五类常见症状速查表
多数问题逃不出下表五类,按"症状 → 首查项 → 再查项"的顺序过一遍,仍无法定位时再看日志。
| 症状 | 首查项 | 再查项 |
|---|---|---|
| 客户端发现不到主机 | 主机服务在运行、两端同一局域网,再手动输入 IP | 防火墙放行 47984–47990 与 48010 |
| 卡顿、花屏 | 网络是否稳定,有线优先 | 比特率是否过高降一档;显卡驱动是否过旧 |
| 没有声音 | 其他程序是否独占音频设备 | 切换音频输出设备,确认系统默认播放未被静音 |
| 输入延迟高 | 无线键鼠、手柄是否开启省电模式 | 客户端设备性能,后台占用带宽的应用 |
| 想给不同客户端不同画质 | 每个客户端可在本端独立设置串流参数 | 主机按最高规格提供画面,客户端决定压缩,支持多客户端同时连接 |
页面里的红字通常是定位问题的关键线索。
Sunshine 把三件事做扎实了:数据不出家门、配置选择权在你手里、排查过程有日志可查。串流的核心不是参数拉满,而是在稳定和画质之间找到与自己网络相处的点。接下来只剩执行:
- 核对清单三项,用包管理器在主机上装好 Sunshine;
- 客户端完成建账户、PIN 配对,添加第一个串流应用;
- 局域网跑通一轮,按手感调分辨率、比特率与预设;
- 局域网稳定后,再开启 UPnP 与 TLS 验证远程场景。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考