How 1catai/cloudgamingdemo works
这是面向受信任内网、单主机单玩家的云游戏串流 Demo:玩家用 Android Chrome 打开网页,选择串流参数并连接;网页申请会话租约、协商 WebRTC、播放视频音频并发送触屏输入,断开或超时后主机回收会话。Node 网关负责网页、租约与信令代理,不转发媒体;Moonlight streamer 桥接 Sunshine 与浏览器,Sunshine 采集并编码桌面画面。主要能力还包括 BeamNG 操作映射、编解码与预设选择、接收统计和延迟估算。未采样的媒体实现仅按 README 描述连线。
Main entry points: demo.js Demo 页面与连接 · server.mjs HTTP 与信令网关 · index.html 网页入口 · upstream.mjs 上游 HTTP 请求
Components 17
网页客户端
- Demo 页面与连接
public/demo.js - 网页入口
public/index.html - 视频预设
public/presets.js - 编解码检查
public/codecs.js - 码率档位
public/bitrate-slider.js
会话与网关
- HTTP 与信令网关
server.mjs - 单玩家租约
lib/session.mjs - 上游 HTTP 请求
lib/upstream.mjs
串流与主机
- Moonlight Web 服务
- Moonlight Streamer
- Sunshine 采集编码
输入与统计
- 触屏虚拟手柄
- BeamNG 操作映射
public/beamng-controls.js - 视频延迟估算
public/latency.js
Other components
- Android Chrome 玩家
- Windows 桌面与游戏
- ViGEm 虚拟手柄
Connections 22
- Android Chrome 玩家 → 网页入口: 打开网页
- 网页入口 → Demo 页面与连接: 加载界面
- Demo 页面与连接 → 视频预设: 读取预设
- Demo 页面与连接 → 编解码检查: 检查能力
- Demo 页面与连接 → 码率档位: 选择码率
- Demo 页面与连接 → HTTP 与信令网关: 请求会话
- HTTP 与信令网关 → 单玩家租约: 管理租约
- HTTP 与信令网关 → 上游 HTTP 请求: 请求上游
- 上游 HTTP 请求 → Moonlight Web 服务: HTTP 请求
- HTTP 与信令网关 → Moonlight Web 服务: 代理信令
- Demo 页面与连接 → HTTP 与信令网关: 心跳与结束
- Demo 页面与连接 → 触屏虚拟手柄: 配置触屏
- 触屏虚拟手柄 → Demo 页面与连接: 提供输入状态
- Demo 页面与连接 → BeamNG 操作映射: 映射操作
- Demo 页面与连接 → Moonlight Streamer: 协商 WebRTC
- Sunshine 采集编码 → Moonlight Streamer: 提供媒体流
- Moonlight Streamer → Demo 页面与连接: 发送媒体
- Demo 页面与连接 → Sunshine 采集编码: 发送控制输入
- Windows 桌面与游戏 → Sunshine 采集编码: 提供桌面画面
- Sunshine 采集编码 → ViGEm 虚拟手柄: 输出手柄输入
- ViGEm 虚拟手柄 → Windows 桌面与游戏: 呈现虚拟手柄
- Demo 页面与连接 → 视频延迟估算: 估算延迟