
1. 背景与思路GameStream 退场后Sunshine 为什么能接棒1.1 GameStream 时代的终结玩过多设备串流的朋友应该对 NVIDIA GameStream 不陌生。它最方便的地方在于只要你有一张 N 卡装好 GeForce Experience局域网内再配一个 Moonlight 客户端就能把主机上的游戏画面串流到笔记本、平板、手机甚至电视上。整个过程几乎没有额外成本延迟低、画质好是很多人在 Steam Link 之外的优先选择。但这件事在 2023 年前后悄悄画上了句号。NVIDIA 先是把 GameStream 从更新日志里越提越少后来逐渐停止维护再后来干脆从 GeForce Experience 的显眼位置移除把用户往自家的云端游戏服务上引导。对于家里有高性能 PC、想实现“局域网内自由串流”的人来说这等于官方直接砍掉了一条主干道。我在那段时间尝试过继续用旧版驱动硬撑但每次显卡驱动一更新GameStream 相关配置就可能出现异常体验确实不稳定。就在这时候Sunshine 进入了很多人视野。它不是一个新项目但真正爆发式增长恰恰是在 GameStream 逐步退场的这段窗口期。当前它在 GitHub 上的 Star 数已经逼近 4 万社区活跃度非常高发版频率也很快。这个数据本身就说明了一个事实很多人和我一样在寻找一个真正属于自己的串流方案。1.2 Sunshine 的定位与核心原理Sunshine 是一个自托管的游戏串流服务端。所谓自托管是指它运行在你自己的高性能电脑上数据只经过你自己的局域网或你配置的网络通道传输不依赖任何第三方云端服务器。这是它和商业云游戏服务最大的区别你不用把画面上传到别人的服务器再拉回来也不用担心服务商哪天调整策略把你拒之门外。从底层原理上看Sunshine 做的事情可以拆成三步捕获画面、编码压缩、网络传输。它通过操作系统底层的捕获接口拿到游戏画面交给 GPU 上的硬件编码器进行 H.264、HEVC 或 AV1 编码然后通过 WebSocket 和 RTSP 协议与客户端建立连接把视频流和音频流实时推送出去。客户端解码后显示画面同时把输入指令回传给服务端形成完整交互闭环。值得一提是Sunshine 在协议层面兼容了 NVIDIA GameStream 的客户端生态。也就是说以前配合 GameStream 使用的 Moonlight 客户端现在可以直接连接 Sunshine 服务端。这大大降低了迁移成本你不需要更换熟悉的客户端只要在 Moonlight 里把连接地址从“自动寻找”改成你的 Sunshine 主机 IP 即可。我最初迁移时几乎没有学习成本这一点帮助非常大。1.3 4 万 Star 背后的生态力量Sunshine 能做到今天这个量级靠的不仅是“能用”。它最大的特点是不锁硬件——NVIDIA、AMD、Intel 的 GPU 都能用Windows、Linux、macOS 都能跑服务端。尤其是 AMD 用户在 GameStream 时代一直只能羡慕 N 卡用户Sunshine 通过支持 AMF 编码器把这个差距直接抹平了。身边不少用 AMD CPU 和显卡的朋友就是冲着这一点入坑的。另外一个关键因素是社区维护质量。Sunshine 的代码一直在更新对 Windows 11 的兼容、对 AV1 编码的支持、对 HDR 串流的实验性支持都是逐步完善的。GitHub 上的 Release 页面提供了 Windows 安装包、Linux 各发行版打包、macOS 安装包还支持通过 Docker 部署。这种多平台、多方式的交付能力让不同背景的用户都能找到适合自己的安装路径。在我看来4 万 Star 在开源项目里算是相当有分量的体量。它意味着测试反馈够多、踩坑记录够全、周边教程够丰富。对于普通用户来说这本身就是一重非常实在的保障。2. 安装部署从下载到串流成功完整走一遍2.1 下载前先搞清楚不同平台安装包怎么选Sunshine 官方 Release 页面会根据操作系统提供对应安装包。Windows 用户一般选择带有installer.exe的安装包Linux 用户根据发行版选择.deb、.rpm或.tar.gz压缩包macOS 用户选择.dmg文件。如果你用的是 Docker官方也维护了镜像Linux 服务器上部署会很直观。这里有个很多人会忽略的点如果你在 AMD 环境下使用 WindowsSunshine 官网的 Downloads 页面会有针对不同版本和架构的安装包要选对适合自己平台的那一个。实际操作中直接下载最新的正式 Release 安装包即可不建议随意使用 nightly 版本用于日常串流。Nightly 构建虽然可能包含新特性但稳定性通常不如正式版。我的建议是初次部署一律用正式版遇到明确需要新功能才能解决的问题再考虑 nightly。还有一点需要提醒安装时需要留意你的 Windows 用户是否有管理员权限。Sunshine 安装后会注册系统服务并且需要安装虚拟显示驱动后面会详细说这些操作都要求管理员权限。如果当前账户权限不够安装过程中会直接报错。2.2 具体安装步骤Windows 为例在 Windows 上部署 Sunshine我一般按下面几步走去官方 Release 页面下载最新的 Windows 安装包。双击执行安装程序。安装程序会询问安装路径保持默认即可。安装过程中会自动安装 Sunshine 服务、Web UI 组件以及虚拟摄像头和音频驱动可选。安装完成后Windows 桌面右下角托盘会出现 Sunshine 图标浏览器会自动打开https://localhost:47990这个地址。首次打开 Web UI 会要求设置用户名和密码。这是 Sunshine 自身管理界面的登录凭证不是串流客户端配对的 PIN 码两者不要混淆。登录后进入 Dashboard服务端基本就绪。这里有一个非常关键的细节Sunshine 的 Web UI 默认使用 HTTPS 自签名证书所以浏览器首次访问时会有安全警告需要手动点击“继续访问”。这不是安装出问题而是因为证书是自己签发的。如果你用的是 Chrome 或 Edge点“高级”后选“继续前往”即可。Firefox 也是类似的操作。2.3 虚拟显示器与显卡驱动容易被忽略的准备工作Sunshine 本身负责编码和传输但画面的来源必须认真配置。串流场景里一个常见痛点是如果显示器没接或者被关闭GPU 渲染出来的画面可能为空或者分辨率异常。Sunshine 通过安装虚拟显示器驱动来解决这个问题Windows 版安装包一般会一并处理。但虚拟显示器驱动有时会在某些环境下失效。例如显卡驱动更新后虚拟显示器可能不被识别。我的排查习惯是如果串流后画面黑屏先去 Windows 的设备管理器里查看“监视器”和“显示适配器”两个节点确认虚拟显示设备是否存在状态是否正常。如果显示器驱动被系统回滚或禁用在 Web UI 里把虚拟显示器设置重新启用一次就好。显卡驱动层面如果你是 NVIDIA 用户安装 Studio 驱动或 Game Ready 驱动都能正常工作。AMD 用户则需要确保驱动版本不要太旧因为 AMF 编码器的支持能力跟驱动版本直接相关。Intel 核芯显卡用户如果想要快速编码建议安装最新驱动以启用完整的 Quick Sync Video 功能。2.4 AMD 处理器/显卡用户重点看编码器选型AMD 环境下使用 Sunshine第一步就是决定使用哪个编码器。Sunshine 对 AMD 的支持走的是 AMFAdvanced Media Framework路径这是 AMD 官方的硬件编码框架能力上和 NVIDIA 的 NVENC 对标。在 Sunshine Web UI 的“高级”设置里可以通过指定编码器名称来强制选择编码器。比如amf通常代表 AMD 的 H.264 编码器amf_hevc代表 HEVCamf_av1代表 AV1取决于显卡架构。如果你的设备上有 AMD 独立显卡和核显共存可能会在列表里看到多个编码器名称需要手动指定正确的那个。如果开机后在 Sunshine 日志里看到类似 “Could not find encoder” 或 “AMF failed to initialize” 的报错多半就是编码器选择不对或者显卡驱动太老。这时先更新 AMD 官方驱动再把编码器名称改成明确的amf或amf_hevc重试基本就能解决。值得注意的是独立显卡和核显的性能差异很大编解码延迟和画质也会不同一般优先使用独立显卡的编码器除非你想把显卡的全部资源留给游戏渲染才会考虑用核显来串流。3. 核心配置与画质延迟优化3.1 编码格式H.264、HEVC 还是 AV1Sunshine 的核心优势之一就是灵活选择编码格式。不同格式对应不同设备解码能力和带宽占用我实际用下来总结如下编码格式优点缺点适用场景H.264兼容性最好几乎所有设备都支持硬解同等画质下码率需求更高老旧设备、兼容性优先时HEVC (H.265)同等画质下码率可以显著降低部分旧设备硬解支持不佳局域网带宽一般时优先选择AV1压缩率最高画质和带宽兼顾客户端硬解支持还在普及中新设备、追求高质量串流时客户端选择上主要看解码能力。我的主力客户端是 MoonlightMoonlight 会对两端进行协议协商编码端支持什么、解码端支持什么最终取一个两边都能接受的方案。Sunshine 默认会同时开启多项编码支持用户也可以在 Web UI 的“编码”设置里手动选择优先顺序。我的经验是如果你用的客户端设备是两三年内发布的手机、平板或电视优先选择 HEVC码率占用低且画质足够好如果遇到兼容性问题画面黑屏或解码错误立即切回 H.264。AV1 在最新设备上表现很好但对旧设备依然不够友好。稳妥的做法是把 HEVC 设为默认AV1 作为实验选项在特定设备上按需开启。3.2 码率、分辨率与帧率的取舍Sunshine Web UI 的“客户端设置”部分可以配置美式码率上限但真正决定画质的往往是客户端侧请求的分辨率和帧率。Moonlight 客户端里可以手动选择分辨率和帧率例如 1080p60fps、1440p60fps、4K60fps 等。串流场景下的码率设置我的建议是局域网千兆环境下码率上限设置为 50 到 100 Mbps画面非常稳定。外网或网络不稳定的环境建议 20 到 30 Mbps 起步根据实际观察动态调整。4K60fps 的串流至少需要 60 Mbps 以上码率否则画面会产生比较明显的不自然感。帧率方面60fps 是当前性价比最高的选择。如果你的客户端设备支持高刷新率且你有 120Hz 或更高刷新率的屏幕可以在 Moonlight 里开到 120fps。但这同时要求服务端显卡有足够的编码性能以及网络全程保持在非常低的抖动水平。我的实测结论是串流 1080p60fps 已经能覆盖绝大多数游戏场景120fps 属于“有明显提升但不是必需”的选项。另外要提到一个新手常踩的坑很多人在 Sunshine 里设置了较高的分辨率但客户端侧没有对应选择导致画面拉伸、模糊。这里记住一个原则Sunshine 是服务端负责“能支持什么”Moonlight 是客户端负责“请求什么”。最终的串流分辨率由客户端发起请求决定。不要只调服务端不调客户端也不要反过来。3.3 低延迟模式与网络适配Sunshine 在 Web UI 的“高级”选项卡里有一个重要设置叫“Low Latency Mode”低延迟模式它本质上是调整编码器的延迟预设。打开后编码器会牺牲一部分压缩率来换取更低的编码延迟对画质影响轻微但对操作反馈的提升非常直观。我在玩 FPS 和动作游戏时都会开启几乎没有感知到编码延迟带来的拖拽感。网络方面Wi-Fi 环境做局域网串流时我强烈建议优先使用 5GHz 频段并尽量减少路由器与设备之间的障碍物。2.4GHz 频段虽然穿墙能力强但带宽和抖动表现远不如 5GHz串流游戏时容易出现时好时坏的情况。如果条件允许使用有线网络把服务端电脑直连路由器无线的问题会减少一半。关于 “ms” 延迟的观察逻辑Moonlight 客户端会显示解码延迟、网络延迟等数据。我在排错时有一个经验套路如果网络延迟数值忽高忽低先查 WiFi 干扰和路由器 QoS 设置如果解码延迟高优先看客户端设备性能。不要看到高延迟就怀疑 Sunshine延迟来源往往不一定在服务端。3.4 音频与多显示器配置Sunshine 支持音频串流Windows 下它通过虚拟音频设备来捕获系统音频。安装完成后默认的虚拟音频设备应该已经生成Sunshine 会自动把它设为首选播放设备。如果你的游戏没有声音第一步应该检查 Windows 声音设置里的默认播放设备是否指向 Sunshine 的虚拟设备。多显示器环境下Sunshine 允许指定串流哪一个显示器。在 Web UI 的“显示器”设置或者客户端发起连接时可以指定显示器编号。需要注意如果你的串流目标是游戏建议在游戏里把显示模式设置为“窗口化全屏”或“无边框窗口”这样切换显示器时不容易出现分辨率混乱。有些游戏强制独占全屏在串流时可能无法正确捕获画面这是我踩过最多次的坑之一。解决办法是先把游戏切换成“无边框窗口”再发起串流连接。4. 客户端接入与多端体验4.1 Moonlight 客户端配对与连接Moonlight 原本是给 GameStream 设计的客户端现在同时兼容 Sunshine。配对流程很简单在 Sunshine Web UI 的“PIN 码”页面点击“生成 PIN 码”。打开 Moonlight 客户端它会自动扫描局域网里的 Sunshine 主机如果没有自动发现点“添加主机”手动输入服务端的 IP 地址。点击主机后客户端会弹出配对请求输入刚才生成的 PIN 码即可完成配对。配对完成后Moonlight 主界面会显示服务端上配置好的应用图标比如“Steam”“Desktop”等点图标就能发起串流。整个过程比较流畅但有一个细节需要注意第一次发起串流时客户端可能需要几秒钟来协商编码参数和传输协议这时画面短暂黑屏是正常的不要急着断开重连。等待时间一般不超过十秒。4.2 添加应用与桌面串流Sunshine 默认会配置一个“Desktop”应用用于串流整个桌面。日常办公或者玩非 Steam 游戏时直接用 Desktop 模式很方便。针对具体游戏Web UI 的“应用”页面可以添加自定义应用每个应用本质是一个启动命令。我个人的做法是在应用配置里填游戏的可执行文件路径并把“工作目录”设置为游戏所在目录。如果游戏需要特定启动参数可以在命令参数里加入。对于 Steam 游戏更简单的做法是直接配置“Steam 大屏幕模式”为一个应用然后由 Steam 接管后续启动流程。减少 Sunshine 侧的自定义配置可以减少出错概率。4.3 手机、平板、电视等客户端注意点Moonlight 覆盖的平台非常全Windows、macOS、Linux、Android、iOS、tvOS、甚至部分电视和掌机都能安装。不同平台的体验差异主要集中在两个方面输入方式和解码能力。移动端触摸屏的虚拟按键玩大部分游戏都很吃力我更推荐配合蓝牙手柄使用。另外手机端串流时屏幕分辨率较小如果用 1080p 以上码率串流要注意手机本身的解码芯片是否支持部分老机型可能在高码率和高帧率组合下出现解码过热、掉帧。电视端串流的注意点是画质设置的匹配。现代智能电视虽然普遍支持 4K 解码但 WiFi 网卡性能参差不齐。我建议电视端先用有线网络连接路由器再尝试 4K 串流。如果电视网卡是百兆网口4K60fps 的高码率很容易撞到带宽天花板这时要么降到 1080p要么换一个支持千兆的电视盒子。5. 常见问题与排错实录5.1 配对失败配对失败是新手遇到最多的问题之一。如果你在 Moonlight 里无法完成配对先按下面顺序排查检查项操作方式网络连通性确认手机/电脑与 Sunshine 主机在同一局域网用ping测试主机 IP 是否通畅端口连通性确认 Sunshine 服务已启动Web UI 能打开防火墙在 Windows 防火墙中允许 Sunshine 服务访问专用网络部分安全软件也会拦截监听端口PIN 码时效重新生成一次 PIN 码注意 PIN 码只有短暂有效期过期后需要重新生成在我自己的使用经历里最常发生的情况是安全软件拦截了 Sunshine 的入站连接导致客户端扫描不到主机或连接超时。把 Sunshine 加入安全软件白名单后问题基本都能解决。5.2 画面花屏和卡顿串流中出现花屏多半是编码与解码不一致导致的。同一个串流会话中如果服务端实际输出分辨率或刷新率发生大幅度变化部分客户端解码会异常。遇到花屏我建议先在 Sunshine 里固定分辨率关闭动态帧率调节然后重新连接。如果依然花屏切换编码格式到 H.264 再试往往能定位到底是 HEVC/AV1 兼容问题还是参数设置问题。卡顿和丢帧则需要区分网络原因和性能原因。我通常会看 Moonlight 右上角的统计信息如果“Dropped Frames”居高不下说明网络传输质量差如果“Decoder”耗时偏高则说明客户端解码性能不足。网络问题优先检查路由器 QoS、无线信号和网线质量解码问题就只能降低分辨率或码率来缓解。5.3 音频无声音频无声的排查顺序Windows 右下角音量图标右键打开“声音设置”。在“输出”里确认默认设备是 Sunshine 虚拟音频设备。如果默认设备没有变手动选择 Sunshine 虚拟设备并确认音量没有静音。在 Sunshine 设置里检查是否开启了音频捕获确认没有将音频通道全部禁用。出现无声八成是默认播放设备没有切到 Sunshine 上。如果在多屏或多用户环境下Windows 偶尔会把默认设备恢复成物理扬声器这时在 Sunshine 设置里重新指定音频设备并重启服务即可。5.4 性能自查清单如果整体延迟和画质都不理想我建议做一轮系统性的检查而不是单点猜测服务端 CPU 占用是否过高如果编码器跑在 CPU 上性能会非常吃紧。显卡驱动是否最新旧驱动的编码器性能通常不如新驱动。客户端设备是否支持硬解软解功耗高、延迟大对设备性能要求也高。网络接口速率是否正常弱电箱里的网线老化或者交换机端口故障是很多人都忽略的问题。游戏是否采用了独占全屏模式串流时推荐“无边框窗口”或“窗口化全屏”。这五项检查做完基本能定位八成以上的常见性能问题。按照我个人经验Sunshine 在日常串流中已经非常稳定只要不是非要追求极限低延迟的竞技场景它的表现完全可以替代当年 GameStream 的体验。尤其是对 AMD 用户、Linux 用户以及希望通过 Docker 部署在 NAS 或服务器上的人来说Sunshine 甚至比 GameStream 更强大。它不是一个“权宜之计”而是一个真正走向成熟的自托管方案。如果你正在考虑把自己的串流方案切换到自托管这条路我的建议是直接下载正式版安装包用默认设置先跑通一次局域网串流再去调整码率、编码格式、虚拟显示器这些进阶选项。先跑通流程再追求极致整个过程会让你对整套串流链路理解得更透彻。