webRTC:视频流在本地播放但不在远程播放
webRTC: Video stream plays on local but doesn't play on remote
建筑师
- 一个网页使用 RTCPeerConnection 创建连接。它在其配置中使用了一个 STUN 和一个 TURN 服务器。只有在收集到所有候选人后,它才会创建报价并向远程客户端发送报价
if(pc.iceGatheringState === "complete"){
const resp = await fetch("REMOTE URL", {
method: "post",
body: JSON.stringify({
offer: btoa(JSON.stringify(pc.localDescription)),
}),
});
const sdp = await resp.text();
pc.setRemoteDescription(
new RTCSessionDescription(JSON.parse(atob(sdp)))
).catch((e) => console.log(e));
}
远程 (GO) 服务器使用 REST API 接受 offer 并使用 answer。只有在远程对等点上收集了所有候选者后,才会发送答案。 IE。在收到 ""
个候选人后
远程服务器有一个正在发送到主机的本地 RTP 流。主机在发送 offer
之前添加一个收发器
pc.addTransceiver("video", { direction: "recvonly" });
- 当接收到
onTrack
事件时,stream
被添加到一个变量中,并且当 iceConnectionState
更改为 connected
问题
以上设置在本地网络中完美运行。主持人和同行都选择了 host
候选人,视频播放完美。
使用远程连接时,无论是 STUN (srflx) 候选还是 TURN(中继)候选,视频都不会播放。
chrome://webrtc-internals
清楚地表明交通部门选择了正确的候选人,但所选的 local
候选人没有交通。
我可以使用远程对等端上的 UDP 转储看到视频流正在完美发送。
调试信息
- 在远程网络上,使用
srflex
候选,nack
和 pli
计数与本地网络相比非常高
For approx 15 sec of video
pliCount:
local: 5
remote: 221
nackCount:
local: 7
remote: 2577
这听起来像是丢包。有几件事可能会导致它。
能否尝试降低发送内容的比特率?看看是不是拥堵造成的。
您可以尝试降低 MTU 吗?如果您从 FFMPEG 转发数据包,请尝试将 pkt_size 附加到 URL,例如 this
建筑师
- 一个网页使用 RTCPeerConnection 创建连接。它在其配置中使用了一个 STUN 和一个 TURN 服务器。只有在收集到所有候选人后,它才会创建报价并向远程客户端发送报价
if(pc.iceGatheringState === "complete"){
const resp = await fetch("REMOTE URL", {
method: "post",
body: JSON.stringify({
offer: btoa(JSON.stringify(pc.localDescription)),
}),
});
const sdp = await resp.text();
pc.setRemoteDescription(
new RTCSessionDescription(JSON.parse(atob(sdp)))
).catch((e) => console.log(e));
}
远程 (GO) 服务器使用 REST API 接受 offer 并使用 answer。只有在远程对等点上收集了所有候选者后,才会发送答案。 IE。在收到
""
个候选人后远程服务器有一个正在发送到主机的本地 RTP 流。主机在发送
之前添加一个收发器offer
pc.addTransceiver("video", { direction: "recvonly" });
- 当接收到
onTrack
事件时,stream
被添加到一个变量中,并且当iceConnectionState
更改为connected
问题
以上设置在本地网络中完美运行。主持人和同行都选择了 host
候选人,视频播放完美。
使用远程连接时,无论是 STUN (srflx) 候选还是 TURN(中继)候选,视频都不会播放。
chrome://webrtc-internals
清楚地表明交通部门选择了正确的候选人,但所选的 local
候选人没有交通。
我可以使用远程对等端上的 UDP 转储看到视频流正在完美发送。
调试信息
- 在远程网络上,使用
srflex
候选,nack
和pli
计数与本地网络相比非常高
For approx 15 sec of video
pliCount:
local: 5
remote: 221
nackCount:
local: 7
remote: 2577
这听起来像是丢包。有几件事可能会导致它。
能否尝试降低发送内容的比特率?看看是不是拥堵造成的。
您可以尝试降低 MTU 吗?如果您从 FFMPEG 转发数据包,请尝试将 pkt_size 附加到 URL,例如 this