
1. 为什么我最终选择了 Sunshine 做客厅串流方案1.1 从“沙发玩 PC 游戏”这个执念说起把客厅电视变成 PC 游戏大屏这件事我折腾了差不多三年。最早用的是 Steam Link 硬件盒子后来换成电视上装 Steam Link 应用再后来试过各种投屏方案直到最后稳定在Sunshine Moonlight这套组合上才算真正把“躺在沙发上玩 3A 大作”这件事跑通了。核心需求其实很朴素PC 放在书房显卡是主力客厅电视是 65 寸 4K我想在客厅用手柄玩游戏不想把机箱搬来搬去也不想再买一台游戏主机。听起来简单但实际做起来延迟、画质、手柄连接、音频输出、分辨率匹配每一项都能卡你半天。Sunshine 是一个开源的游戏串流服务端装在你的 PC 上负责采集画面、编码、推流。Moonlight 是客户端装在电视、手机、平板、树莓派或者另一台电脑上负责接收画面、解码、显示同时把手柄和键鼠操作回传给 PC。两者配合本质上就是把 PC 变成了一个“私人云游戏服务器”局域网内延迟可以压到个位数毫秒画质能跑到 4K 60fps HDR。这套方案适合谁我总结下来是三类人一是 PC 显卡还不错但不想把机箱搬到客厅的二是家里有智能电视或电视盒子想物尽其用的三是喜欢折腾开源方案、不想被商业串流服务绑定的。如果你属于这三类那接下来的内容应该能帮你少走很多弯路。1.2 Sunshine 和 Moonlight 到底是什么关系很多人第一次接触会搞混这两个东西。我用一个生活化的类比来解释Sunshine 就像是你家厨房里的厨师负责做菜采集和编码游戏画面Moonlight 就像是餐厅里的服务员负责把菜端到客人桌上接收和解码画面。厨师只有一个但服务员可以有很多个手机、电视、平板都能当服务员。Sunshine 的前身是 GameStream 的开源替代方案。英伟达以前有个 GameStream 功能配合 Moonlight 客户端可以串流后来英伟达把这个功能砍了转向了自己的 GeForce NOW 云游戏服务。这一砍不要紧大量依赖 GameStream 的用户直接没了服务端。Sunshine 就是在这个背景下成长起来的它完全开源不依赖英伟达的专有协议AMD、Intel 显卡也能用甚至核显都能跑。Moonlight 客户端覆盖非常广Android TV、Apple TV、iOS、Android、Windows、Linux、树莓派、甚至一些自制系统上都有。这意味着你家里现有的设备大概率都能当客户端用不需要额外买硬件。这一点比 Steam Link 那种必须买专用盒子的方案灵活太多了。注意Sunshine 是服务端装在性能强的那台 PC 上Moonlight 是客户端装在你看画面的那台设备上。别装反了这是新手最容易犯的错误。1.3 局域网串流和远程串流的本质区别这里必须把一件事说清楚Sunshine Moonlight 的主战场是局域网。也就是说你的 PC 和客户端设备最好在同一个路由器下面。局域网带宽充足、延迟低、抖动小4K 60fps 串流对千兆内网来说压力不大。如果你想让 PC 在家里人在外面用手机流量玩那就涉及到公网串流。这个场景不是不能做但对网络环境要求高很多延迟和画质都会打折扣而且配置复杂度直线上升。我个人的建议是先把局域网跑通跑稳再考虑远程的事。局域网都没跑顺就去折腾远程只会让你怀疑人生。局域网串流的核心指标有三个延迟、带宽、稳定性。延迟决定操作跟不跟手带宽决定画质上限稳定性决定会不会突然卡顿或断连。Sunshine 和 Moonlight 在这三个指标上的表现很大程度上取决于你的网络硬件和编码设置而不是软件本身。所以后面我会花不少篇幅讲网络和编码参数的调优。2. 部署前的硬件与网络准备清单2.1 服务端 PC 的硬件门槛Sunshine 服务端对硬件的要求核心在编码能力上。画面采集之后要编码成视频流这个编码工作如果交给 CPU 软编画质好但延迟高、占用大交给 GPU 硬编延迟低、占用小但不同显卡的编码器质量有差异。英伟达显卡从 GTX 900 系列开始就有 NVENC 编码器到现在已经迭代了很多代H.264 和 HEVC 编码质量都很成熟。AMD 显卡对应的是 AMF 编码器RX 5000 系列之后表现不错。Intel 核显的 Quick Sync 其实被很多人低估了UHD 630 之后的核显跑 1080p 60fps 串流完全够用甚至能跑 1440p。我的建议是如果你有独立显卡优先用独显编码如果没有Intel 核显也能凑合。显存方面4K 串流建议 8GB 以上因为游戏本身也要吃显存。内存 16GB 起步32GB 更稳。CPU 反而不是瓶颈因为编码主要靠 GPU。硬件项最低要求推荐配置说明GPUGTX 900 / RX 5000 / UHD 630RTX 3060 / RX 6600 以上编码器决定画质和延迟显存4GB8GB 以上4K 游戏本身也吃显存内存8GB16GB 以上系统加游戏加串流服务CPU四核六核以上编码不靠它但游戏靠网卡千兆有线2.5G 有线无线串流不推荐2.2 网络环境是成败关键我踩过最大的坑就是网络。一开始我用 Wi-Fi 串流PC 走无线网卡电视也走 Wi-Fi结果画面时不时卡一下手柄操作有延迟。后来把 PC 改成有线连接电视还是 Wi-Fi好了一些但偶尔还是抖。最后把电视也改成有线整个世界都安静了。局域网串流对网络的要求核心是稳定而不是快。千兆有线网络跑 4K 60fps 串流绰绰有余码率一般设置在 50Mbps 到 100Mbps 之间。但 Wi-Fi 的问题在于抖动信号强度波动、邻居干扰、信道拥堵都会导致延迟突然飙升表现出来就是画面卡顿或者操作延迟。如果你实在没法拉网线那至少保证 PC 走有线客户端走 5GHz Wi-Fi并且路由器和客户端之间不要隔太多墙。2.4GHz Wi-Fi 基本不用考虑带宽和稳定性都不够。提示判断网络是否达标可以在 PC 上 ping 客户端设备的 IP看延迟和丢包。局域网有线延迟应该在 1ms 以内5GHz Wi-Fi 在 5ms 以内且不丢包。如果 ping 都不稳串流肯定不稳。2.3 客户端设备怎么选Moonlight 客户端的选择很多我按体验从好到差排个序有线连接的迷你 PC 或笔记本最好其次是 Apple TV 4K 或 Shield TV再其次是 Android TV 电视自带的应用最后是手机和平板。电视自带的应用商店里Moonlight 不一定有。Android TV 系统可以侧载 APKApple TV 需要非国区账号下载。如果你用的是普通智能电视可能连侧载都不行那就需要一个电视盒子。我目前用的是 Apple TV 4KMoonlight 客户端体验很稳手柄直接蓝牙连 Apple TV操作回传延迟很低。手柄方面Xbox 手柄兼容性最好蓝牙连客户端设备基本即插即用。PS 手柄也可以但有些客户端设备上需要额外映射。如果你用电视盒子注意确认它支持蓝牙手柄有些低端盒子蓝牙版本老延迟会比较高。3. Sunshine 服务端的安装与核心配置3.1 Windows 下的安装流程Windows 是 Sunshine 服务端最主流的平台安装包直接去 GitHub Releases 页面下载就行。我写这篇文章时的最新稳定版是 v0.23.1安装包是Sunshine-Windows-AMD64-installer.exe双击一路下一步即可。安装完成后Sunshine 会以系统服务的方式在后台运行同时托盘区会出现一个图标。右键图标可以打开 Web 管理界面默认地址是https://localhost:47990。注意是 HTTPS浏览器可能会提示证书不安全这是自签名证书点继续访问就行。第一次打开 Web 界面会让你设置用户名和密码这个凭据是给 Moonlight 客户端配对用的。设置好之后进入主界面你会看到 Applications、Configuration、Pin 等几个标签页。注意Sunshine 默认监听 47989、47990、48010 等端口。如果你装了防火墙或者安全软件记得放行这些端口否则客户端搜不到服务端。3.2 关键配置项逐个拆解Sunshine 的配置项不少但真正影响体验的就那么几个。我按重要性排序讲。编码器选择在 Configuration 的 Audio/Video 标签下Encoder 选项决定用哪个硬件编码器。NVIDIA 显卡选nvidia_nvencAMD 选amd_amfIntel 选intel_quicksync。如果你不确定可以先选autoSunshine 会自动检测。但我建议手动指定因为 auto 有时候会选错。码率设置Bitrate 决定视频流的带宽占用。局域网千兆网络下1080p 60fps 建议 20-30Mbps1440p 建议 40-50Mbps4K 建议 60-100Mbps。码率越高画质越好但网络压力也越大。我的经验是先设一个保守值跑通再逐步往上加找到画质和稳定性的平衡点。分辨率与帧率Resolution 和 FPS 要和客户端显示设备匹配。电视是 4K 就设 3840x2160是 1080p 就设 1920x1080。帧率一般设 60如果你的电视支持 120Hz 且 PC 性能足够可以设 120但码率也要相应提高。视频格式H.264 兼容性最好HEVC 压缩效率更高但部分老客户端不支持AV1 是最新的但需要较新的显卡和客户端。我一般用 HEVC画质和带宽平衡得比较好。配置项推荐值1080p推荐值4K说明Encodernvidia_nvencnvidia_nvenc按显卡品牌选Bitrate20-30 Mbps60-100 Mbps局域网可拉高Resolution1920x10803840x2160匹配电视FPS6060120 需电视支持Video FormatHEVCHEVC兼容性与效率平衡3.3 应用程序与应用列表配置Sunshine 默认会串流整个桌面但更好的做法是为每个游戏单独配置一个“应用”。在 Applications 标签下你可以添加应用指定可执行文件路径和启动参数。这样 Moonlight 客户端上会显示一个游戏列表点哪个就启动哪个不用每次手动去桌面找。配置应用时有个细节Working Directory 要设对有些游戏依赖工作目录下的资源文件设错了会启动失败。另外Launch Command 里可以用cmd /c包一层方便执行带参数的命令。如果你想让串流启动时自动切换显示分辨率可以在应用配置里加上--prep-cmd和--detach-cmd参数分别指定启动前和结束后执行的命令。这个功能对于 PC 显示器分辨率和电视分辨率不一致的情况特别有用。3.4 开机自启与后台运行Sunshine 安装后默认就是开机自启的因为它注册成了系统服务。但有时候你会发现托盘图标没出现或者服务没起来。这时候去 Windows 服务管理器里找SunshineService确认它的启动类型是“自动”状态是“正在运行”。如果你用的是 Linux 服务端比如 Ubuntu自启需要手动配置 systemd 服务。Sunshine 官方提供了 systemd unit 文件复制到/etc/systemd/system/下然后systemctl enable sunshine就行。Ubuntu 下还要注意权限问题Sunshine 需要访问显卡设备通常要把运行用户加入video和render组。提示Linux 下如果 Sunshine 启动后无法捕获画面大概率是 Wayland 和 X11 的兼容问题。目前 Sunshine 对 X11 支持更好建议在 X11 会话下运行。如果你用的是 Ubuntu 22.04 之后的版本默认是 Wayland需要在登录界面切换到 X11。4. Moonlight 客户端的安装与画质调优4.1 各平台客户端安装要点Moonlight 的安装因平台而异。Android TV 和 Android 手机可以直接从应用商店或 GitHub 下载 APK。Apple TV 和 iOS 需要非国区 Apple ID在 App Store 搜索 Moonlight 下载。Windows 和 Linux 客户端也有但一般用不上因为服务端就在 PC 上。树莓派上装 Moonlight 是个有意思的玩法可以把它变成一个专门的串流盒子。树莓派 4 跑 1080p 60fps 没问题4K 就吃力了。安装命令在 Raspberry Pi OS 下是sudo apt install moonlight-embedded但注意这个包比较老新功能可能不支持建议从源码编译。安装完成后客户端会自动搜索局域网内的 Sunshine 服务端。如果搜不到可以手动添加 IP 地址。配对时需要在 Sunshine Web 界面的 Pin 标签下输入客户端显示的 4 位 PIN 码配对成功后就能看到应用列表了。4.2 画质参数怎么调才不卡Moonlight 客户端的画质设置比服务端更直观因为它直接暴露了分辨率、帧率、码率三个核心参数。我的调优思路是先固定分辨率和帧率再调码率。分辨率选电视的原生分辨率不要选“跟随主机”因为主机分辨率可能和电视不一致会导致缩放模糊。帧率选 60除非你的电视是 120Hz 且 PC 游戏能跑满 120fps。码率从低往高试1080p 从 15Mbps 开始4K 从 50Mbps 开始每次加 10Mbps直到出现卡顿就退回上一档。Moonlight 还有一个“视频解码器”选项Android 设备上一般选硬件解码Apple TV 上默认就是硬件解码。如果出现花屏或绿屏可能是解码器兼容问题换一个试试。客户端平台推荐分辨率推荐码率解码方式Apple TV 4K3840x216060-80 Mbps硬件Shield TV3840x216060-80 Mbps硬件Android TV1920x108020-30 Mbps硬件树莓派 41920x108015-25 Mbps硬件手机1920x108015-25 Mbps硬件4.3 手柄与输入设备映射手柄连接是串流体验的关键一环。我的做法是把手柄直接连到客户端设备上而不是连到 PC 上。因为客户端设备离你近蓝牙延迟低而且 Moonlight 会把输入事件回传给 PCPC 上识别为虚拟手柄。Xbox 手柄在 Apple TV 和 Android TV 上兼容性都很好蓝牙配对后直接能用。PS5 手柄在 Apple TV 上也能用但触摸板功能可能不支持。如果你用的是杂牌手柄可能会遇到按键映射错乱的问题这时候需要在 Moonlight 客户端里手动映射。键盘鼠标的串流比较少见但 Moonlight 也支持。如果你在电视上玩策略游戏可以接一套无线键鼠到客户端设备上。不过要注意键鼠的输入延迟比手柄更敏感无线键鼠的回报率如果太低操作会感觉拖沓。4.4 HDR 串流的开启条件HDR 串流是很多人关心的功能但它有一串前提条件PC 的显示器或虚拟显示器要支持 HDR游戏要支持 HDRSunshine 要开启 HDR 选项客户端电视要支持 HDRMoonlight 客户端也要开启 HDR。我实测下来Windows 下开启 HDR 串流最稳的方式是让 PC 的显示输出始终处于 HDR 模式然后在 Sunshine 配置里勾选 HDR。如果 PC 显示器不支持 HDR可以用虚拟显示器驱动创建一个支持 HDR 的虚拟屏。这个配置稍微复杂新手可以先不折腾SDR 画质已经足够好了。注意HDR 串流对带宽要求更高4K HDR 建议码率 80Mbps 以上。如果你的网络跑不满HDR 画面会出现色带或闪烁。5. 常见问题排查与实战避坑经验5.1 客户端搜不到服务端怎么办这是新手遇到最多的一个问题。排查思路按顺序来先确认 PC 和客户端在同一个局域网再确认 Sunshine 服务在运行然后检查防火墙端口最后看是不是路由器开了 AP 隔离。AP 隔离是很多人忽略的点。有些路由器默认开启“无线隔离”或“AP 隔离”导致无线设备之间不能互相通信。这时候客户端能上网但搜不到 PC。解决办法是进路由器管理界面关掉这个选项。防火墙方面Windows 自带的防火墙可能会拦截 Sunshine 的端口。你可以临时关闭防火墙测试如果关掉就能搜到那就去防火墙里手动放行 Sunshine 的所有端口。第三方安全软件也可能拦截比如某些杀毒软件的网络防护功能。5.2 画面卡顿和延迟高的排查画面卡顿的原因很多我按概率从高到低排网络不稳定、码率设太高、编码器选错、客户端解码能力不足、PC 性能不够。网络问题最好排查在 PC 上持续 ping 客户端 IP看延迟和丢包。如果 ping 值波动大或有丢包那就是网络问题优先解决网络。码率太高的话降低码率试试。编码器选错的话换一个编码器对比。客户端解码能力不足的表现是画面卡但 PC 端编码正常这时候降低分辨率或帧率试试。PC 性能不够的表现是游戏本身帧率就低串流只是把低帧率传过来了这时候要降低游戏画质设置。现象可能原因排查方法解决方向画面周期性卡顿网络抖动ping 测试改有线或换信道操作延迟高码率过高降低码率找平衡点花屏绿屏解码器不兼容换解码器硬件解码画面模糊码率过低提高码率网络允许就加声音不同步音频缓冲调整音频设置换音频后端5.3 音频问题和解决方案音频问题主要有两类没声音和声音延迟。没声音通常是 Sunshine 的音频设备选错了。在 Configuration 的 Audio 标签下Audio Sink 要选对输出设备。如果你用虚拟音频设备要确认它被正确识别。声音延迟表现为画面和声音不同步一般是音频缓冲设置太大。Sunshine 有音频缓冲选项可以调小试试。但调太小可能导致爆音需要找平衡。我一般用默认值遇到不同步再微调。还有一个坑是 PC 上同时有多个音频输出设备Sunshine 可能选到了错误的那个。比如你 PC 接了显示器音箱和耳机Sunshine 默认可能选了显示器音箱但你想用耳机。这时候手动指定音频设备就行。5.4 手柄连接和按键映射问题手柄问题分两种连不上和按键错乱。连不上一般是蓝牙配对问题删掉重新配对通常能解决。Apple TV 上如果手柄连不上试试重启 Apple TV 再配对。按键错乱一般是手柄类型识别错误。Moonlight 客户端里可以手动选择手柄类型比如把 Xbox 手柄识别成 PS 手柄就会错乱。如果自动识别不对手动指定一下。还有一个隐蔽的坑是 Steam 的手柄映射。如果你在 PC 上开了 SteamSteam 可能会接管手柄输入导致 Moonlight 收到的输入被 Steam 拦截。解决办法是在 Steam 设置里关掉“Xbox 配置支持”或者把 Moonlight 加入 Steam 的非 Steam 游戏列表。5.5 我的独家避坑清单折腾这么久我总结了几条别人不太会告诉你的经验。第一条别用无线网卡做服务端。我试过 PC 走 Wi-Fi 串流延迟波动大到没法玩。有线是底线没有商量余地。第二条虚拟显示器驱动是神器。如果你的 PC 显示器是 1080p 但电视是 4K串流时 PC 会以 1080p 渲染再放大画质损失明显。装一个虚拟显示器驱动创建一个 4K 虚拟屏串流时切到虚拟屏画质直接拉满。第三条Sunshine 的日志是你的朋友。遇到问题先看日志路径在 Sunshine 安装目录的logs文件夹下。日志里会明确告诉你编码器初始化失败、端口占用、权限不足等问题比瞎猜快多了。第四条别追最新版。Sunshine 和 Moonlight 的更新有时候会引入新 bug我一般等一个版本稳定后再升级。升级前备份配置文件出问题能快速回滚。第五条电视的游戏模式要打开。很多电视默认开启各种画质增强这些处理会增加输入延迟。在电视设置里找到“游戏模式”或“PC 模式”打开后延迟能降不少。6. 进阶玩法与性能压榨技巧6.1 用虚拟显示器实现分辨率自动切换前面提到的虚拟显示器驱动值得单独展开讲。Windows 下常用的虚拟显示器驱动有 IddSampleDriver 和 Parsec 的虚拟显示器。安装后会多出一个虚拟屏幕你可以把它设成电视的分辨率和刷新率。然后在 Sunshine 的应用配置里用--prep-cmd指定串流启动前切换到虚拟屏用--detach-cmd指定串流结束后切回物理屏。这样你平时用物理显示器串流时自动切到虚拟屏两边都不耽误。这个方案的好处是PC 不需要真的接一台 4K 显示器也能以 4K 分辨率渲染游戏。对于书房显示器是 1080p 但客厅电视是 4K 的用户来说这是画质提升最明显的一步。6.2 码率与画质的精细平衡码率不是越高越好因为网络带宽和客户端解码能力都有上限。我的调优方法是先设一个明显偏高的码率观察卡顿情况然后逐步降低直到卡顿消失再稍微加一点余量。具体操作上1080p 60fps 的 H.264 串流20Mbps 画质已经不错30Mbps 基本看不出压缩痕迹。HEVC 的话15Mbps 就能达到 H.264 20Mbps 的画质。4K 60fps 的 HEVC60Mbps 起步80Mbps 比较理想100Mbps 以上提升就不明显了。还有一个技巧是开启动态码率。Moonlight 客户端支持动态调整码率网络好的时候自动拉高网络差的时候自动降低。这个功能在 Wi-Fi 环境下特别有用能减少卡顿。6.3 多客户端同时串流的可行性Sunshine 支持多个客户端同时连接但同一时间只有一个客户端能串流画面。也就是说你可以配对多个设备但一次只能用一个。如果你想两台电视同时玩不同的游戏那需要两台 PC 分别跑 Sunshine。不过有个场景是多客户端切换你在客厅用 Apple TV 玩回卧室用手机接着玩。Moonlight 支持断点续连但游戏本身不一定支持。如果游戏不支持随时存档切换设备就得重新开始。6.4 串流之外的扩展思路Sunshine 不只能串流游戏还能串流整个桌面。如果你把桌面配置成一个应用那就可以在电视上做任何 PC 能做的事比如看网页、放视频、甚至办公。我有时候会在电视上串流桌面看 B 站比电视自带的应用体验好。另外Sunshine 配合一些自动化工具可以实现更复杂的场景。比如用 Home Assistant 检测你打开电视自动启动 Sunshine 并切换虚拟显示器。这些玩法需要一定的折腾精神但跑通之后体验很爽。提示串流桌面时建议把 PC 分辨率设成和电视一致否则鼠标坐标会错位。虚拟显示器方案在这里同样适用。6.5 性能监控与瓶颈定位串流跑起来之后怎么知道瓶颈在哪我一般看三个指标PC 端 GPU 编码占用、网络带宽占用、客户端解码占用。PC 端可以用任务管理器看 GPU 的 Video Encode 占用如果接近 100%说明编码器是瓶颈需要降低分辨率或帧率。网络带宽可以用路由器管理界面看如果跑满了千兆说明码率设太高了。客户端解码占用在 Moonlight 的调试信息里能看到如果解码延迟高说明客户端性能不够。Moonlight 客户端有个“显示性能信息”的选项打开后画面上会叠加显示延迟、码率、丢帧等数据。这个功能在调优时非常有用能直观看到每个环节的表现。7. 我个人在实际操作中的几点体会这套方案我用了两年多从最初的频繁卡顿到现在基本无感中间踩的坑不计其数。最大的体会是网络是地基编码是框架客户端是装修。地基不稳后面怎么调都是白搭。所以如果你刚开始折腾先把网线拉好把路由器调好再谈画质和延迟。另一个体会是不要追求一步到位。我一开始就想跑 4K 60fps HDR结果各种问题堆在一起根本不知道从哪排查。后来退回到 1080p 60fps SDR跑稳了再一步步往上加反而更快到达目标。串流调优是个迭代过程每一步只改一个变量才能准确定位问题。最后分享一个小技巧Sunshine 的 Web 界面里有个“测试编码器”的功能可以在不启动游戏的情况下测试编码器是否正常工作。这个功能在换显卡或更新驱动后特别有用能快速确认编码器有没有问题。很多人遇到串流黑屏就慌其实先跑一下编码器测试大概率能定位到原因。这套方案后续还可以这样扩展如果你有多个房间的电视可以每个房间配一个便宜的电视盒子当客户端共用一台 PC。如果你想让朋友远程观战可以研究一下公网串流但那个复杂度是另一个量级了。先把局域网玩透剩下的慢慢来。