Unity 接入海康摄像头(WebGL,PC),避坑专用

2024-06-04 7585阅读

Unity 接入海康摄像头(WebGL,PC),避坑专用

介绍:项目需要,接入海康威视摄像头云台。应用场景:Unity开发某个物流园区的数字孪生系统,在3D场景中点击监控摄像头图标,弹框播放现场的摄像头画面。

准备:Unity2023.3.0a14、海康威视设备、OpenAPI安全认证库(C#) V1.0.1、AVProVideo、Postman等

说明:

Unity版本:用WebGPU提升场景和整体渲染效果,至于Unity2023设置WebGPU相关内容可去官网查看,在Unity6.0版本将推出该设置选项

OpenAPI 安全认证库:海康接口都需要进行安全认证才可正常访问,可在海康开放平台下载(有坑,后续介绍)

AVProVideo:视频流播放插件(PC的话也可用UMP替换,但UMP发布WebGL有报错)

正文:

1.线下园区安装好海康威视设备会给每台设备一个唯一的设备标(CameraIndexCode)Unity端会用到这个ID去请求接口,保持设备正常运行,在内网部署设备管理后台,负责与前端进行交互请求,这个海康那边会安排专业人员协助。

2.Unity端事项:

1)导入OpenAPI认证库(C#),该库海康已经封装了基于HTTP的POST和GET请求。以及设置平台信息的接口SetPlatformInfo接口。在HttpUtil脚本内,该类还提供了AK和SK生成签名的相关接口。

SetPlatformInfo:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第1张

InitHttpRequest:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第2张

Get:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第3张

Post:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第4张

**注意!!!**以上接口由海康提供,可支持非WebGL端项目开发(坑1)。楼主当时也是完全用该接口完成接入,验证编辑器下和发布PC端应用都可以正常使用。在发布WebGL时,*点击事件直接卡***!!!*吐槽:Unity发布WebGL的坑太多,开发要走的路远远不止当下。后续解读源码发现该问题其实在另一个地方就遇到了!

原因(重点):WebGL不支持IO操作,注意System.IO相关接口。

通常读取StreamingAssets文件夹下文件会用File.ReadAllTxt()等接口,在WebGL该接口不可用需要用WWW或UnityWebRequest下载读取。

解决办法:

分析海康Get接口和Post接口,代码块用到Stream和StreamReader两个API,这就导致在WebGL端Http请求时,直接卡***的原因,咱们找到原因得想法解决,在深层次分析原因是HttpWebRequest这个API导致得,这里咱们可以用UnityWebRequest这个API去重写Post和Get方法。相关核心代码如下:

InitRequest:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第5张

Get:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第6张

Post:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第7张

获取监控设备推流地址(POST_GetCameraUrl):camCode:设备编码,唯一标识

Unity 接入海康摄像头(WebGL,PC),避坑专用 第8张

跨域请求(坑2):

到此我们发布WebGL测试,点击事件不再出现卡***现象。但接着F12查看日志,发现又一个问题,WebGL上Http请求跨域的问题,这个问题导致的原因是由于发布部署到本地nginx服务上。而Http请求的接口地址是在另一个域名下,查看网上各种解决跨域问题办法,楼主最后没解决,也是困扰了很多天。有的文章说需要服务器端配置;有的是需要nginx配置;有点百家讲坛了。我最后是直接把WebGL部署到服务器一个域名下的。这样就可以正常请求获取推流地址并在Unity端用AVProVideo进行播放实实监控画面了。

AVProVideo在WebGL平台设置:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第9张

Unity:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第10张

Unity 接入海康摄像头(WebGL,PC),避坑专用 第11张

Unity 接入海康摄像头(WebGL,PC),避坑专用 第12张

总结:每一份耕耘都有一定收获,WebGL的坑源源不止。希望Unity数字孪生系统希望未来有一套成熟的解决方案,兼容各个平台。本项目在WebGL端场景渲染这块也砍了很多刀才能流畅的运行(FPS>60),最后上个项目截图:

Unity 接入海康摄像头(WebGL,PC),避坑专用 第13张

Unity 接入海康摄像头(WebGL,PC),避坑专用 第14张

资源分享:WebGL平台基于AVProVideo播放海康设备监控实实画面demo源码。

以上内容会分享在以下Demo中。源码下载地址


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]