You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity到JS单向WebRTC视频传输无画面问题求助

Unity WebRTC 向JS端推送视频无画面问题排查方案

核心排查方向

1. 确认Unity端视频轨道的有效性

  • 检查Unity代码中是否正确捕获视频源(如WebCamTexture或Unity内置视频采集组件),并完成MediaStreamTrack创建与RTCPeerConnection绑定。
  • 必须执行peerConnection.AddTrack(videoTrack, mediaStream);这类操作,且确保videoTrack.Enabled设为true。
  • 打印videoTrack.ReadyState,确认状态为Live,排除视频源未激活的问题。

2. 验证SDP交换的媒体完整性

  • 对比Unity发送的Offer SDP与JS端接收内容,确认包含m=video媒体段及对应编解码器信息,示例格式如下:
    m=video 9 UDP/TLS/RTP/SAVPF 96 97
    a=rtpmap:96 VP8/90000
    a=rtpmap:97 H264/90000
    
  • 若SDP中无m=video段,说明Unity端未成功将视频轨道添加到PeerConnection。

3. JS端视频元素绑定与播放检查

  • 确保JS端正确处理远程流并绑定到<video>元素,核心代码示例:
    peerConnection.ontrack = (event) => {
      const video = document.getElementById('remoteVideo');
      if (!video.srcObject) {
        video.srcObject = event.streams[0];
        video.play().catch(err => console.error('视频播放失败:', err));
      }
    };
    
  • 查看浏览器控制台,排除NotAllowedError(需用户交互触发播放)、AbortError等播放异常。

4. ICE候选的完整交换验证

  • 确认信令服务器完整转发所有ICE候选,两端均执行候选添加操作:
    • Unity端:peerConnection.AddIceCandidate(candidate);
    • JS端:peerConnection.addIceCandidate(candidate);
  • 本地测试也建议启用STUN服务器,避免部分网络环境下P2P连接无法建立。

5. 版本与环境兼容性检查

  • 确认测试浏览器版本符合Unity WebRTC 2.4.0要求(如Chrome 90+、Firefox 88+)。
  • 检查Unity WebGL构建是否启用WebRTC模块,无相关功能被禁用。

代码针对性检查

  • Unity NativeWebSocket:验证SDP和ICE候选的序列化/反序列化逻辑,避免JSON格式错误导致消息篡改。
  • Node.js信令服务器:排查消息转发时是否遗漏type、sdp、candidate等关键字段,确保消息完整传递。

内容的提问来源于stack exchange,提问作者Stove Games Games

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:10:03