我有一个通过音频和视频建立的webRTC连接。
在呼叫方,我想更改音频输入。
例如用户从下拉列表中更改audioinput
。
替换现有流的音频轨道的工作流程是什么?
我可以添加另一个音轨并使另一个音轨活跃吗?怎么样?
看起来我可能需要再次调用getUserMedia
并传递约束(?),据我了解,它可以创建一个新的mediaStream
实例,而不修改现有实例。
最佳答案
对我们来说,它看起来像这样:
const replaceTrack = async (peerConnection, oldSender, track, stream) => {
peerConnection.removeTrack(oldSender);
const newSender = peerConnection.addTrack(track, stream);
const localSdp = await peerConnection.createOffer({ offerToReceiveAudio: 1 });
await peerConnection.setLocalDescription(reply);
const response = await sendOffer(peerConnection.localDescription);
const description = new RTCSessionDescription(response);
peerConnection.setRemoteDescription(description);
return newSender;
}