Sunshine游戏串流服务器实战:3条路线装好它,从配对到远程畅玩
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一款完全开源免费的自托管游戏串流服务器,专门配合 Moonlight 客户端使用,支持 Windows、Linux、macOS 三大平台。它能实时捕获桌面画面,用显卡硬件编码成视频流送到你的手机、平板或电视上——电脑本身就是你的游戏服务器,数据全程留在自己的设备里,不排队、不交云游戏会员费。
串流到底在流什么:一条四步链路
先花三十秒搞清原理,后面排查问题你会感谢自己。Sunshine 的工作链路分四步:
- 捕捉:通过系统级屏幕捕获接口实时截取桌面画面,Windows 用 DXGI,Linux 用 KMS/DRM 或 Wayland,macOS 用原生屏幕捕获框架;
- 编码:交给显卡硬件编码器压成 H.264/HEVC/AV1 视频流,音频同步编码进去;
- 传输:通过优化网络协议,视频流和你的键鼠手柄输入双向传递;
- 渲染:Moonlight 客户端解码上屏,你的操作原路返回主机。
整条链路里,编码速度决定延迟,网络质量决定清晰度。这也是后续所有调优都围绕"编码器"和"网络"两个关键词展开的原因。想深入看实现,src/video.cpp 和 src/nvenc/ 是视频编码的核心模块,可以翻一翻。
三条路线装好Sunshine:包管理器、源码、Docker
按省心程度排列,总有一条适合你。
路线一:包管理器直接装(最省心)
用 Ubuntu、Debian 这类发行版的话,先添加官方仓库,再一条命令装完,依赖自动解决、服务自动注册:
sudo apt update sudo apt install sunshineWindows 和 macOS 用户直接下载官方发布的安装包,一路下一步即可。
路线二:源码编译(可控性最强)
想尝鲜最新功能、或者自己掌控构建过程,就从源码编译:
git clone https://gitcode.com/GitHub_Trending/su/Sunshine cd Sunshine mkdir build && cd build cmake .. make -j$(nproc) sudo make install编译前记得装好 CMake、编译器和 FFmpeg 等依赖,docs/building.md 里有各平台的详细依赖清单。
路线三:Docker 容器化(最干净)
不想污染主机环境就用容器跑,注意要映射全部串流端口和设备节点:
docker run -d --name=sunshine --restart=unless-stopped \ --device /dev/dri/ \ -v /path/to/config:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest容器方式卸载无残留,配置随/config卷迁移,适合喜欢整洁环境的用户。
第一次开机:账户、配对、添加应用三连击
安装完成、服务跑起来后,浏览器访问https://localhost:47990(首次会提示"不安全",因为是自签名证书,忽略即可)。你会看到 Web 管理界面:
接着按顺序做三件事:
第一步,创建管理员账户。首次访问会要求设置用户名和密码,它是 Web 界面的访问凭证,建议用强密码并妥善保存——它同时是后续配对安全的一环。
第二步,在 Moonlight 里配对。打开 Moonlight 客户端添加主机(局域网内通常自动发现),选择"配对"后屏幕上会弹出四位 PIN 码。登录 Web 界面,点导航栏的 "PIN",把码填进去、给设备起个名字,回车即可。配对成功后,客户端里就会出现主机上配好的应用列表。
第三步,添加可串流的应用。默认只有桌面和 Steam 模式,点 "Applications" 页面里的 "Add New",填入应用名称、可执行文件路径和启动参数即可:
配完记得重启 Moonlight 客户端刷新列表,新应用才会显示。
画质延迟怎么调:编码器与关键参数
串流体验好不好,编码器是决定性因素。Sunshine 能自动识别显卡并启用对应硬件编码:
| 显卡 | Windows | Linux | macOS |
|---|---|---|---|
| NVIDIA | NVENC | NVENC(CUDA) | 软件编码 |
| AMD | AMF | VAAPI、Vulkan Video | 软件编码 |
| Intel | QuickSync | VAAPI | VideoToolbox |
没有硬件编码时会自动退回软件编码兜底,功能可用,只是 CPU 占用明显上升。
具体参数在 "Configuration" 页面调整,这个页面支持搜索,想找什么设置直接输关键词,比翻菜单快得多:
调优不用背参数,记住三条判断逻辑:
- 分辨率与帧率:先看客户端屏幕的实际规格,不必盲目上 4K;竞速、射击类游戏优先保帧率,剧情向游戏优先保分辨率;
- 比特率:局域网有线环境可给到 30Mbps 以上,远程或无线环境适当下调,避免画面花屏;
- 编码预设:延迟敏感的游戏选低延迟预设,画质优先的场景选高质量预设。
参数是死的,体验是活的。改完跑一局试试手感,比对着参数表硬记有效得多。
两种串流场景:局域网与远程的配置取舍
Sunshine 的部署场景分两类,配置思路完全不同。
局域网串流主打零延迟:主机和客户端在同一 WiFi 下,这是最爽的场景。要点是主机尽量接网线、客户端连 5GHz 频段,网络稳定后可以把分辨率和比特率都往高调。
远程串流主打随时随地,出门在外连回家里的主机要多几步准备:确认路由器支持并开启 UPnP(Web 界面有对应的upnp开关,让路由器自动完成端口转发);在配置里启用 TLS 加密;家里是动态 IP 的话,最好再配一个动态 DNS 服务,IP 怎么变都能找到主机。远程场景建议适当降低分辨率和比特率换稳定,公网延迟和抖动远高于局域网。
无论哪种场景出问题,Web 界面的 "Troubleshooting" 页面都内置了完整日志系统——编码器加载失败、网络断流这类问题,日志里通常写得明明白白:
翻车自救手册:高频问题快问快答
Q:客户端找不到主机?症状是 Moonlight 列表里一直不出现设备。排查方向:主机上的 Sunshine 服务是否在运行、两端是否同一局域网、防火墙是否放行 47984–47990 端口。最稳妥的动作是手动输入主机 IP 添加,别依赖自动发现。
Q:画面卡顿、马赛克?从三个方向查:网络是否稳定(有线优先);比特率是否过高(试着降一档);显卡驱动是否过旧——硬件编码器很吃驱动版本。
Q:串流没声音?检查主机上有没有其他程序独占音频设备,试试切换音频输出设备,确认默认播放设备没被静音。
Q:操作跟手性差、输入延迟高?优先排查无线键鼠手柄是否开了省电模式,客户端设备性能是否够用,以及主机后台有没有下载、视频播放这类吃带宽的进程。
行动清单:四步进入串流
- 选一条路线装好 Sunshine,把服务跑起来;
- 手机或平板装好 Moonlight,完成 PIN 配对;
- 添加想玩的游戏,先串桌面找找感觉;
- 分别测局域网和远程两个场景,按手感微调参数。
Moonlight 各平台的适配版本,在 Web 界面的 "Featured Apps" 页面都能直接找到。串流真正讲究的不是参数拉满,而是在稳定与画质之间找到最适合你的那个点——装好它,让游戏跟着你走,而不是你跟着电脑走。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考