☰
Sunshine 与 Moonlight 串流实战:从安装配置到延迟优化
2026/10/14 18:10:35 网站建设 项目流程

简介:这份资源是面向串流游戏与超低延迟应用场景的完整工具组合,包含 Sunshine 服务端与 Moonlight 客户端,覆盖 X86、X64 及 Android 平台,适合希望搭建自建串流环境、追求低延迟高画质体验的玩家与开发者。压缩包共 2868 个文件,约 64.79MB,以 2023 个 svg、415 个 js、107 个 scss 等前端资源为主,辅以 ts、flow、map 等工程文件,以及 bat 安装脚本、exe 可执行程序、hlsl 着色器、json 配置与多语言字体等,构成一套可部署、可调试的完整工程。资源同时提供 install-service、add-firewall-rule、migrate-config 等批处理脚本,便于快速完成服务注册与网络配置。目前已有 16453 人学习下载,说明该方案在串流社区具备较高认可度。通过这份资源,读者可获取服务端与客户端配套文件、跨平台部署素材及工程目录结构,用于搭建 AMD、NVIDIA 及 Intel 核显环境下的低延迟串流方案,并借助 Android 客户端实现移动端接入。

1. 串流这套组合拳:Sunshine 服务端配 Moonlight 客户端到底能解决什么

家里有台性能还行的台式机,但你想在客厅电视、卧室平板或者出差带的轻薄本上接着玩 3A 大作,这种场景下 Sunshine 加 Moonlight 就是目前最省心的自建串流方案。Sunshine 跑在装有显卡的那台主机上,负责把画面编码成视频流推出去;Moonlight 装在你要看的设备上,负责解码显示并把键鼠手柄操作回传。它俩配合起来,等于把主机的算力借给了另一块屏幕。这次拿到的资源包把服务端和客户端都打包齐了,客户端覆盖 X86、X64 和安卓三种架构,意味着你手头的 Windows 轻薄本、老款平板、安卓电视盒子基本都能找到对应安装包,不用再满世界单独找某个平台的版本。适合谁?适合有独立显卡主机、想低成本搭一套私有串流环境、又不想折腾复杂配置的从业者和玩家。下面我按实际拆包和配置的顺序,把选型理由、参数设置和踩过的坑一条条讲清楚。

2. 先搞懂 Sunshine 与 Moonlight 的分工:为什么不是随便装个远程桌面

2.1 串流和远程桌面的本质差别

很多人第一反应是「我用远程桌面不就行了」,但远程桌面协议是为办公场景设计的,它优化的是文字和静态画面,对帧率和延迟不敏感。你用它打游戏,画面会糊成一团,操作延迟能到几百毫秒。Sunshine 走的是视频编码推流的路子,它调用显卡的硬件编码器(NVIDIA 的 NVENC、AMD 的 AMF 或者 Intel 的 QuickSync),把游戏画面实时压成 H.264 或 HEVC 视频流,Moonlight 端再用硬件解码器还原。整个过程延迟可以压到十几毫秒,画质能上 1080P 甚至 4K。这个差别决定了它俩不是替代远程桌面,而是专门为低延迟高画质场景生的。

2.2 资源包里三个平台客户端怎么选

资源包里的客户端分了 X86、X64 和安卓三类,这不是随便分的。X64 对应现在主流的 64 位 Windows 系统,绝大多数台式机和近几年的笔记本都装这个;X86 是给还在跑 32 位系统的老设备准备的,比如一些老旧的 Windows 平板或者工控机,虽然现在少见但确实还有存量;安卓包则是给电视盒子、安卓平板和手机用的。选的时候先确认自己设备的系统架构,Windows 上在「设置 → 系统 → 关于」里看「系统类型」,安卓设备一般近几年的都是 arm64 架构,直接装通用安卓包即可。装错了架构,程序要么打不开,要么跑起来直接闪退,这是最常见的翻车点。

2.3 服务端 Sunshine 的安装与首次配置

Sunshine 服务端的安装不算复杂,但首次配置有几个关键项必须设对。下载对应系统的安装包后一路下一步,装完它会自动在后台起服务,然后你需要在浏览器里打开它的管理页面(默认监听本机某个端口,安装完会提示)。第一次进去要设置用户名和密码,这个凭据是给管理页面和客户端配对用的,别设太简单。进去之后重点看「Applications」和「Audio/Video」两块。Applications 里可以添加你要串流的游戏或程序,Audio/Video 里选编码器和分辨率。下面这段是配置编码器时常见的参数调整思路,用命令行方式演示如何确认本机支持的编码器:

# 查看 NVIDIA 显卡支持的编码器情况(需装好驱动) nvidia-smi --query-gpu=name,driver_version --format=csv # 查看显卡编码器占用,串流时可以用它确认是否走了硬件编码 nvidia-smi pmon -c 1

第一行命令确认显卡型号和驱动版本,驱动太老会导致 Sunshine 里选不到 NVENC 编码器。第二行在串流过程中执行,如果看到编码器(enc)那一列有占用,说明硬件编码生效了;如果一直是 0,那大概率是回退到了 CPU 软编,画面会卡顿且 CPU 占用飙升。参数上,编码器优先选硬件编码,分辨率按你客户端屏幕的实际分辨率设,帧率设 60,码率根据网络情况在 20Mbps 到 50Mbps 之间调。局域网内可以拉高,跨网络就要保守些。

3. 客户端配对与串流参数调优:从能连上到连得稳

3.1 Moonlight 客户端添加主机的完整流程

服务端配好后,打开 Moonlight 客户端,它会自动搜索局域网内的 Sunshine 主机。如果没搜到,点「手动添加」,输入主机的局域网 IP 地址。添加后会弹出一个四位数的配对码,你需要回到 Sunshine 的管理页面,在「PIN」那一栏输入这个码完成配对。配对成功后,客户端会列出服务端配置好的应用列表,点进去就能开始串流。这里有个细节:主机 IP 建议在路由器里设成静态分配,不然重启后 IP 变了,客户端就得重新添加。安卓端和 Windows 端的操作逻辑一致,只是界面布局略有不同。

3.2 码率、分辨率和帧率的取舍

串流质量的核心就三个参数:分辨率、帧率、码率。分辨率决定画面清晰度,帧率决定流畅度,码率决定画面在运动时会不会糊。三者互相牵制,网络带宽是总闸。我一般这么设:局域网千兆环境下,1080P 60帧 码率给到 30Mbps 到 40Mbps,画面基本无瑕疵;如果是 4K 60帧,码率要拉到 80Mbps 以上,对网络要求很高。跨网络串流时,先测上传带宽,码率设成上传带宽的六成左右比较稳。帧率方面,如果客户端屏幕只有 60Hz,设 60 帧就够,设高了反而浪费带宽。下面这段是排查网络质量时常用的命令:

# 持续 ping 主机,观察延迟和丢包 ping -t 192.168.1.100 # 用 iperf3 测客户端到主机的实际带宽(需两端都装 iperf3) iperf3 -c 192.168.1.100 -t 30

ping 命令看的是延迟稳定性,如果延迟忽高忽低或者有丢包,串流就会卡顿甚至花屏。iperf3 测的是实际吞吐,如果测出来只有几十兆,那码率就不能设太高。注意 iperf3 测的是 TCP 吞吐,实际串流走 UDP,数值仅供参考,但能反映网络底子。

3.3 手柄和键鼠的映射处理

Moonlight 客户端支持手柄直连,Xbox 手柄和 PlayStation 手柄插上客户端设备基本能即插即用。如果手柄是插在服务端主机上的,那串流时操作的是主机本地,客户端这边反而没反应,这点要分清楚。键鼠方面,Windows 客户端可以直接用,安卓端接键鼠要看设备支持。遇到手柄识别不了的情况,先确认客户端系统的手柄驱动是否正常,再看 Moonlight 的输入设置里有没有选对设备。有些安卓盒子对蓝牙手柄兼容性一般,换成有线连接往往能解决。

4. 避坑与排查:那些让我重装了三遍的坑

4.1 客户端闪退或提示缺少运行库

现象是双击客户端图标后窗口一闪就没了,或者弹窗提示缺少某个 dll 文件。原因通常是系统缺少必要的运行库,比如 Visual C++ Redistributable 或者 .NET 框架。解决方法是根据提示装对应的运行库,Windows 上可以装一个合集包省事。安卓端闪退则多半是架构不匹配,比如把 X86 的包装到了 arm 设备上,换对应架构的包即可。

4.2 配对码输入后提示配对失败

现象是在 Moonlight 里输入配对码后,服务端管理页面显示配对失败或者一直转圈。原因一般是服务端和客户端不在同一网段,或者主机的防火墙拦了配对请求。解决方法是确认两端 IP 前三段一致,然后在服务端主机的防火墙里放行 Sunshine 相关的入站规则。如果是 Windows 防火墙,第一次运行 Sunshine 时弹的网络访问提示要选「允许」,当时点了「取消」的话就得手动去防火墙里加。

4.3 串流画面卡顿但网络测速正常

现象是 iperf3 测出来带宽充足,ping 延迟也低,但串流就是一顿一顿的。原因可能是服务端用了 CPU 软编而不是硬件编码,或者客户端解码性能不够。解决方法是回服务端确认编码器选的是 NVENC/AMF/QuickSync,然后在串流时看服务端 CPU 占用,如果某个核心跑满,基本就是软编了。客户端这边,老设备的硬件解码器可能不支持高码率 HEVC,把编码格式从 HEVC 换成 H.264 往往能缓解。

4.4 声音在客户端但画面在主机

现象是串流开始后,客户端有声音但画面还是显示在主机显示器上,或者反过来。原因是音频输出设备没跟着串流走。Sunshine 的音频设置里可以指定串流时使用的虚拟音频设备,装好它自带的虚拟声卡驱动后,在 Windows 声音设置里把默认输出切到那个虚拟设备,串流时声音就会跟着视频流走。串流结束后记得切回原来的输出设备,不然本地就没声音了。

4.5 安卓端画面比例不对或黑边

现象是安卓客户端上画面被拉伸或者四周有大黑边。原因是客户端的分辨率和服务端输出的分辨率不匹配。解决方法是在 Moonlight 客户端的设置里把显示模式改成「拉伸」或「保持宽高比」,然后调整服务端的分辨率去适配客户端屏幕。电视盒子接的电视如果是 16:9,服务端就设 1920x1080;如果是带鱼屏,就得设成对应的超宽分辨率,不然怎么调都有黑边。

5. 进阶玩法:把串流延迟再压一压的几个实操技巧

5.1 用有线网络替代 Wi-Fi

这是提升串流稳定性最立竿见影的一招。Wi-Fi 受干扰因素太多,隔一堵墙信号就掉一截,串流对丢包又极其敏感。如果客户端设备支持网口,直接插网线;不支持的话,用一个 USB 转网口的小配件也行。我实测过同一台设备,Wi-Fi 下码率上到 30Mbps 就开始偶尔卡顿,换成有线后 50Mbps 稳如老狗。如果实在没法有线,那就把路由器换成支持 Wi-Fi 6 的,并且让客户端和设备尽量在同一个房间,减少穿墙。

5.2 调整服务端的编码预设

Sunshine 的编码器设置里有个「预设」选项,一般有速度优先、质量优先、低延迟几档。默认通常是质量优先,编码出来的画质好但延迟略高。如果你对延迟更敏感,比如玩格斗或射击游戏,可以切到低延迟预设,代价是同等码率下画质会稍微降一点。这个取舍看你的游戏类型,我一般动作游戏用低延迟,角色扮演和策略游戏用质量优先。

5.3 关闭主机的多余显示输出

如果主机接了多个显示器,串流时 Sunshine 会尝试捕获主显示器的画面,但多显示器环境下有时候会捕获错或者分辨率对不上。稳妥的做法是串流前把其他显示器断开或者禁用,只留一个主显示器。Windows 上可以在显示设置里把不用的显示器设成「断开此显示器」,这样 Sunshine 捕获的画面就干净了。另外,主机的屏幕分辨率最好和客户端的分辨率设成一致,避免服务端做额外的缩放处理,缩放本身也会引入延迟。

5.4 用 H.264 还是 HEVC 的决策表

对比项H.264HEVC (H.265)
同等画质所需码率较高低约 30% 到 50%
编码延迟较低略高
客户端解码兼容性几乎全支持老设备可能不支持
适用场景网络一般、设备较老网络好、设备较新

选哪个看两点:客户端设备新不新,网络带宽够不够。设备新、带宽足就上 HEVC,画质和带宽都划算;设备老是老款盒子或者老笔记本,老老实实 H.264,兼容性优先。我一般先在客户端试 HEVC,如果解码卡顿或者直接黑屏,就切回 H.264,不纠结。

5.5 串流结束后的收尾习惯

串流结束后有几个动作我每次都会做:把 Windows 的默认音频输出切回本地声卡,不然下次本地放视频没声音;确认 Sunshine 服务还在正常运行,有时候它会被系统休眠策略干掉;如果改了分辨率,把主机分辨率调回原生值。这些动作看着琐碎,但少做一步下次用的时候就得花时间排查。从那以后我每次串流完都强制走一遍这个收尾流程,省下来的排查时间远比这几秒钟多。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询