panlinlin
4 years ago
7 changed files with 7691 additions and 19 deletions
@ -0,0 +1,106 @@ |
|||||
|
<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 { |
||||
|
webrtcPlayer: null |
||||
|
}; |
||||
|
}, |
||||
|
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") |
||||
|
setTimeout(()=>{ |
||||
|
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) |
||||
|
} |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.LodingTitle { |
||||
|
min-width: 70px; |
||||
|
} |
||||
|
#rtcPlayer{ |
||||
|
width: 100%; |
||||
|
} |
||||
|
#webRtcPlayerBox{ |
||||
|
width: 100%; |
||||
|
max-height: 56vh; |
||||
|
background-color: #000; |
||||
|
} |
||||
|
/* 隐藏logo */ |
||||
|
/* .iconqingxiLOGO { |
||||
|
display: none !important; |
||||
|
} */ |
||||
|
|
||||
|
</style> |
File diff suppressed because it is too large
Loading…
Reference in new issue