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

使用addTransceiver后,如何从localPeer与RemotePeer获取音频?

问题详情

我的尝试

我已根据自身理解、查阅的资料以及他人的同类问题解决思路,尽可能实现相关步骤,并参照他人写法编写代码。

预期目标

希望一切运行正常,同时积累更多WebRTC相关知识用于后续项目。

已执行步骤

  • 在localPeer上调用addTransceiver
  • 在RemotePeer上调用getTransceiver

我的连接代码

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

当前困境

在执行以下代码并将RemotePeer的方向设置为sendrecv后,我陷入了停滞:

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

请问在此之后,我该如何从RemotePeer获取音频?


解决方案

要从RemotePeer(即yourConn2)获取音频,按以下步骤操作即可:

  1. 交换ICE候选,打通网络连接
    两个PeerConnection需要交换ICE候选才能建立实际的网络通路,添加这段代码:
// localPeer发现ICE候选后,传给remotePeer
yourConn.onicecandidate = (e) => {
  if (e.candidate) {
    yourConn2.addIceCandidate(e.candidate);
  }
};

// remotePeer同理,把自己的候选传给localPeer
yourConn2.onicecandidate = (e) => {
  if (e.candidate) {
    yourConn.addIceCandidate(e.candidate);
  }
};
  1. 完成SDP会话协商
    添加收发器后,需要生成并交换会话描述(SDP)来确认音视频参数:
// localPeer生成offer并设置
yourConn.createOffer()
  .then(offer => yourConn.setLocalDescription(offer))
  .then(() => {
    // 把offer传给remotePeer并设置为远端描述
    yourConn2.setRemoteDescription(yourConn.localDescription);
    // remotePeer生成answer
    return yourConn2.createAnswer();
  })
  .then(answer => yourConn2.setLocalDescription(answer))
  .then(() => {
    // 把answer传回localPeer设置为远端描述
    yourConn.setRemoteDescription(yourConn2.localDescription);
  })
  .catch(err => console.error('会话协商出错:', err));
  1. 在RemotePeer上监听并播放音频
    当RemotePeer接收到音频轨道时,会触发track事件,通过这个事件获取音频并播放:
yourConn2.ontrack = (e) => {
  // 创建音频元素并自动播放
  const audioElement = document.createElement('audio');
  audioElement.srcObject = e.streams[0];
  audioElement.autoplay = true;
  document.body.appendChild(audioElement);
};
  1. 确认收发器方向设置
    如果之前设置RemotePeer的收发器方向为sendrecv,可以在会话协商完成后再次确认:
yourConn2.getTransceivers().forEach(transceiver => {
  transceiver.direction = 'sendrecv';
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:20:42