远程媒体流不可用,webrtc和kurento媒体流

时间:2020-06-02 13:58:16

标签: java webrtc kurento

我从https://doc-kurento.readthedocs.io/en/6.13.2/tutorials/java/tutorial-groupcall.html开始

当前,在UI中,我给用户选项以决定他们是否只希望音频或音频+视频通话。根据选择,传递getUserMedia()的约束,如果所有用户都选择相同类型的呼叫类型,则此方法可以正常工作。

但是,假设用户1仅选择音频,而用户2选择音频+视频,则用户1从用户2接收音频,而在用户2端,html video元素继续加载。

发现: 我认为这是SDP报价问题,因为用户1的报价和用户2的相应SDP答复不包含m = video,因为用户1仅选择了音频通话(效果很好)

但是,用户2的报价和用户1的相应SDP答复确实包含m =视频。

所以,我想要的是,即使用户2选择了视频通话,用户2仍从1接收音频。

1 个答案:

答案 0 :(得分:0)

您的流同时具有音频和视频轨道。由于某种原因,html video元素在这种情况下不会播放音频,因为它不会获取视频,而只会获取音频(因为另一个人禁用了视频)。有两种修复方法。

  1. 通过操纵mediaStream进行固定。 您可以创建一个在用户禁用视频后仅包含音轨的mediaStream。

    const audioStream = new MediaStream(); mediaStream.addTrack(originalStream.getAudioTracks()[0]); /* display audioStream in video element*/

  2. 通过为正确的mediaConstraints生成sdp进行修复 使用mediaConstraints创建{audio:true,video:false}时,可以通过将WebRtcPeer作为kurentoUtils传递来生成sdp。这样就可以获取音轨。