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);
- Unity端:
- 本地测试也建议启用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
相关产品推荐
相关产品推荐

