webRTC:视频流在本地播放,但不';不要玩遥控器 建筑师 网页用于创建连接。它在配置中使用了一个眩晕和一个回合服务器。它创建一个报价,并仅在收集了所有候选客户之后才将报价发送给远程客户端

webRTC:视频流在本地播放,但不';不要玩遥控器 建筑师 网页用于创建连接。它在配置中使用了一个眩晕和一个回合服务器。它创建一个报价,并仅在收集了所有候选客户之后才将报价发送给远程客户端,webrtc,video-streaming,stun,Webrtc,Video Streaming,Stun,远程(GO)服务器使用REST API接受报价,并用应答。只有在远程对等机上收集了所有候选人之后,才会发送答案。即,在收到“候选人后 远程服务器有一个正在发送到主机的本地RTP流。主机在发送报价之前添加收发器 当收到onTrack事件时,流被添加到变量中,并且仅当iceConnectionState更改为connected时,才设置为组件的srcObject 问题 在本地网络的情况下,上述设置非常有效。主持人和同伴都选择了一个主持人候选者,视频播放得非常完美 当使用远程连接时,如果是眩晕(s

远程(GO)服务器使用REST API接受报价,并用应答。只有在远程对等机上收集了所有候选人之后,才会发送答案。即,在收到
候选人后

  • 远程服务器有一个正在发送到主机的本地RTP流。主机在发送
    报价之前添加收发器

  • 当收到
    onTrack
    事件时,
    被添加到变量中,并且仅当
    iceConnectionState
    更改为
    connected
    时,才设置为
    组件的
    srcObject
  • 问题 在本地网络的情况下,上述设置非常有效。主持人和同伴都选择了一个
    主持人
    候选者,视频播放得非常完美

    当使用远程连接时,如果是眩晕(srflx)候选和转向(中继)候选,视频都不会播放

    chrome://webrtc-internals
    清楚地显示交通工具已选择正确的候选者,但所选的
    本地
    候选者上没有交通

    我可以看到,在远程对等机上使用UDP转储可以完美地发送视频流

    调试信息
  • 在远程网络上,使用
    srflex
    候选,与本地网络相比,
    nack
    pli
    计数非常高

  • 对我来说,这听起来像是丢包。有几件事可能是导致它的原因

    你能试着降低你正在发送的内容的比特率吗?看看是不是交通堵塞造成的


    你能试着降低MTU吗?如果您正在从FFMPEG转发数据包,请尝试将pkt_大小附加到URL,如

    谢谢。这很好用。修正的是MTU的大小。我很好奇你是如何达到1280的MTU尺寸的。是1200(webRTC)+头吗?很久以前我调试时偶然发现,现在1280是我一直使用的第一个值:)1200实际上是一个更好的赌注,这是Pion使用的MTU!
    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));
            }
    
    pc.addTransceiver("video", { direction: "recvonly" });
    
    For approx 15 sec of video
    
    pliCount:
     local: 5
     remote: 221
    
    nackCount:
     local: 7
     remote: 2577