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

remote media stream not available, webrtc and kurento media stream

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

目前,在 UI 中,我为用户提供了选项来决定他们是只想要音频通话还是音频+视频通话。基于 selection,传递了 getUserMedia() 的约束,如果所有用户 select 相同类型的调用类型 ,这将正常工作。

但是,假设用户 1 select 只有音频和用户 2 select 的音频+视频,那么用户 1 在用户 2 端接收来自用户 2 的音频,html视频元素不断加载。

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

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

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

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

  1. 通过操纵 mediaStream 修复。 当用户禁用视频时,您可以创建一个只有音轨的 mediaStream。

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

  2. 通过为正确的 mediaConstraints 生成 sdp 进行修复 在使用 kurentoUtils 创建 WebRtcPeer 时,您可以通过将 mediaConstraints 作为 {audio:true,video:false} 传递来生成 sdp。那只会让你得到音轨。