在webbrtc中实现报价接收和发送的合适方式是什么?



在我的情况下完成所有工作并运行后,我想从add track迁移到addtranciver

我有2个peerConnection

yourConn = new RTCPeerConnection(servers);
yourConn2 = new RTCPeerConnection(servers);

和以下步骤,我看到在许多例子中,我添加收发器,像这样

yourConn.addTransceiver(streams.getAudeoTracks()[0]);

如何从你的conn peer接收?我可以通过从点1发送到点2来实现吗p1从p2接收,无需再次协商

在ontrack事件中我应该怎么做呢?如果我想,我应该在那里使用addTrack吗?

这里yourConn2事件方这里报价发送什么关于报价接收?

yourConn2.ontrack = (e) => {
e.transceiver.direction = 'sendrecv';
await e.transceiver.sender.replaceTrack(remoteStream);

};

我应该抓住

吗?
RemoteAudioFromlocal = yourConn2.getTransceivers()[0];

and I upgrade"sendrecv的方向是这样的吗?

RemoteAudioFromlocal.direction = "sendrecv"
await RemoteAudioFromlocal.reciever.replaceTrack(remotePeerStramIn);

既然我弄明白了,我就回答我的问题我已经发现了所有我想问的问题在一边使用addTransceiver(),我可以在onTrackEvent中获得收发器就像

if (e.transceiver.receiver.track) {
remoteVideo = document.getElementById("wbrtcremote");
transceiversRemotePeer = new MediaStream([e.transceiver.receiver.track]);
remoteVideo.srcObject = transceiversRemotePeer

}

这就是我需要知道的所有内容在另一边也是一样的但是这里有一个小的不同比如你需要改变方向,因为

发送端创建的收发器默认为sendrecv,带有addtransceiver一边

yourConn.addTransceiver(streams.getAudeoTracks()[0]);

。这是由接收端相同mid的收发器镜像的。这里它在ontrack事件中暴露,

yourConn2.ontrack = await e => {
/* do something with e.track */
e.transceiver.direction = 'sendrecv';
await e.transceiver.sender.replaceTrack(receiverTrack);
};

而是在"要约接受"中;用例中,你可以通过getTransceivers()或上面的e.transceiver.sender

代码获得它。接收端(yourConn2),方向为"降级";从sendrecv到recvonly,因为默认情况下,该收发器未配置从receiverPc(yourConn2)向sendpc (yourConn)发回任何内容。

毕竟,它只是为了响应setRemoteDescription(offer)而创建的。要解决这个问题,您可以"升级"。发送接收的方向和设置发送的轨道。

e.transceiver.direction = 'sendrecv';
e.transceiver.sender.replaceTrack(localStream.getAudioTracks()[0]).then(() => {

}); 

如果您在receiverPc上创建本地SDP应答之前这样做,您应该能够实现sendrecv"没有更多的社民党谈判。ontrack事件在SRD承诺被解析之前被触发,因此您在该事件中所做的任何修改都应该在创建SDP应答之前完成。

最新更新