做了一个智能玩具车的项目,针对项目中出现的一些问题,做简要记录。 项目的设计系统的体系架构是什么? 这是一款进行远程操控的赛车软件,用户可以在手机上操控小车的行驶路线,还能透过摄像头看到远方的山水风光。 它主要由app客户端,商家后台,服务器,小车硬件,直播推流,摄像头这几大板块组成。 游戏操控是怎么一步步传递给小车的? app客户端向服务器发送操作请求,服务器收到后,将指令发给了安装在小车上的APP, app安装在安卓版上,安卓版连接摄像头,音响等,在联网和推流的情况下,用户从app客户端透过小车的摄像头看到实景,进行比赛等 直播又是怎么一步步建立连接的? 直播涉及到推流和拉流,主播使用推流引擎把采集阶段封装好的内容 通过 url 参数指定的 rtmp 推流地址 上传到服务器,;用户客户端使用拉流引擎在源站直接拉取,并进行解码和渲染内容的过程。 能看到屏幕,但车无法启动? 检查一下安装在安卓版上的app,与硬件的交接是否有问题 直播屏幕为白屏,是什么原因? 猜测: 可能是带宽太小了(查看服务器带宽) 可能是网络不够流畅(保证网络流畅下排查) 拉流失败(数据内容格式异常)(第三方排查) 手机端不兼容问题(使用多台设备,不同系统排查) 用户操作动作与小车视频动态有延迟,是什么原因? 我们可以通过发起请求到运营商,运营商到服务器,服务器到运营商到小车,小车到摄像头,每个节点的传输时间,可以通过查看手机APP日志找到延时的原因。 可能是: RTMP协议的播放地址延时一般比较低(需要即构进行排查) 摄像头的延迟(雄迈排查) 服务器性能太低,也会导致延迟变大,服务器来不及发送数据 网络延迟(查看WIFI信号,5G,4G信号) 安卓版处理性能不足(JSON硬件方排查) 直播页面卡顿? 可能是服务器带宽不足导致(查看服务器带宽) 用户操作小车后,小车没反应,待小车重新推流后,小车处于停不下来的状态? 直播使用RTMP协议,当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。 对策:当客户端的缓冲区很大,就断开重连。 你遇到了最难解决的问题是什么? (排队为何是困扰的?出现什么问题?什么原因导致?解决的方案是什么?) 最难的是进入游戏时的排队功能, 当场景只有一辆车时,一人游戏,多人排队的情况 当场景有多辆车时,多人游戏,多人排队的顺序的情况 当一/多人正常退出/等级匹配不足/卡托不足/网络原因等退出游戏时,其他人的排队情况 当多人同时进入游戏,或多人同时退出游戏,车辆的释放情况和排队情况 其中常见的问题是: 出现多人同时进入一辆车的情况 出现多人同时排队,其他有两人同时并行的情况,其实其中一人处于断开情况 多人排队,同时出现网络不流畅,排队顺序混乱的情况 多人同时退出游戏,后续没被再次分配的车辆,停留在驾驶中,无法释放等 网络出现异常,无法操控车辆的情况 排队中,切换后台,倒计时停止,导致其他车辆也无法排到队 策略:一开始开发修了又修,但是问题层出不穷,BUG总是死而复生,后面开发修改了传输协议, 由原来的WEBSOKET协议改成了HTTP长连接,解决了操作不稳定的问题 并且针对网络问题,我们采用了断网重连机制 当因为网络异常问题,车辆会一直停留在驾驶中的问题,当websoket检测到网络异常时,前端会给提示并且强制退出游戏,车辆在3分钟内接受不到来自服务器的指令,会进行释放车辆
标签:玩具车,小车,排队,网络,智能,服务器,推流,小结,客户端 From: https://www.cnblogs.com/xiaoshu1/p/16987253.html