项目的大概流程是 从摄像头读数据然后经过ai分析 输出ai分析结果编码成2路venc的流 然后 起一个rtsp服务器 供后续模块 处理
但是从需求来看的话其实很简单
但是实际上做的时候还是会遇到一些坑的
程序起来之后会起一个http服务 等待主控下发的各种指令
这些指令包括视频参数的设置 ai功能的开启还是关闭 rtsp服务的开启关闭
模型文件的上传下载,jpeg图片上传 做ai分析 等等
基于之前的3531开发经验 ,
比3531 多了一个地方 就是3531不涉及到文件的上传
1126 需要支持文件的上传一个是ai模型文件的上传 另一个是jpeg图片的上传。
然后程序监听http事件 做相应的处理
主要是做ai处理和不做ai处理的流程不太一样
不做ai助理的话直接vi rga venc出来
如果做ai处理的话就是vi rknn 因为需要两路流 所以需要对yuv数据进行缩放,而如果不做ai处理的话 直接调用rga 不需要手动缩放yuv数据 目前已经实现了 调用的其实也是rga提供的api imresize之类的,主要就是需要理解相关的数据接口和api就可以了
由于ai分析 是另一位工程师做的 我需要调用他的模块 我给他yuv数据 然做AI分析之后 给出AI分析结果并且在yuv数据上画框框什么的 。
然后还需要的就是OSD功能 ,把梅思平台之前的OSD直接拿过来之后 发现显示什么的都不正常 目前还没有时间来仔细研究这块 如下图 RK平台只支持ARGB8888一个像素占4个字节
而原来海思的可以设置成ARGB565什么的很多种格式 一个像素可以只占2个字节 原理是通过FreeType加载ttf字体然后将字体转为bitmap的结构 然后通过各自平台提供的接口渲染到venc通道上面 同样的代码拿过来之后 可以发现主要有两个问题
1,只有一个osd却显示了两行
2.字体颜色设置的白色但是不知道为啥部分区域变红
目前只是搭了个框架 许多细节功能还没完成 等完成之后 再更新到这里