多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Sunshine:自托管游戏串流服务器的上手指南

Sunshine:自托管游戏串流服务器的上手指南 Sunshine自托管游戏串流服务器的上手指南【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/SunshineSunshine 是一个开源的自托管游戏串流服务器它把你现有的游戏 PC 变成串流主机笔记本、平板、电视这些轻量设备装个 Moonlight 客户端就能远程跑游戏。服务器端免费开源支持 Windows、Linux、macOS 三大系统只要家里那台 PC 显卡还撑得住就具备串流 3A 大作的条件。 Sunshine 能做什么和常见的远程桌面方案相比Sunshine 的差异主要体现在游戏场景的针对性优化上维度传统远程桌面方案Sunshine是否付费多数有会员费或限速免费、开源、自托管跨平台支持常局限同平台互连服务器三系统客户端覆盖几乎所有主流平台输入体验以键鼠映射为主延迟高完整手柄支持按游戏串流场景优化上手时间需注册账号、配对设备安装后约 5 分钟完成首次串流一句话概括适合有一台能打游戏的主机、多台想用它串流的设备的人不适合完全没有本地主机、想直接云游戏的场景——Sunshine 省的是串流软件的订阅费不是那台主机。⚙️ Sunshine 内部是怎么运转的串流的本质是把画面实时搬到客户端把输入搬回来。整条链路可以拆成五步画面捕获输入Windows 上走 Windows.Graphics.Capture 系统 API 直接取帧Linux 上支持 KMS、X11、Wayland 等多种抓屏方式KMS 是内核级的屏幕捕获接口性能最好。取到的画面还留在显存里不落 CPU。硬件编码处理画面交给 GPU 上的硬件编码器——NVIDIA 用 NVENC、AMD 用 AMF、Intel 用 QuickSync——压缩成 H.264 或 HEVC 视频帧。这一步决定了画质上限和 CPU 占用是整条链路里最值得调的环节。网络传输处理压缩后的音视频按 RTP一种专为实时媒体设计的传输协议打包通过 UDP 发给客户端服务器默认以 47989 作为基础端口。客户端解码输出Moonlight 客户端在 GPU 上解码、渲染画面同步播放音频你看到的低延迟就是这四步加在一起的结果。输入回传闭环手柄、键鼠操作原路传回主机由 Sunshine 注入游戏。整个过程相当于一场双向视频通话只是摄像头永远对准你的游戏画面。局域网内这条环路跑满通常在一百毫秒以内手感接近本地运行。 快速跑起来安装Windows 上用 winget 一条命令完成安装这也是最省事的路径winget install LizardByte.SunshineLinux 可从官方 release 页下载 DEB、RPM 或 AppImage 包安装macOS 有对应的 DMG 包。想自己编译的话先克隆仓库构建细节看 docs/building.mdgit clone https://gitcode.com/GitHub_Trending/su/Sunshine初始配置服务启动后浏览器访问本地 47990 端口Web 管理界面端口基础端口 47989 加 1即可进入首次配置。用下面的命令可以先确认界面已经起来curl -k https://localhost:47990首次访问是欢迎页要求你设置 Web 控制台的用户名和密码。注意密码只在这一次显示之后再也不会出现务必当场存好。后面所有 Sunshine 配置教程里提到的调参都在这套 Web 控制台里完成。连接客户端进入 Applications 页面添加应用最直接的验证方式是先加一个桌面条目串整个桌面之后再把想玩的游戏逐个加进去。客户端设备装同团队出品的 Moonlight免费Windows 客户端同样可以 winget 安装winget install LizardByte.MoonlightMoonlight 会自动发现局域网内的 Sunshine 主机输入配对信息后一键开始串流。到这里上面三步 Sunshine 安装步骤就完成了部署。 让它更好用编码器选择编码是串流最大的瓶颈软件编码如 x264会把 CPU 拉满、帧率掉得厉害所以第一原则是确保硬件编码器生效。在 Configuration 页面的编码器下拉框里选自动即可有独显时它会自动选 NVENC、AMF 或 QuickSync。推荐值近五年的独立显卡都可以放心交给硬件编码。网络参数比特率决定画质上限带宽决定实际体验。100M 有线环境下 1080p/60fps 的基础比特率设 20 Mbps 比较稳4K 对带宽要求翻倍建议先 1080p 跑顺再上探。做 Sunshine 低延迟设置时比调参数更重要的是让主机走有线网络无线端至少保持 5GHz 频段。分辨率与帧率基线建议 1920×1080 / 60fps。卡顿时的调整顺序先降帧率再降分辨率最后才降比特率——帧率对游戏手感的伤害远大于画质。如果你的显示设备支持 VRR可变刷新率让画面帧率和显示器刷新率动态同步在设置里打开它还能减少画面撕裂。⚠️ 容易踩的坑无法连接客户端发现不了主机 → 确认两端在同一局域网检查防火墙放行 47984TCP、47998–48010UDP等端口。画面卡顿、延迟高多数是带宽不够或回退到了软件编码 → 看日志确认当前用的是哪个编码器然后降分辨率和比特率。Linux 黑屏或取不到显示捕获方式和桌面环境不匹配 → 按所用桌面选对应的 grab 后端portal / KMS / X11KWin 的 overlay 会与 KMS 冲突可设置KWIN_USE_OVERLAYS0。手柄无响应输入设备没被正确注入 → Linux 检查 udev 规则仓库src_assets/linux/misc/60-sunshine.rules是否加载Windows 检查 VirtualHID 驱动是否安装。Web 密码忘了欢迎页密码只显示一次 → 只能删除本地配置目录里的 sunshine 配置文件后重新初始化。周边生态官方文档全部集中在 docs/ 目录入门看 getting_started.md串流优化看 performance_tuning.md疑难问题看 troubleshooting.md。讨论可以加入项目官方的 Discord 社区或在仓库提交 Issue 和参与 Discussions想贡献代码的话docs/contributing.md 有完整流程。源码顶层结构不复杂src/ ├── nvenc/ # NVIDIA NVENC 编码器实现 ├── platform/ # Linux / Windows / macOS 平台代码 ├── config.cpp # 配置解析与 REST API ├── video.cpp # 视频捕获与编码管线 └── network.cpp # 网络传输层服务器跑通、设备连上之后下一步可以按 performance_tuning 的思路做针对性调优也可以在 Web 控制台的主题设置里把管理页面调成顺眼的样子。本文基于当前仓库中的 Sunshine 源码版本 2026.131编写实际串流效果受网络环境、硬件配置与客户端设备影响。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表