各位大佬们,本人在基于webRTC + websocke实现视频聊天会议室遇到一个问题,就是实现本地视频的回调显示,在一对一或者多人视频的时候,只要有两人或两人以上者开启视频,就会出现websocke断开连接,数据传输通道关闭。但是如果我把本地视频不给绑定到video标签上(不给展示本地视频)就不会报错,这样双方就能看到对方,但是无自己本地视频显示。下面是部分代码展示:
这是一对一的窗口
下面是部分代码
//一对一接收到媒体流,处理回调实现
var callbackRemoteVideoOneImpl = function(event){
$("#dialogForOne video[name='remote']").get(0).src = URL.createObjectURL(event.stream);
}
//一对一本地媒体流展示,实现回调
var callbackLocalVideoOneImpl = function(){
var video = $("#dialogForOne video[name='video']").get(0); //获取到展现视频的标签
video.src = window.URL.createObjectURL(stream);//写入
}
//点击开启视频触发事件
$("#dialogForOne button[name='openVideo']").on("click",function(){
$(this).toggleClass("active");
$(this).data("use",$(this).data("use") ? false : true);
if($(this).data("use")){//开启视频语音聊天
callbackLocalVideo = callbackLocalVideoFiveImpl;
openVideoAudioLocal();
openVideoAudioRemote([oneWebRtc],true,true);
$(this).find(" > span").html("结束视频");
$("#dialogForOne button[name='openAudio']").hide();
}else{//关闭视频语音聊天
//closeStream([oneWebRtc]);
closeLocalStream();
closeRemoteChannelStream([oneWebRtc]);
resetVideoButton();
}
});
/**
* 创建一个只有视频没有音频的流绑定到本地控件上
* 为了防止自己能听到自己发出的声音
*/
var openVideoAudioLocal = function(){
getUserMedia.call(navigator, {
video: true,//启动视频
audio: false//启动音频
},function(localMediaStream) {//获取流成功的回调函数
localStream = localMediaStream;
callbackLocalVideo(localStream);
},function(error){
//处理媒体流创建失败错误
console.log("创建本地媒体对象失败:" + error);
});
}
<p>纯网页带宽要求会更高我建议用rhub,网络要起低四倍</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。