class Streamer { constructor(containerId, options = {}) { this.containerId = containerId; this.options = { url: 'ws://localhost:8888', ...options }; this.player = null; } async init() { try { // 动态加载UE5像素流的JavaScript库 await this.loadScript('https://cdn.jsdelivr.net/npm/@epicgames-ps/pixel-streaming@latest/dist/player.js'); // 初始化播放器 this.player = new PixelStreaming.Player({ onStateChange: (state) => { console.log('Streamer state changed:', state); }, onError: (error) => { console.error('Streamer error:', error); } }); // 连接到UE5服务器 await this.player.connect(this.options.url); // 将播放器附加到容器 const container = document.getElementById(this.containerId); if (container) { this.player.mount(container); console.log('Streamer initialized successfully'); } else { throw new Error(`Container with id ${this.containerId} not found`); } } catch (error) { console.error('Failed to initialize streamer:', error); throw error; } } loadScript(url) { return new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = url; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } disconnect() { if (this.player) { this.player.disconnect(); console.log('Streamer disconnected'); } } } // 将Streamer类挂载到window对象上 window.Streamer = Streamer;