ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Sunshine + Moonlight 串流方案:从原理到部署的完整指南

Sunshine + Moonlight 串流方案:从原理到部署的完整指南 1. 为什么我最终选择了 Sunshine 这套串流方案1.1 从一次搬家引发的折腾说起去年搬家之后我把主力游戏 PC 放在了书房客厅里只有一台 65 寸的电视和一台闲置的迷你主机。问题很现实我想躺在沙发上用手柄玩《艾尔登法环》但不想把几十斤的机箱搬来搬去也不想再买一台游戏主机。最开始我试过 HDMI 长线直连15 米的铜缆穿墙走线1080p 还能凑合一上 4K 高刷就开始闪屏、掉信号而且线材又粗又硬走明线丑得没法看。后来转向无线串流方案试过几个商业软件要么延迟高得没法玩动作游戏要么画质被压得惨不忍睹要么就是订阅制收费。折腾了一圈我最后落在了Sunshine Moonlight这套组合上。简单说Sunshine 是运行在游戏 PC 上的服务端负责采集画面、编码、推流Moonlight 是运行在电视、手机、平板、迷你主机上的客户端负责接收、解码、显示并把手柄和键鼠的输入回传。两者配合就能把客厅电视变成 PC 的游戏大屏。这套方案完全开源免费延迟可以压到个位数毫秒级别画质支持 4K HDR 高帧率手柄震动、多声道音频这些细节也都能保留。这篇文章适合谁看如果你手上有一台性能还不错的 PC又想让电视、平板、甚至掌机变成它的“第二块屏幕”那这套方案值得你花一个下午折腾。我会从整体思路、核心原理、实操步骤、参数调优到常见问题排查完整讲一遍我踩过的坑和验证过的配置。哪怕你之前没接触过串流跟着做也能跑起来。1.2 串流方案选型为什么是 Sunshine 而不是别的在动手之前先想清楚一件事串流的本质是什么其实就是把 PC 渲染出来的画面实时压缩成视频流通过网络送到另一台设备上解码播放同时把远端的操作指令传回来。听起来简单但要做到“感觉不到延迟”中间每一环都很关键。市面上常见的方案大致分几类。一类是硬件厂商自带的串流功能比如某些显卡驱动里内置的串流优点是配置简单缺点是绑定硬件、功能受限而且近两年不少用户反馈驱动更新后串流功能变得不稳定甚至被移除这也是很多人转向第三方方案的原因。另一类是商业串流软件画质和延迟调校得不错但要么收费要么有分辨率、时长限制。还有一类就是开源方案Sunshine 是其中的代表。我选 Sunshine 的核心理由有三点。第一它不绑定硬件N 卡、A 卡、Intel 核显都能用编码器可以选 NVENC、AMF、QuickSync 或者软件编码兼容性极好。第二它把控制权完全交给用户码率、分辨率、帧率、编码器、音频通道全都可以自己调想追求极致低延迟还是极致画质自己权衡。第三Moonlight 客户端覆盖极广从 Android TV、Apple TV、iOS、Android 到 Windows、Linux、树莓派甚至一些掌机系统都有对应版本这意味着你家里几乎任何一块带屏幕的设备都能变成串流终端。提示Sunshine 和 Moonlight 是配套使用的Sunshine 做服务端Moonlight 做客户端两者缺一不可。不要指望只装一个就能用。1.3 这套方案能解决哪些实际需求我把这套方案用下来覆盖的场景比想象中多。最核心的是客厅大屏游戏书房 PC 负责渲染客厅电视通过迷你主机上的 Moonlight 客户端接收4K 60 帧 HDR 玩 3A 大作手柄蓝牙连电视盒子体验接近原生主机。其次是多设备共享同一台 PC可以同时给卧室的平板、书房的笔记本提供串流各自玩各自的当然性能要够。还有就是远程办公和轻度创作有时候我在客厅想改个文档、修张图直接串流过去比抱着笔记本方便。这里要澄清一个常见误解串流不是“远程桌面”。远程桌面协议优化的是文字和静态画面玩游戏会卡成幻灯片。串流协议优化的是视频流和低延迟输入两者底层逻辑完全不同。Sunshine 走的是视频编码推流的路子所以才能做到高帧率、低延迟。2. 核心原理拆解画面是怎么从书房跑到客厅的2.1 采集、编码、传输、解码四步走理解原理调参的时候才不会瞎调。整个链路可以拆成四步。第一步是画面采集。Sunshine 在 PC 上通过系统提供的桌面复制接口或者显卡厂商的采集接口把当前屏幕画面抓取出来。这一步的关键是采集帧率要跟得上如果采集环节就掉帧后面再怎么优化也没用。第二步是视频编码。采集到的原始画面数据量极大4K 60 帧的裸数据每秒好几十 GB必须压缩。Sunshine 会调用显卡上的硬件编码器把画面压成 H.264 或 HEVC 码流。硬件编码器的效率直接决定了延迟和画质这也是为什么强烈建议用支持硬件编码的显卡。第三步是网络传输。编码后的码流通过网络发到客户端。这一步的瓶颈通常是网络带宽和稳定性。有线千兆网络最稳Wi-Fi 的话 5GHz 频段是底线2.4GHz 基本没法玩。第四步是客户端解码和显示。Moonlight 收到码流后用客户端的硬件解码器解压然后显示出来。同时客户端的输入设备手柄、键鼠的操作会被打包回传给 Sunshine注入到 PC 系统里形成闭环。这四步里编码和网络是延迟的主要来源。编码延迟取决于显卡编码器性能和参数设置网络延迟取决于你的路由器和布线。理解了这一点后面调优就有方向了。2.2 编码器怎么选NVENC、AMF、QuickSync 的取舍编码器是整套方案里最影响体验的一环。我分别用过 N 卡的 NVENC、A 卡的 AMF 和 Intel 核显的 QuickSync说说实际感受。NVENC 是目前最成熟的选择。从 GTX 10 系开始N 卡的硬件编码器就支持 H.264 和 HEVC20 系之后还支持 AV140 系。它的优势是延迟低、画质好、驱动稳定Sunshine 对它的支持也最完善。如果你用的是 N 卡基本闭眼选 NVENC 就行。AMF 是 A 卡的方案。近两年进步很大7000 系显卡的 AV1 编码器表现不错但整体生态和稳定性还是略逊于 NVENC。如果你手上是 A 卡AMF 完全可用只是遇到问题时排查资料相对少一些。QuickSync 是 Intel 核显的方案。它的优势是功耗低适合没有独显或者想用核显分担编码的机器。但核显编码的画质和延迟跟独显比还是有差距尤其是高码率 4K 场景。编码器适用硬件优势注意点NVENCNVIDIA 显卡延迟低、画质好、支持广老卡不支持 AV1AMFAMD 显卡新卡 AV1 表现好生态资料相对少QuickSyncIntel 核显功耗低、可分担高码率画质略弱软件编码任意 CPU兼容性最好延迟高、吃 CPU不推荐游戏注意如果你的 PC 同时有独显和核显Sunshine 里可以指定用哪个编码器。一般优先用独显核显留着干别的。2.3 网络链路有线、Wi-Fi 与电力猫的真实差距网络这块我踩坑最多。最开始图省事用 Wi-Fi路由器在客厅PC 在书房隔了一堵墙。结果就是画面时不时卡一下动作游戏根本没法玩。后来换成有线世界立刻清净了。具体说说几种连接方式的实测差距。有线千兆是最理想的延迟稳定在 1 到 2 毫秒码流再高也不怕。Wi-Fi 5GHz 近距离同一房间无遮挡也能用延迟 3 到 8 毫秒波动1080p 60 帧没问题4K 高码率就吃力。Wi-Fi 穿墙基本告别高画质延迟忽高忽低画面会周期性卡顿。电力猫通过家里电线传输网络是个折中方案实测延迟比 Wi-Fi 穿墙稳但带宽受电路质量影响大老房子可能只有百兆水平。我的建议很直接能拉网线就拉网线。如果实在拉不了优先考虑 Wi-Fi 6/6E 的路由器把 PC 和客户端尽量放在同一频段、同一房间。电力猫作为最后手段别抱太高期望。2.4 延迟的构成哪些环节可以优化很多人问“为什么我串流有延迟”其实延迟是多个环节叠加的。大致可以拆成采集延迟、编码延迟、网络传输延迟、解码延迟、显示延迟再加上输入回传延迟。采集和编码延迟主要靠硬件编码器压下来一般能控制在几毫秒。网络传输延迟取决于你的链路有线可以忽略Wi-Fi 波动大。解码延迟取决于客户端芯片现在的电视盒子和手机解码 4K HEVC 都很轻松。显示延迟跟电视本身的响应时间有关游戏模式能显著降低。所以优化顺序应该是先保证网络稳定再调编码参数最后看客户端和显示设备。很多人一上来就调码率其实网络不稳的话码率调再低也没用。3. 实操部署从零把 Sunshine 跑起来3.1 服务端安装Windows 上的完整流程先讲 Windows 服务端的安装这是最主流的场景。去 Sunshine 的官方发布页下载最新的 Windows 安装包注意选对架构现在基本都是 64 位。安装过程很傻瓜一路下一步就行。安装完成后Sunshine 会以系统服务的形式在后台运行托盘区会出现一个小图标。第一次运行需要做初始配置。打开浏览器访问本机的管理端口默认是https://localhost:47990会看到一个 Web 管理界面。第一次访问需要设置用户名和密码这个密码是给管理界面和客户端配对用的务必记牢。设置完成后进入主界面能看到 Applications、Configuration、Troubleshooting 几个标签页。这里有个细节Sunshine 默认会创建一个叫“Desktop”的应用意思是串流整个桌面。如果你只想串流某个游戏可以在 Applications 里手动添加指定游戏的可执行文件路径。不过对于大多数场景直接串流桌面最灵活想玩什么打开什么就行。提示Windows 防火墙可能会拦截 Sunshine 的端口。安装时如果弹出防火墙提示记得勾选“专用网络”和“公用网络”都允许否则客户端连不上。3.2 客户端安装电视盒子、手机、平板怎么选客户端这边Moonlight 的覆盖面很广。Android TV 和电视盒子去应用商店搜 Moonlight 安装iOS 和 iPadOS 在 App Store 下载Android 手机在应用商店或官网下载 APKWindows 和 Linux 也有对应的桌面客户端。我家客厅用的是安卓电视盒子装的是 Moonlight 的 Android TV 版本遥控器操作很顺手。如果你用的是 Apple TV也有对应的 tvOS 版本。手机和平板适合躺在床上玩配个蓝牙手柄体验更好。安装完成后客户端会自动搜索局域网内的 Sunshine 服务端。如果搜不到可以手动添加 PC 的 IP 地址。第一次连接时客户端会显示一个四位数的配对码你需要回到 Sunshine 的 Web 管理界面在 PIN 页面输入这个码完成配对。配对成功后客户端就能看到服务端上配置好的应用列表了。3.3 配对与首次连接那些容易卡住的点配对这一步看着简单但新手最容易卡在这里。常见的问题有几个。一是搜不到服务端。先确认 PC 和客户端在同一个局域网然后检查 PC 的防火墙有没有放行 Sunshine。Windows 上可以在“允许应用通过防火墙”里确认 Sunshine 的专用和公用网络都打了勾。如果还不行试试在客户端手动输入 PC 的 IP。二是配对码输入后没反应。这通常是管理界面的会话过期了刷新一下页面重新输入。另外注意配对码有时效性别磨蹭太久。三是连上了但黑屏。这种情况多半是编码器没选对或者显卡驱动有问题。去 Sunshine 的 Troubleshooting 页面看看日志一般会有明确报错。四是画面出来了但没声音。检查 Sunshine 的音频配置确认输出设备选的是你实际用的声卡或 HDMI 输出。有时候系统默认音频设备切换了Sunshine 还指着旧的设备。3.4 Linux 服务端部署与开机自启如果你像我一样游戏 PC 装的是 LinuxSunshine 同样能用。以 Ubuntu 为例官方提供了 deb 包下载后sudo dpkg -i安装即可。安装完需要手动启动服务并配置开机自启。开机自启这块Sunshine 官方推荐用 systemd 用户服务。具体做法是创建一个 service 文件指定 Sunshine 的可执行路径然后systemctl --user enable启用。这样每次登录桌面后Sunshine 会自动跑起来。注意 Linux 下串流桌面需要正确的显示服务器配置Wayland 和 X11 的行为不太一样如果遇到采集黑屏可以试试切换到 X11 会话。# 查看 Sunshine 服务状态 systemctl --user status sunshine # 启用开机自启 systemctl --user enable sunshine # 手动启动 systemctl --user start sunshineLinux 下的编码器选择跟 Windows 类似N 卡用 NVENCA 卡用 VAAPI 或 AMFIntel 用 VAAPI。配置界面跟 Windows 版一致都是通过浏览器访问管理端口。4. 画质与延迟调优把参数调到最适合你的状态4.1 分辨率、帧率、码率的三角关系这三个参数是画质调优的核心它们互相制约。分辨率决定画面清晰度帧率决定流畅度码率决定压缩后的数据量。三者关系可以这样理解分辨率越高、帧率越高需要的码率就越大如果码率不够画面就会出现块状模糊、拖影。我的经验值是这样的。1080p 60 帧码率 20 到 30 Mbps 就很清晰了。1440p 60 帧建议 40 到 50 Mbps。4K 60 帧至少 80 Mbps追求画质可以上到 150 Mbps。如果是 4K 120 帧码率得翻倍而且对网络和客户端解码能力要求都很高。Moonlight 客户端里可以手动设置这些参数。我一般建议先设一个保守值跑通再逐步往上加观察延迟和画面稳定性。如果加码率后开始卡顿说明网络或解码扛不住了往回收一档。4.2 码率设置不是越高越好很多人有个误区觉得码率拉满画质就最好。实际上码率超过网络承载能力反而会导致丢包、卡顿体验更差。码率设置要匹配你的实际带宽。判断方法很简单串流时观察 Moonlight 的统计信息一般按某个组合键能调出来看网络延迟和丢帧数。如果网络延迟稳定、丢帧为零说明码率还有上探空间如果延迟波动大、丢帧增加就该降码率了。另外HEVC 比 H.264 在同等画质下能省大约 30% 到 50% 的码率。所以如果你的客户端支持 HEVC 解码现在大部分设备都支持优先用 HEVC能在相同带宽下获得更好画质。更新的 AV1 编码效率更高但需要显卡和客户端都支持普及度还不够。4.3 HDR 与色彩让画面更接近原生HDR 是提升观感的大杀器尤其是玩画面精美的 3A 大作。要启用 HDR 串流需要满足几个条件PC 端 Windows 开启 HDR显示器或虚拟显示器支持 HDRSunshine 配置里启用 HDR客户端和电视也支持 HDR。我实测下来HDR 串流在支持的游戏里效果非常明显暗部细节和高光表现都更好。但要注意HDR 会占用更多带宽码率要相应提高。另外有些客户端在 HDR 和 SDR 切换时会有短暂黑屏属于正常现象。色彩方面确保 PC 端输出色彩格式和客户端匹配。如果出现颜色发灰、发白多半是色彩范围有限/完整设置不一致在显卡驱动和 Sunshine 里统一一下就好。4.4 手柄、震动与音频的细节处理串流的沉浸感一半来自画面一半来自手柄和音频。Moonlight 对主流手柄的支持很好Xbox 手柄、PS 手柄、Switch Pro 手柄基本即插即用。连接方式上手柄可以连客户端设备比如电视盒子也可以连 PC。连客户端的好处是输入延迟更低因为手柄信号直接进客户端跟画面一起回传。震动反馈需要客户端和服务端都支持。大部分情况下自动就能用如果没震动检查 Moonlight 设置里有没有开启震动选项。音频方面Sunshine 支持多声道输出。如果你的家庭影院或电视支持 5.1、7.1可以在配置里开启对应声道数。普通电视用立体声就行。音频延迟一般不明显但如果遇到音画不同步可以在客户端里微调音频缓冲。5. 常见问题排查与避坑经验5.1 连接类问题速查连接问题是最常见的我整理了一个速查表遇到问题按这个顺序排查。现象可能原因排查方法客户端搜不到服务端防火墙拦截、不同网段检查防火墙、确认同一局域网配对码无效会话过期、输错刷新管理页面重新配对连接后黑屏编码器错误、驱动问题查看 Sunshine 日志连接后闪退客户端版本不匹配更新客户端和服务端画面卡顿网络不稳、码率过高降码率、改有线排查的核心思路是看日志。Sunshine 的 Troubleshooting 页面会记录详细的运行日志编码器初始化失败、网络错误、权限问题都会写清楚。养成看日志的习惯能省下大量瞎猜的时间。5.2 画质与延迟问题的定位思路画质糊、延迟高这两个问题经常一起出现但原因可能不同。画质糊先看码率够不够再看编码器是不是软件编码软件编码画质差且延迟高。如果码率够、编码器也对那可能是网络丢包导致的重传和降质检查网络链路。延迟高先测网络延迟ping 一下 PC 的 IP排除网络问题后再看编码延迟。Sunshine 日志里有时会显示编码耗时如果编码耗时异常高说明显卡编码器过载或者驱动有问题。客户端的解码能力也要考虑老旧的电视盒子解码 4K HEVC 可能力不从心。5.3 我踩过的几个典型坑第一个坑是虚拟显示器。我的 PC 平时接的是 1080p 显示器但我想串流 4K 到电视。直接串流的话Sunshine 采集的是 1080p 画面电视上就是拉伸的。解决办法是装一个虚拟显示器驱动创建一个 4K 的虚拟屏幕让 Sunshine 采集这个虚拟屏幕。这样即使物理显示器是 1080p也能串流 4K 画面。第二个坑是音频设备切换。有次串流突然没声音查了半天发现是 Windows 更新后默认音频设备变了Sunshine 还指着旧的设备。在配置里重新选一下就好了。建议把常用音频设备固定下来避免系统自动切换。第三个坑是Wi-Fi 信道干扰。我家附近 Wi-Fi 信号特别多2.4GHz 频段挤得没法用5GHz 也偶尔受干扰。后来在路由器里手动指定了一个相对干净的信道稳定性提升明显。如果你用 Wi-Fi 串流建议用工具扫一下周边信道占用情况。第四个坑是客户端省电模式。有些电视盒子和手机在省电模式下会限制网络和解码性能导致串流卡顿。把 Moonlight 加入省电白名单或者直接关掉省电模式。5.4 性能与功耗的平衡串流时 PC 的负载不低尤其是高分辨率高帧率编码。显卡编码器虽然独立于渲染单元但也会占用一部分显卡资源。如果 PC 同时在跑其他重负载任务可能会影响串流稳定性。我的做法是串流时尽量关掉不必要的后台程序尤其是吃显卡的。另外如果 PC 的散热不好长时间编码会导致降频进而影响串流。确保机箱风道通畅必要时调一下风扇曲线。功耗方面串流本身增加的功耗主要是编码器那部分相比游戏渲染本身不算大头。但如果你的 PC 平时待机功耗就高可以考虑串流结束后让 PC 进入睡眠需要时再唤醒。Sunshine 支持 Wake-on-LAN配合客户端可以远程唤醒 PC很方便。6. 进阶玩法与扩展场景6.1 多客户端与多用户并发Sunshine 支持多个客户端同时连接但要注意同一时间通常只有一个客户端能获得完整的输入控制权。如果家里几个人想同时玩需要 PC 有足够强的性能并且用虚拟机或独立用户会话隔离。这个场景比较进阶普通家庭用户一般用不到。更实用的场景是一个 PC 服务多个房间。比如白天在书房用显示器玩晚上躺床上用平板串流周末在客厅用电视玩。同一套 Sunshine 配置不同客户端切换无缝衔接。6.2 掌机与移动设备的串流实践现在很多掌机比如各种 Windows 掌机、安卓掌机都能装 Moonlight。把 PC 作为“云端”掌机作为终端就能在掌机上玩 PC 上的 3A 大作画质和帧率远超掌机本地性能。我试过用安卓掌机串流配好手柄映射后体验相当不错续航也比本地跑游戏长得多。移动设备方面手机和平板串流适合玩一些对操作精度要求不高的游戏或者配合蓝牙手柄玩。触屏操作 Moonlight 也支持但玩动作游戏还是手柄更靠谱。6.3 串流做远程办公和轻度创作的可能性除了游戏串流也能用于办公。把 PC 的强大性能串流到轻薄本或平板上跑一些本地跑不动的软件比如视频剪辑、3D 建模、图像处理。延迟方面办公场景对延迟不敏感体验很流畅。不过要注意串流的色彩准确度可能不如本地显示器做专业调色、印刷设计这类对色彩要求极高的工作还是本地更靠谱。日常文档、代码、轻度修图完全没问题。6.4 后续可以尝试的优化方向如果你已经把基础串流跑通了可以试试这些进阶优化。一是尝试 AV1 编码如果你有 40 系 N 卡或 7000 系 A 卡AV1 能在更低码率下提供更好画质。二是优化网络 QoS在路由器里给串流流量设置高优先级减少其他设备抢占带宽。三是尝试不同的采集方式Sunshine 支持多种采集接口某些游戏用特定接口延迟更低。最后分享一个小技巧Sunshine 的配置文件可以直接编辑有些参数在 Web 界面里没有暴露但改配置文件能生效。改之前记得备份改完重启服务。我在实际使用中发现把编码器的预设从默认调到低延迟模式动作游戏的跟手程度会有可感知的提升代价是画质略微下降具体怎么取舍看你的游戏类型。
返回列表