拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Sunshine 游戏串流主机实操:3 步把 PC 变成 Moonlight 串流服务器

Sunshine 游戏串流主机实操3 步把 PC 变成 Moonlight 串流服务器【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine客厅电视只能接游戏主机却玩不了你 PC 里的游戏库Sunshine 是一个跑在自己游戏 PC 上的自托管游戏串流主机game stream host它用显卡硬件编码把画面压缩后推给装在电视、平板或手机上的 Moonlight 客户端显示并把输入反向传回来。整个方案开源免费、没有订阅费装好一次之后你的 PC 就是一台随叫随到的 Moonlight 串流服务器。核心信息速览关注点内容平台覆盖Windows、Linux、FreeBSDmacOS实验性配套客户端Moonlight可装在电视、平板、手机等任意设备编码方案NVENC / QuickSync / AMF / VAAPI / VideoToolbox 等硬件编码CPU 软编兜底管理入口浏览器 Web UI默认https://localhost:47990许可证开源免费LICENSE5 分钟装好 Sunshine 并打开 Web UI这一小节是最短路径的 Sunshine 安装教程按系统选一条命令winget install LizardByte.Sunshine # Windows flatpak install --system flathub dev.lizardbyte.app.Sunshine # Linux flatpak run --commandadditional-install.sh dev.lizardbyte.app.Sunshine brew install sunshine # macOS装完直接启动没装成服务就在终端跑sunshineLinux 上也可以起用户服务systemctl --user --now enable app-dev.lizardbyte.app.Sunshine启动后浏览器访问https://localhost:47990。页面提示不安全网站是因为自签名证书忽略即可。首次设置会让你创建一组用户名和密码——这组凭据只显示这一次当场记下来忘了只能靠命令行重置见下文碰到这些情况怎么办。Sunshine 和 Moonlight 配对也很轻Moonlight 客户端里添加这台主机它会显示一个 PIN你把 PIN 输进 Sunshine Web UI 顶部导航的 PIN 页、顺手给设备起个名字配对就完成了。按下启动后发生了什么串流链路拆解 ⚡客户端里点启动之后画面大致经历五步屏幕捕获Sunshine 从系统里抓当前帧。Windows 走 WGCWindows Graphics CaptureLinux 常用 KMSNVIDIA 卡还可以用 NvFBCX11 下硬件编码抓到的帧交给 GPU 编码器压成 H.264 / HEVC / AV1 码流这一步是 Sunshine 硬件编码的主战场CPU 基本不插手网络传输码流经 UDP 走局域网按 60fps 节奏每 16ms 突发发一帧瞬时数据量不小客户端解码Moonlight 在接收端实时解码上屏输入回传你手上的手柄、键鼠操作反向传回主机游戏看到的就是本地输入各编码 API 的平台支持矩阵摘自 README编码 API显卡支持平台NVENCNVIDIAWindows、LinuxVideoToolboxApple / IntelmacOSQuickSyncIntelWindowsAMFAMDWindowsVAAPIAMD / Intel / NVIDIALinux、FreeBSDVulkan VideoAMD / Intel / NVIDIALinux、FreeBSD实验性CPU 软编任意全平台一个实用提醒没有独显时用软编兜底没问题但 1080p 下 CPU 占用会肉眼可见地涨硬件允许的话尽量开硬编。编码器核心实现在 src/nvenc/NVENC和 src/platform/linux/VAAPI、Vulkan Video 等。Web UI 每个页签能干什么Sunshine 配置基本不用手写全部在浏览器里完成而且每个配置项都能用顶部搜索框直接搜。顶部导航分这几块AudioVideo选编码器对应上节的硬件编码方案、设分辨率和码率、选音频输出设备Applications管理可串流的应用列表增删改都在卡片上点Advanced / Network端口、UPnP、日志级别等细项Featured Apps官方推荐的 Moonlight 客户端和配套工具Troubleshooting日志与警告出问题第一站Applications 页签给每个游戏一个启动入口点 Add New 填名称、可执行文件路径、工作目录就能加一个应用还可以配prep-cmd——启动前先执行的命令以及应用退出时回滚用的undo命令。默认应用列表桌面、Steam 大屏模式来自 JSON 文件Linux 端是 src_assets/linux/assets/apps.json结构长这样{ apps: [ { name: Desktop, image-path: desktop.png }, { name: Steam Big Picture, detached: [setsid steam steam://open/bigpicture], prep-cmd: [{ do: , undo: setsid steam steam://close/bigpicture }] } ] }启动行为上有三个点需要心里有数启动新应用会先终止当前正在串流的应用prep-cmd执行失败会直接放弃启动应用退出时串流随之结束。虚拟手柄你在 Moonlight 端插着 Xbox、DualSense 或 Switch Pro 手柄Sunshine 会在主机上虚拟出一个同类型手柄传给游戏游戏里看到的就是它本人。Windows 和 Linux 支持最全通用、DS4/DS5、Switch Pro、Xbox 360/One/SeriesmacOS 暂不支持。Windows 主机要单独装 Virtual HID Driverlibvirtualhid 的驱动层装完建议重启Linux 上虚拟输入依赖 uinput 权限。HDR 串流主机系统里先开 HDR可能需要同接一块 HDR 显示器或 EDID 模拟器再在 Moonlight 客户端设置里打开 HDR否则流按 SDR 解码主机开着 HDR 时画面还会过曝。Windows 主机正式支持Linux 是实验性支持要求 KMS 捕获后端 支持 HEVC Main 10 或 AV1 10-bit 的 VAAPI 编码 支持 HDR 的合成器Gamescope、KDE Plasma 6 等详见 docs/getting_started.md 的 HDR 章节。拿它来做什么三个典型用法最常见的玩法就是 PC 串流到电视电视上的 Moonlight 直接进 Steam 大屏。操作路径——Applications 页签确认 Steam Big Picture 应用存在默认自带没有就按上节 JSON 结构手动加命令用steam steam://open/bigpictureAudioVideo 页签把分辨率设成电视原生比如 3840×2160码率按你的网络查 docs/performance_tuning.md 的参考值调然后在电视上选 Steam Big Picture 启动就行。电视搞定了还有个更极客的玩法主机不接显示器、人在别处通过 SSH 远程拉起串流Linux/X11 示例ssh user主机IP export DISPLAY:0; sunshineNVIDIA 卡在 X11 下走 NvFBC 捕获不接显示器时可能需要 HDMI 欺骗器或 EDID 模拟器让显卡保持输出状态。串流之前值得先给网络量一次体温。上面提到 Sunshine 每 16ms 突发一帧主机 2.5Gb 有线而客户端只有 1Gb 或 Wi-Fi 时数据就会掉。两端各跑一条 60 秒 UDP 反向测试见 docs/troubleshooting.md# 主机 iperf3 -s # 客户端 iperf3 -c {主机IP} -t 60 -u -R -b 50M看客户端输出里的丢包和抖动理想是丢包低于 5%、抖动低于 1ms。不达标就先换 5GHz Wi-Fi 或改有线再去谈码率的事。碰到这些情况怎么办 如果你发现 Web UI 账号密码忘了、进不去后台→ 大概率是首次设置那组凭据只存本地、不会再显示 → 试试停掉 Sunshine 后运行下面这条命令重置Flatpak 用flatpak run --commandsunshine dev.lizardbyte.app.Sunshine --creds ...sunshine --creds {新用户名} {新密码}如果你发现浏览器访问 47990 打不开→ 大概率是防火墙拦了 47990或者 Sunshine 根本没在跑 → 试试先用systemctl --user status app-dev.lizardbyte.app.SunshineLinux确认服务活着再去防火墙放行 47990。如果你发现画面卡顿、丢包→ 大概率是串流路径上某一端比另一端慢60fps 的突发收不完 → 试试先用上面的 iPerf3 定位瓶颈确认是速率差的话把主机网卡降速2.5G 降到 1G或者升级到 0.23.1 之后的版本改进了突发传输。如果你发现 Linux 上连上后键鼠/手柄没反应→ 大概率是运行 Sunshine 的用户没有 uinput 权限 → 试试把该用户加进input组然后重新登录FreeBSD 上执行pw groupmod input -m $USER。如果你发现主机开了 HDR、画面却发白过曝→ 大概率是 Moonlight 客户端侧没开 HDR流被按 SDR 解码 → 试试在客户端设置里启用 HDR主机端确认 HDR 已激活必要时接 EDID 模拟器Linux 上还要注意 NvFBC / X11 捕获后端不支持 HDR必须走 KMS。继续深入docs/getting_started.md各平台安装、首次设置、快捷键与 HDR 要求docs/configuration.md全部配置项port、locale、编码器、音频设备…逐项说明docs/troubleshooting.md凭据重置、网络测试、丢包处理docs/performance_tuning.md码率与分辨率调优参考src/platform/各平台屏幕捕获与编码实现KMS、NvFBC、WGC、VAAPI…想看内部行为也可以顺路瞄一眼 tests/【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门