看起来幸狐官方SDK更新了,甚至更新了主线内核,不过不去管SDK,继续研究demo,因为demo也更新了。
1. 首先是编译幸狐的RK mpi的demo,这次更新后的demo要好很多,更新了cmake和install所以不需要复制整个源代码目录了,好评。
2. 下一步是把文件传送到开发板,我们使用ADB协议。这里有技巧,使用Erol444 的ADB File插件可以图形化查看文件+编辑+传送文件,很香。然后下面再分两个ADB Shell的控制台,查看系统情况,效率翻倍。

3. 在用这个插件传送完文件我发现了一个问题,就是不能执行编译好的程序,即使我使用了chmod +x 也不行。一开始是以为有什么安全策略,折腾完之后发现是chmod不能用exfat格式。于是格式化sd卡为ext4,问题解决,拷贝到sd卡的文件就可以修改权限并且执行了。还是经验不足啊,浪费时间了~。
4.为了尽快测试视频的录制和摄像头质量,我决定测试直接保存裸流到文件试试,看起来没问题,就是不能暂停和快进,而且受到文件IO的影响,帧率从官方说的RTSP的30帧掉到不到10帧。这一点并不是很确定,因为还有推流服务可能影响文件写入,下一次尝试手动准备一个文件的内存缓冲区,看看是不是会好转(够呛,这玩意内存太小,得找找有没有其他可以写入优化的方式,不过不紧急,目前至少是见到画面而且播放了)。直接用fwrite写的,代码相当于一边推流一边录制。

然后直接存进sd卡里。

然后再下载到Ubuntu电脑,用ffmpeg播放试试:
sudo apt install ffmpeg ffplay file.264 //ffmpeg的播放器是这个,后缀play
默认拉窗帘效果这样,感觉还不错

关于文件大小的方面,帧率10帧以下,文件大小就到达了惊人的16MB/Min,假设平均一秒8帧,16MB/8/60=0.034MB=34KB,此时都为i帧。这样计算一张128G 的卡,算120G,也就是存120*1024/16/60h = 128h=5day。所以空闲低帧率还是很重要的。不过这也是一个定心丸,即使最坏情况我们还可以看4-5天前的录像!
下一步:A.研究H264裸流的封装方式,实在不行自己封装也可以,尽量满足点播的需求,我不允许直接下载视频,只允许播放。目前还是倾向于把一天的视频整合成一个文件,在检测到运动后加时间戳,使用sql lite这种数据库或者单独文本文件记录物体运动时间点。B. 既然我们有现成的OSD 和 运动检测和运动追踪,我们尽量避免使用opencv,降低三方库造成的损失
5. 关于运动检测。我们使用RKIV如果我们要在幸狐demo使用这个库,需要满足以下条件
- 启用AI的Linux驱动程序,见IPC Linux SDK 快速开发指南。其实官方已经编译好了,我们修改/oem/usr/ko/insmod_ko.sh(后续裁剪优化打包再另说), 在motor.ko后添加 __insmod rve.ko,重启以启用驱动。不然会找不到相应rve设备。
- 项目中准备头文件,将这些头文件添加到include里面,都在你的sdk, ./media/ive/ive/include里面

- 准备好库文件,在./media/ive/ive/lib里面,一并拷贝到demo的lib。

- 更新demo的CMakeLists.txt文件,在target_link_libraries当中添加ivs和rve

- 最后再在你的main文件包含 “ivs_md.h”和”rk_md.h”就可以了。
6.还有最后一件事,就是关于内置rtc。有一个坑就是即使官方说默认启用RTC,会自动启动,但是rtc必须手动同步一次以后才会激活,不然不会激活。另外现在才知道rtc和系统时钟不是时时刻刻同步的,还需要手动管理。不过无妨,不是RTC坏掉就可以。刚开始以为RTC 被我搞坏掉了人差点傻了。
今天就折腾这么多,不过感觉一切在快速变好。明天趁热打铁试试运动检测。
Views: 95
