侧边栏壁纸
  • 累计撰写 98 篇文章
  • 累计创建 45 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Sunshine+Moonlight 低延迟远程串流和平板副屏

勤为径苦作舟
2025-03-11 / 0 评论 / 0 点赞 / 31 阅读 / 0 字

简介

Sunshine 提供低延迟、云游戏服务器功能,支持 AMD、Intel 和 Nvidia GPU 进行硬件编码,同时也支持软件编码。

Moonlight 是开源游戏流媒体客户端。

安装 Sunshine 的设备发送画面声音,安装 Moonlight 的设备接收前者发送的画面声音。

安装 Sunshine 发送流媒体

Win/Mac 在 Releases · LizardByte/Sunshine 下载对应系统版本。

Linux 我使用的是 Flatpak,先按照 Linux Debian/Deepin flatpak 换源安装软件
操作。

# 安装 sunshine
$ sudo flatpak install dev.lizardbyte.app.Sunshine

# 额外安装和配置
$ flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine
Sunshine User Service has been installed.
Use [systemctl --user enable sunshine] once to autostart Sunshine on login.
Configuring mouse permission.
Restart computer for mouse permission to take effect.

# 开机启动用户级 sunshine,或看下文改成系统级
$ systemctl --user enable sunshine
# 启动 sunshine
$ systemctl --user start sunshine

可选,将用户级 sunshine service 改成系统级:

# 复制 service
sudo cp ~/.config/systemd/user/sunshine.service /etc/systemd/system/sunshine.service
# 将 Wanted=xdg-desktop-autostart.target 改成 Wanted=graphical.target
sudo vim /etc/systemd/system/sunshine.service
# 关闭用户级 service
systemctl --user disable sunshine
# 重载并开机启动
sudo systemctl daemon-reload
sudo systemctl enable sunshine
sudo systemctl start sunshine

注意:本机 Deepin 首次启动时系统会卡住,按电源键后恢复。

浏览器打开提示的 https://localhost:47990,自定义用户名密码登录。

  • 修改Configuration-Locale简体中文 (Chinese Simplified)Save-Apply,刷新网页。
  • 配置-Network,勾选UPnPIP 地址族改为IPv4+IPv6保存-应用

安装 Moonlight 配对并接收流媒体

Moonlight Game Streaming: Play Your PC Games Remotely 下载对应系统版本。

# Linux 安装 Moonlight
flatpak install flathub com.moonlight_stream.Moonlight

安装 Moonlight 后,和 Sunshine 设备连接在同一网络下,Moonlight 首页就会显示 Sunshine 设备,点击后显示 PIN 码。

在 Sunshine 设备上打开 PIN 码配对页面 https://localhost:47990/pin,输入 Moonlight 设备上的 PIN 码,自定义设备名称后配对。

Moonlight 首页再次点击 Sunshine 设备后开始串流,显示 Sunshine 设备的画面。

安装虚拟显示器软件到 Sunshine 设备

Windows ParsecVDisplay

Releases · nomi-san/parsec-vdd 安装后CUSTOM中填写一个分辨率、帧率和 Moonlight 设置中的视频分辨率、视频帧数相同。

ADD DISPLAY一个显示器,单击创建的虚拟显示器,可以看到类似\\.\DISPLAY29的选项,在Resolution中可以修改为刚刚指定的分辨率、帧数。

回到 Sunshine 后台,将\\.\DISPLAY29填写到配置-Audio/Video-输出名称中,保存-应用

新版 Sunshine 有可能要填 device_id 而不是上面的 display_name,可以用命令行在 Sunshine 安装目录下运行sunshine.exe,看日志中对应的 device_id 是多少。

[2025-03-11 10:58:49.825]: Info: Currently available display devices:
[
  ……
  {
    "device_id": "{f0f2bd44-9933-5119-bde7-638f4079e4c0}",
    "display_name": "\\\\.\\DISPLAY51",
    ……
  }
]

{f0f2bd44-9933-5119-bde7-638f4079e4c0}填写到配置-Audio/Video-输出名称中,保存-应用

Sunshine 设备在设置-系统-屏幕中,将显示器排列方式改为扩展这些显示器保存-应用

最后在 Moonlight 首页点击设备连接即可。

如果没有扩展,重新修改下显示器排列方式。

Linux xrandr

# 查看到当前显示器为 HDMI-A-0
$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 2160, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

# 安装 xcvt
$ sudo apt install xcvt

# 生成分辨率、帧数为 Moonlight 设置中的视频分辨率、视频帧数
cvt 2800 1752 60
# 2800x1752 59.97 Hz (CVT) hsync: 108.85 kHz; pclk: 418.00 MHz
Modeline "2800x1752_60.00"  418.00  2800 3016 3320 3840  1752 1755 1765 1815 -hsync +vsync

# 使用 xrandr 创建新的 mode,--newmode 后面跟刚刚 cvt 产生的 modeline 信息,如果去掉“_60.00”就可以在显示器首选项中看到。
$ xrandr --newmode "2800x1752_60.00"  418.00  2800 3016 3320 3840  1752 1755 1765 1815 -hsync +vsync

# 再次查看显示器
$ xrandr
……
DisplayPort-6 disconnected (normal left inverted right x axis y axis)
  2800x1752_60.00 (0x695) 418.000MHz -HSync +VSync
        h: width  2800 start 3016 end 3320 total 3840 skew    0 clock 108.85KHz
        v: height 1752 start 1755 end 1765 total 1815           clock  59.97Hz

# 添加新的 mode
$ xrandr --addmode DisplayPort-6 "2800x1752_60.00"

# --left-of HDMI-A-0 为放在真实显示屏的左边
$ xrandr --output DisplayPort-6 --mode "2800x1752_60.00" --left-of HDMI-A-0

在 Sunshine 启动日志中,观察到 DisplayPort-6 的 id 为 7。

[2025-03-11 02:18:04.757]: Info: CLIENT CONNECTED
[2025-03-11 02:18:04.791]: Info: Detecting displays
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-0 (id: 0)DisplayPort-0 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: HDMI-A-0 (id: 1)HDMI-A-0 connected: true
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-1 (id: 2)DisplayPort-1 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-2 (id: 3)DisplayPort-2 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-3 (id: 4)DisplayPort-3 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-4 (id: 5)DisplayPort-4 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-5 (id: 6)DisplayPort-5 connected: false
[2025-03-11 02:18:04.799]: Info: Detected display: DisplayPort-6 (id: 7)DisplayPort-6 connected: false

回到 Sunshine 后台,将7填写到配置-Audio/Video-显示器编号中,保存-应用

最后在 Moonlight 首页点击设备连接即可。

// TODO 自定义脚本

公网串流

// TODO

参考

0

评论区