Estoy trabajando en un proyecto en el que estamos usando una función de llamada de audio de WebRTC. La llamada de audio funciona bien. Al hacer clic en el botón, debemos habilitar compartir pantalla y reemplazar las pistas solo con la pista de pantalla compartida, pero replaceTrack web api reemplaza las pistas del mismo tipo, por ejemplo, la pista de audio solo se puede reemplazar con una pista de audio o la pista de video solo se puede reemplazar con una pista de video. En mi caso, estoy tratando de lograr dos cosas: #1: Quiero habilitar la pantalla compartida mientras la pista de audio está encendida. #2: Si puedo reemplazar la pista de audio con la pista de pantalla compartida adjunta sin renegociaciones.
Por favor, compruebe el código: -
(async () => { try { await navigator.mediaDevices.getDisplayMedia( { cursor: true }).then(stream => { let videoTrack = stream.getVideoTracks()[0]; var senders = peerConn.getSenders(); var sender = senders.find(function (s) { return s.track.kind == videoTrack.kind; }); sender.replaceTrack(videoTrack); videoTrack.onended = function () { sender.replaceTrack(localStream.getTracks()[1]); } }); } catch (err) { console.log('(async () =>: ' + err); } })();En este s.track.kind es audio y videoTrack.kind es video. sender.replaceTrack(videoTrack) da error ya que reemplaza la pista del mismo tipo