wvp-gb28181-project/web_src/src/components/dialog/rtcPlayer.vue

110 lines
3.3 KiB
Vue
Raw Normal View History

2021-04-11 14:44:27 +08:00
<template>
<div id="rtcPlayer">
<video id='webRtcPlayerBox' controls autoplay style="text-align:left;">
Your browser is too old which doesn't support HTML5 video.
</video>
</div>
</template>
<script>
export default {
name: 'rtcPlayer',
data() {
return {
2021-04-12 16:04:04 +08:00
webrtcPlayer: null,
timer: null
2021-04-11 14:44:27 +08:00
};
},
props: ['videoUrl', 'error', 'hasaudio'],
mounted () {
this.$nextTick(() =>{
console.log("初始化时的地址为: " + this.videoUrl)
this.play(this.videoUrl)
})
},
watch:{
videoUrl(newData, oldData){
this.pause();
this.play(newData);
},
immediate:true
},
methods: {
play: function (url) {
this.webrtcPlayer = new ZLMRTCClient.Endpoint({
element: document.getElementById('webRtcPlayerBox'),// video 标签
debug: true,// 是否打印日志
zlmsdpUrl: url,//流地址
simulecast: false,
useCamera: false,
audioEnable: false,
videoEnable: false,
recvOnly: true,
})
this.webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ICE_CANDIDATE_ERROR,(e)=>{// ICE 协商出错
console.error('ICE 协商出错')
this.eventcallbacK("ICE ERROR", "ICE 协商出错")
});
this.webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_REMOTE_STREAMS,(e)=>{//获取到了远端流,可以播放
console.error('播放成功',e.streams)
this.eventcallbacK("playing", "播放成功")
});
this.webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED,(e)=>{// offer anwser 交换失败
console.error('offer anwser 交换失败',e)
this.eventcallbacK("OFFER ANSWER ERROR ", "offer anwser 交换失败")
if (e.code ==-400 && e.msg=="流不存在"){
console.log("111111")
2021-04-12 16:04:04 +08:00
this.timer = setTimeout(()=>{
2021-04-11 14:44:27 +08:00
this.webrtcPlayer.close();
this.play(url)
}, 100)
}
});
this.webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_LOCAL_STREAM,(s)=>{// 获取到了本地流
// document.getElementById('selfVideo').srcObject=s;
this.eventcallbacK("LOCAL STREAM", "获取到了本地流")
});
},
pause: function () {
if (this.webrtcPlayer != null) {
this.webrtcPlayer.close();
this.webrtcPlayer = null;
}
},
eventcallbacK: function(type, message) {
console.log("player 事件回调")
console.log(type)
console.log(message)
}
},
2021-04-12 16:04:04 +08:00
destroyed() {
clearTimeout(this.timer);
},
2021-04-11 14:44:27 +08:00
}
</script>
<style>
.LodingTitle {
min-width: 70px;
}
#rtcPlayer{
width: 100%;
}
#webRtcPlayerBox{
width: 100%;
max-height: 56vh;
background-color: #000;
}
/* 隐藏logo */
/* .iconqingxiLOGO {
display: none !important;
} */
</style>