当前位置: 首页 > Web前端 > vue.js

EZVIZUIKITsdk使用及踩坑笔记

时间:2023-04-01 00:52:54 vue.js

需求需求是完成一个视频列表,里面包含各个场景的实时视频,使用EZVIZsdk单窗口监控方式实现官方文档https://open.ys7.com/doc/zh/uikit/uikit_javascript.html如何使用这里我们主要说说“监控模式”。这里可以使用CDN方式。要求在index.html中全局引入dom结构是因为页面中有很多视频,所以根据接口返回的视频列表,视频容器的监控模式是动态渲染的,没办法找到封面图,所以手动写一个,根据视频播放状态判断是否显示视频PlayVideo(vi,index){this.curVideoIndex=indexletid=`${vi.deviceSerial}-${index}`this.palyIdArr.push(id)if(this.palyIdArr.length>1){constdom=document.getElementById(this.palyIdArr[this.palyIdArr.length-2])constch=dom.childNodesdom.removeChild(ch[0])}this.player&&this.pauseVideo()letdomain='open.ys7.com'letdefinition=''this.videoOnPlay=truethis.player=newwindow.EZUIPlayer({id,url:`ezopen://${domain}/${vi.deviceSerial}/${vi.channelNo}${definition}.live`,autoplay:false,accessToken:vi.token,decoderPath:'ezuikit',width:200,height:133,controls:true});this.player.play()}踩坑?报一个音频相关的错误,可能是源视频的逻辑没命中,可以打断看看参数是否传对了?切换播放多个videos:因为一个页面需要渲染多个canvas,一个视频暂停播放另一个视频后,当前播放的视频会没有画面。如果你的视频有声音,你会发现视频只有声音没有画面。一开始以为是视频的问题,后来发现单独播放没问题。后来发现视频确实播放成功了,但是是在上次播放的视频容器中。我目前的解决方案:1.检查你的videoid是否和containerid匹配2.如果id没问题,那么你需要操作dom,把之前videocontainer里渲染的dom全部删掉?视频正常播放,console但是出现错误TypeError:Cannotreadproperty'audioId'ofundefined这是skd本身的容错bug调用视频的播放方法:play({},{})?全屏方法:(这是一个bug文档里有,而且文档写的极差详细,想用什么方法可以搜索源码)这里的全屏方法是fullScreen(),双击也能打全屏和退出全屏方法