温馨提示:这篇文章已超过472天没有更新,请注意相关的内容是否还可用!
摘要:本文介绍了如何在Unity中接入海康摄像头,涉及WebGL和PC平台。文章主要讲述了避坑专用技巧,包括摄像头的兼容性问题、网络配置难题以及性能优化等方面。通过本文的指导,开发者可以顺利实现海康摄像头与Unity的集成,提升项目的稳定性和用户体验。
一、项目背景与介绍
为满足物流园区的数字孪生系统需求,需接入海康威视的摄像头云台,在Unity场景中,点击监控摄像头图标时,应弹框播放现场摄像头画面。
二、所需准备
1、Unity2023.3.0a14版本。
2、海康威视设备。
3、OpenAPI安全认证库(C#) V1.0.1。
4、AVProVideo视频流播放插件(针对PC可使用UMP替代,但UMP在WebGL发布时可能出现报错)。
5、Postman等其他辅助工具。
三、重要说明
1、Unity版本:使用WebGPU提升场景和整体渲染效果,关于Unity2023的WebGPU相关内容可查询官网,Unity 6.0版本将推出该设置选项。
2、OpenAPI安全认证库:海康接口需进行安全认证才能正常访问,可在海康开放平台下载,使用过程中存在诸多“坑”,后续将详细说明。
四、详细步骤与注意事项
1、线下园区安装好海康威视设备后,每台设备都会获得一个唯一的设备标(CameraIndexCode),Unity端会使用这个ID去请求接口,保持设备正常运行,内网部署设备管理后台,负责与前端进行交互请求,此部分海康会安排专业人员协助完成。
2、Unity端事项:
* 导入OpenAPI认证库(C#),该库已封装基于HTTP的POST和GET请求,以及设置平台信息的接口SetPlatformInfo,在HttpUtil脚本内,还提供AK和SK生成签名的相关接口。
注意点接口由海康提供,可支持非WebGL端项目开发,但在发布WebGL时,点击事件可能导致直接卡死,原因是WebGL不支持IO操作,特别是System.IO相关接口,通常读取StreamingAssets文件夹下文件会用File.ReadAllTxt()等接口,但在WebGL上这些接口不可用,需要使用WWW或UnityWebRequest下载读取。
解决办法分析海康的Get接口和Post接口,发现其使用到Stream和StreamReader两个API,这就是导致WebGL端Http请求卡死的原因,因此可以使用UnityWebRequest这个API去重写Post和Get方法,获取监控设备推流地址的接口也需要特别处理。
跨域请求问题在WebGL上测试时,发现Http请求跨域的问题,这是因为发布部署到本地nginx服务上,而Http请求的接口地址在另一个域名下,解决跨域问题可能需要服务器端或nginx配置,但最简单的办法是将WebGL部署到与接口同一域名下。
3、AVProVideo在WebGL平台设置:分享具体的配置方法。
4、Unity端集成:详细指导如何在Unity中集成海康摄像头画面。
五、总结与资源分享
在开发过程中会遇到许多挑战和“坑”,但每一份耕耘都有收获,希望未来Unity数字孪生系统能有一套成熟的解决方案,兼容各个平台,项目在WebGL端场景渲染上做了大量优化以保证流畅运行(FPS>60)。
六、项目截图与应用展示
分享部分项目截图与应用展示。
七、资源分享与源码下载
WebGL平台基于AVProVideo播放海康设备监控实时画面demo源码将分享在以下Demo中,并附上源码下载地址。
还没有评论,来说两句吧...