Sunshine 游戏串流从装机到出画面:30 分钟最短路径
2026/9/12 16:30:41 网站建设 项目流程

Sunshine 游戏串流从装机到出画面:30 分钟最短路径

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

主机塞在书房桌下,你却想瘫在客厅沙发续昨晚的进度。抬机器太沉,跨房间拉 HDMI 太乱,再买一套显示硬件更贵。Sunshine 自托管游戏串流服务端一次性解决这事:主机端负责采集画面、硬件编码,走局域网把流推到手机、平板或电视上,开源免费,30 分钟内能串出第一帧。

动手前的验收标准与准备

跑通长什么样,三条全满足才算成功:

  • 客户端设备(手机、平板、电视盒子)打开 Moonlight,主机出现在设备列表里
  • 点列表里的 "Desktop" 条目,屏幕出现主机桌面实时画面,键鼠有响应
  • 主机端装完服务后全程待命,不需要你做任何额外操作

需要备好的前提:

  • 主机支持 Windows、Linux 或 macOS(macOS 为实验性,暂不支持手柄)
  • 两台设备在同一局域网,网络稳定
  • 客户端设备能装 Moonlight

核心操作路径

下载安装包

按系统拿官方安装包:Windows 到 Release 页下Sunshine-Windows-AMD64-installer.msi,双击安装,防火墙规则安装器自动写入;Linux 按发行版选 deb、rpm 或 flatpak 包;macOS 把 DMG 里的Sunshine.app拖进 Applications。

Flatpak 用户多敲一条,补装输入依赖,否则键鼠注入缺组件:

flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine

安装程序正常退出、无报错弹窗,这步就成了。

把服务拉起来

Windows 上 MSI 已注册成系统服务、开机自启,这步跳过。Linux 手动启动:

systemctl --user start app-dev.lizardbyte.app.Sunshine systemctl --user --now enable app-dev.lizardbyte.app.Sunshine

第一条是这次启动,第二条是开机自启。macOS 首次启动会弹屏幕录制和麦克风授权,都点允许,否则后面采集不到画面。跑systemctl --user status app-dev.lizardbyte.app.Sunshine,状态显示 running 就对了。

建管理员账号

服务活着之后,浏览器打开https://localhost:47990。页面提示"不安全"是正常现象,自签名证书所致,忽略即可。首次进入会让你设置管理员用户名和密码,记好它,配对全靠这套凭据。

配对出画面

客户端设备打开 Moonlight,它会自动扫到局域网里的主机。首次连接时 Moonlight 弹一个四位 PIN 码,回到 Web UI 顶部导航的 PIN 页输入,顺手给设备起个名字,看到成功提示即配对完成。再点 "Desktop",屏幕出现主机桌面,画面声音都到位——第一帧,串出来了。

常用参数与反直觉默认值

只挑你大概率会碰的四个:

max_bitrate

  • 是什么:主机端编码码率上限(Kbps)
  • 默认值:0,码率完全由 Moonlight 请求决定
  • 何时改:想给带宽封顶时才填,比如5000

encoder

  • 是什么:强制指定编码器(nvenc / quicksync / amdvce / vaapi / vulkan / software)
  • 默认值:空,自动选第一个可用编码器
  • 何时改:排障时才手动指定,日常留空

nvenc_preset

  • 是什么:NVENC 性能预设,1 最快,7 压缩率最高
  • 默认值:1
  • 何时改:网络或客户端解码顶不住时,多数情况提高码率比调它划算

upnp

  • 是什么:让 Sunshine 自动为公网串流开端口
  • 默认值:disabled
  • 何时改:要走出局域网时才设enabled

配置页顶部有搜索框,几百个设置项直接输bitrate就能定位,不用翻菜单。

默认行为里藏着的四个坑

  • 同一时间全局只有一条串流,新串流会终止上一个在跑的应用 → 想多人用只能轮流 → 谁在串谁用,用完退出。
  • Steam 这类进程启动命令会立即退出,流刚开就断 → 应用配置里没勾detached→ 勾上脱离式启动。
  • Flatpak 环境里宿主程序找不到 → 沙箱隔离了命令 → 命令前加flatpak-spawn --host前缀。
  • audio_sink想让主机静音,声音照放 → 它只决定采哪个声卡 → 改用virtual_sink指向虚拟声卡。

两个真实用法

旧本带不动 3A 的人:主机端串流书房主力机,客户端分辨率按自己屏幕设,硬前提是两台设备同一局域网且网络稳定。

只想要一块大屏的人:Applications 页自带的 Desktop 条目直接串到电视,放本地片源、看网页;max_bitrate保持默认0就行,静态内容带宽占用很小。

一家人共用一台主机的人:每个成员在自己的 Moonlight 设备独立配对,Web UI 里各记各的设备名;硬前提是同时只有一条流,谁连着谁用。

卡住了先翻这里

你看到什么最可能的原因做这一个动作
https://localhost:47990打不开防火墙拦了 47990 端口Windows 确认 MSI 写入的防火墙规则还在,临时关防火墙验证一次
Moonlight 发现不了主机不在同一局域网,或服务没跑Linux 跑systemctl --user status app-dev.lizardbyte.app.Sunshine确认 running
串流卡顿、掉帧大概率是网络,不是 Sunshine主机端跑iperf3 -s,客户端跑iperf3 -c <主机IP> -t 60 -u -R -b 50M,目标丢包低于 5%
忘了管理员密码凭据丢失不用重装,sunshine --creds {新用户名} {新密码}直接重置

日志在 Web UI 的 Troubleshooting 页直接看,也能翻文件:Windows 在%ProgramFiles%\Sunshine\config\sunshine.log,Linux/macOS/FreeBSD 在~/.config/sunshine/sunshine.log。还有疑问就去项目社区的 issue 区搜,重复坑大多有人踩过。

收尾

  • 编码器拿不准就留空
  • 码率 0 表示听 Moonlight 的
  • 卡了先跑网络体检再怪软件
  • 公网串流前先开upnp

现在就拿第二台设备配一次对,再往应用列表里加一条真实游戏,完整走一遍"配对 → 启动 → 串流 → 退出"。

  • 完整参数表
  • 疑难杂症索引
  • 各平台编码与采集实现

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询