Как сделать общий доступ к экрану с помощью SDK Simple-Peer WebRTC

Я пытаюсь внедрить webrtc & simple peer в свой чат. Все работает, но я бы хотел добавить возможность совместного использования экрана. Для этого я попробовал:

$("#callScreenShare").click(async function(){
   if(captureStream != null){                
     p.removeStream(captureStream)
     p.addStream(videoStream)
     captureStreamTrack.stop()
     captureStreamTrack =captureStream= null
     $("#callVideo")[0].srcObject = videoStream
     $(this).text("screen_share")
   }else{
     captureStream = await navigator.mediaDevices.getDisplayMedia({video:true, audio:true})
     captureStreamTrack = captureStream.getTracks()[0]
     $("#callVideo")[0].srcObject = captureStream
     p.removeStream(videoStream)
     console.log(p)
     p.addStream(captureStream)
     $(this).text("stop_screen_share")
   }
})

Но я останавливаю камеру и после этого ничего не делаю, и мой видеопоток на компьютере моего коллеги блокируется. Никаких ошибок, ничего более.

Я помещаю console.log при запуске потока событий. В первый раз он срабатывает, но когда я вызываю метод addStream, он не

Если бы кто-то мог мне помочь, это было бы действительно полезно.


person johannb75    schedule 08.04.2020    source источник


Ответы (1)


Что я делаю, так это заменяю гусеницу. Поэтому вместо удаления и добавления потока:

p.streams[0].getVideoTracks()[0].stop()
p.streams[0].replaceTrack(p.streams[0].getVideoTracks()[0], captureStreamTrack, p.streams[0])

Это заменит видеодорожку из потока на дорожку с дисплея.

одноранговые документы

person Dirk V    schedule 03.05.2020