ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器

Sunshine 自托管游戏串流主机:10 分钟搭好低延迟串流服务器

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

Sunshine 是一款自托管的游戏串流宿主程序,配合 Moonlight 客户端使用。装好它,它会在游戏主机上抓取屏幕画面、调用 GPU 硬件编码压缩成 H.264/HEVC/AV1,再通过 UDP 推给你的手机、电视或另一台 PC。跟完本文,你能用 1080p/60 帧把书房 PC 接到客厅大屏,串流延迟控制在个位数帧。

一、它凭什么被选择

整条链路很短:抓帧 → GPU 硬件编码 → UDP 推给 Moonlight 解码显示。60fps 下主机每 16ms 发出一组数据,没有中间商。

  • 内容不限:不限 Steam 库,整块桌面、任意可执行文件、普通应用都能推。
  • 硬件不限:NVIDIA 走 NVENC,AMD 走 AMF/VAAPI,Intel 走 QuickSync,macOS 走 VideoToolbox,全都用不上时还有 CPU 软件编码兜底。
  • 平台不限:Windows、Linux、macOS、FreeBSD 都能当主机端,商业方案普遍做不到。
  • 完全自托管:画面只在自己网络里流动,无月费、无云端中转。

二、从安装到第一次成功

  1. 装:用对应系统的预编译包,Windows 装.msi、Debian/Ubuntu 装.deb、Fedora/OpenSUSE 装.rpm、macOS 拖入.dmg。需要自己编译时才克隆仓库:
git clone https://gitcode.com/GitHub_Trending/su/Sunshine
  1. 开:Windows 安装包默认已注册为后台服务直接运行;Linux 可执行systemctl --user --now enable app-dev.lizardbyte.app.Sunshine开机自启。浏览器访问https://localhost:47990,"网站不安全"的警告来自自签名证书,忽略即可。
  2. 配:首次打开要求创建用户名和密码,记好它——以后每次配对设备都要用。转到"Applications"页添加串流内容:内置的 Desktop 条目推整块桌面;新增记录可填 Steam 或任意游戏的启动命令。
  3. 连:播放设备上装 Moonlight 客户端,添加主机(同局域网通常自动发现);提示输入 PIN 时,到 Web 端导航栏的 PIN 处填相同数字并给设备起名,配对完成。选一个应用,画面即出现在设备上,键鼠和手柄输入会反向传回 PC。

Windows 主机建议装好虚拟手柄驱动,Xbox、DualSense、Switch Pro 等手柄都能被正确模拟出来。

三、关键参数怎么选

编码器:在 Audio & Video 分组里选。默认自动挑当前显卡支持的最优项,一般不用动。手动原则:NVIDIA 选 NVENC,AMD 在 Windows 选 AMF、Linux 选 VAAPI 或 Vulkan,Intel 在 Windows 选 QuickSync。

码率与分辨率:配置页搜索框输入 "bitrate" 即可定位max_bitrate(单位 Kbps,设 0 则跟随 Moonlight 请求值)。

  • 有线局域网:1080p/60 给 20–30Mbps 足够清晰;冲 4K/60 主机和客户端都走 Cat5e 以上网线,码率 50Mbps 以上,GPU 需满足 4K 编码(NVIDIA 为 RTX 20 系或 GTX 1080 起)。
  • 5GHz Wi-Fi:双方都接 5GHz 网络(文档最低要求 802.11ac),先降到 1080p,卡顿再降码率。
  • 跨公网:10Mbps 起步,720p/30 帧往往比 4K60 更稳。

串流体验对网络的敏感度不在带宽而在稳定性:主机跑iperf3 -s,客户端跑iperf3 -c 主机IP -t 60 -u -R -b 50M,目标是丢包低于 5%、抖动低于 1ms,达不到先查网络再调参数。

四、进阶玩法

  • 远程访问:Web 端 Network 分组把upnp设为 enabled,Sunshine 通过路由器自动完成端口映射。路由器不支持就在路由器手动转发——基础端口默认 47989,视频、音频、输入端口在其上方偏移,Web UI 用 47990。前置条件:给主机配固定内网 IP,否则重启后客户端找不到设备。
  • 多设备:每接一个新客户端都按上一节的配对流程走一次,PIN 处给设备起不同名字便于识别;同一时间只维持一个活跃串流会话。
  • Linux 抓取后端:KMS/DRM 抓取需要提权,Flatpak 和 AppImage 包不支持,请用发行版原生包;Wayland 下用 XDG Portal 抓取,首次会弹 Remote Desktop 授权提示。
  • 降低延迟:NVIDIA 主机可在控制面板关掉vsync:fast缓解卡顿;AMD 在 Windows 开 Enhanced Sync 还能再省一帧。更多开关见 性能调优文档。

五、出问题先查这里

日志入口在 Web 端 Troubleshooting 标签页,滚动输出 Sunshine 日志,每条 warning/error 都带说明,定位从这里开始。

  • 忘 Web 端账号:凭据只显示一次,运行sunshine --creds 新用户名 新密码直接重置。
  • 输入不生效(Linux/FreeBSD):把运行 sunshine 的用户加入input组后重新登录。
  • 手柄在 Steam 能用、游戏里不能:Steam 设置里只保留 Generic 手柄支持。
  • 游戏收不到键盘/鼠标:Windows 上确认虚拟手柄驱动已装好并重启电脑,驱动缺失时输入会回退到 SendInput,Raw Input 类游戏收不到。
  • 画面卡顿:按第三节先降码率和分辨率,确认主机 CPU/GPU 没满载,主机尽量走有线。

六、延伸资源

  • docs/getting_started.md:各平台安装、权限与首次配置全流程
  • docs/configuration.md:全部配置项的默认值与取值说明
  • docs/performance_tuning.md:AMD/NVIDIA 驱动层的低延迟开关
  • docs/troubleshooting.md:分平台的已知问题与修复命令
  • src/video.cpp:编码主逻辑,看编码器如何被选中
  • src/network.cpp:UDP 传输与端口映射实现

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进