| <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> | 
| let webrtcPlayer = null; | 
| export default { | 
|     name: 'rtcPlayer', | 
|     data() { | 
|         return { | 
|             timer: null | 
|         }; | 
|     }, | 
|     props: ['videoUrl', 'error', 'hasaudio'], | 
|     mounted () { | 
|       let paramUrl = decodeURIComponent(this.$route.params.url) | 
|        this.$nextTick(() =>{ | 
|          if (typeof (this.videoUrl) == "undefined") { | 
|            this.videoUrl = paramUrl; | 
|          } | 
|          console.log("初始化时的地址为: " + this.videoUrl) | 
|          this.play(this.videoUrl) | 
|         }) | 
|     }, | 
|     watch:{ | 
|         videoUrl(newData, oldData){ | 
|             this.pause(); | 
|             this.play(newData); | 
|         }, | 
|         immediate:true | 
|     }, | 
|     methods: { | 
|         play: function (url) { | 
|             webrtcPlayer = new ZLMRTCClient.Endpoint({ | 
|                 element: document.getElementById('webRtcPlayerBox'),// video 标签 | 
|                 debug: true,// 是否打印日志 | 
|                 zlmsdpUrl: url,//流地址 | 
|                 simulecast: false, | 
|                 useCamera: false, | 
|                 audioEnable: false, | 
|                 videoEnable: false, | 
|                 recvOnly: true, | 
|             }) | 
|             webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ICE_CANDIDATE_ERROR,(e)=>{// ICE 协商出错 | 
|                 console.error('ICE 协商出错') | 
|                 this.eventcallbacK("ICE ERROR", "ICE 协商出错") | 
|             }); | 
|   | 
|             webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_REMOTE_STREAMS,(e)=>{//获取到了远端流,可以播放 | 
|                 console.log('播放成功',e.streams) | 
|                 this.eventcallbacK("playing", "播放成功") | 
|             }); | 
|   | 
|             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("流不存在") | 
|                     this.timer = setTimeout(()=>{ | 
|                         this.webrtcPlayer.close(); | 
|                         this.play(url) | 
|                     }, 100) | 
|   | 
|                 } | 
|             }); | 
|   | 
|             webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_LOCAL_STREAM,(s)=>{// 获取到了本地流 | 
|   | 
|                 // document.getElementById('selfVideo').srcObject=s; | 
|                 this.eventcallbacK("LOCAL STREAM", "获取到了本地流") | 
|             }); | 
|   | 
|         }, | 
|         pause: function () { | 
|             if (webrtcPlayer != null) { | 
|                 webrtcPlayer.close(); | 
|                 webrtcPlayer = null; | 
|             } | 
|   | 
|         }, | 
|         eventcallbacK: function(type, message) { | 
|             console.log("player 事件回调") | 
|             console.log(type) | 
|             console.log(message) | 
|         } | 
|     }, | 
|     destroyed() { | 
|         clearTimeout(this.timer); | 
|     }, | 
| } | 
| </script> | 
|   | 
| <style> | 
|     .LodingTitle { | 
|         min-width: 70px; | 
|     } | 
|     #rtcPlayer{ | 
|         width: 100%; | 
|     } | 
|     #webRtcPlayerBox{ | 
|         width: 100%; | 
|         max-height: 56vh; | 
|         background-color: #000; | 
|     } | 
|     /* 隐藏logo */ | 
|     /* .iconqingxiLOGO { | 
|         display: none !important; | 
|     } */ | 
|   | 
| </style> |