簡體   English   中英

WebRTC - 如何更改現有 stream 的音軌

[英]WebRTC - How to change the audio track for a existing stream

我與音頻和視頻建立了 webRTC 連接。

在來電方,我想更改音頻輸入

例如,用戶從下拉列表中更改audioinput

替換現有 stream 的音軌的工作流程是什么?

我可以添加另一個音軌並使一個音軌在另一個音軌上處於活動狀態嗎? 如何?

看起來我可能需要再次調用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;
}

對於此操作,現在有一個更簡單的 API: RTCRtpSender.replaceTrack( )。

它可能看起來像這樣:

const currentSenders = peerConnection.getSenders();

const currentAudioSender = currentSenders.find((s) => s.track.kind === 'audio');

currentAudioSender.replaceTrack(newAudioTrack);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM