# PixelStreamer **Repository Path**: chen_Jerry/PixelStreamer ## Basic Information - **Project Name**: PixelStreamer - **Description**: 轻量级虚幻引擎像素流SDK - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 8 - **Created**: 2022-01-14 - **Last Updated**: 2025-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 3D 像素流: 虚幻引擎 WebRTC 核心组件 和 EpicGames 官方的像素流 SDK 相比,我们开发出了更轻量的像素流 SDK,包含 2 个文件:前端组件(WebComponents API)外加信令服务器(NodeJS)。 - signal.js:信令服务器,5KB - peer-stream.js:前端组件,20KB ## 启动信令服务器 首先从 npm 安装 WebSocket 依赖,然后启动 signal.js。 ``` npm install ws@8.4.0 node signal.js {key}={value} ``` 启动选项: | 选项 | 默认值 | 作用 | | ------ | ------ | -------------------- | | player | 88 | 浏览器(玩家)端口 | | engine | 8888 | UE4 端口 | | token | hello | 信令密码(url 末端) | | limit | 4 | 玩家数量上限 | ## 启动 UE4 首先开启像素流插件,然后在独立启动模式的设置中,或者打包后的文件中输入启动选项。 ``` Plugins > Built-In > Graphics > Pixel Streaming > Enabled Editor Preferences > Level Editor > Play > Additional Launch Parameters start packaged.exe -{key}={value} ``` 常用的启动选项: ``` -ForceRes -ResX=1920 -ResY=1080 -AudioMixer -RenderOffScreen -graphicsadapter=0 -AllowPixelStreamingCommands -PixelStreamingEncoderRateControl=VBR -PixelStreamingURL="ws://localhost:8888" ``` ## 前端的 2 种调用方法 JavaScript: ``` import "peer-stream.js"; const ps = document.createElement("video", { is: "peer-stream" }); ps.setAttribute("signal", "ws://127.0.0.1:88/hello"); document.body.append(ps); ``` or HTML: ``` ``` ## 常用的调试命令 信令服务器可以通过 eval 函数解释执行任意的 NodeJS 代码,使用时需要注意安全。 ``` ps.debug('PLAYER.clients.size') // 显示玩家数量 ps.debug('PLAYER.clients.forEach(p=>p.playerId!==playerId&&p.close(1011,"Infinity"));limit=1;') // 移除其他玩家 ps.debug('[...PLAYER.clients].map(x=>x.req.socket.remoteAddress)') // 每个玩家的IP地址 ps.debug('playerId') // 我的ID ps.onmouseenter=_=>{ps.focus();ps.requestPointerLock()}) // 鼠标锁 ps.style.pointerEvents='none' // 只读的