参考资料--------------------------------------------------------------------------
《Rockchip RKMedia Development Guide》
Caution!!!---------------------------------------------------------------------------
1:VI需要rkaiq的支持,需要提前初始化好;
2:抓帧的的时候需注意,前几帧会非常的暗,个人认为是某个模块正在启动,但实际上get到的,如下图所示;
3:执行完一次后,需要杀一下相关进程,不然会导致资源被占用从而创建通道失败;
4:rkmedia编译失败会导致./build.sh失败 并不会报相关example的错,需注意!
5:抓帧的时候,如果有旧文件要先删除一下,不然图像显示不对,会丢数据
知识点-------------------------------------------------------------------------------------
1:涉及到rkmedia就需要添加xml文件,buildroot/output/****/target/里就是烧入的文件系统,根据程序里的路径将xml文件放入,也可自行指定路径;
2:由于板级缺少几个动态库,需要自行添加,可以对照门禁板级添加;
3:rkisp_demo也需要自行添加放入usr/bin/目录下,chmod 777 rkisp_demo,不然导入到板子上就是只读文件了;
4:
mount -t ext4 /dev/mmcblk0p4 /userdata
grep '' /sys/class/video4linux/video*/name
rkisp_demo --device /dev/video38 --width 4000 --height 3000 --stream-to /userdata/wzw.out
5:
# SDK根目录,选择环境
source envsetup.sh rockchip_rv1126_evb_dualcam_tb
# 重编rkmedia源码
make rkmedia-dirclean && make rkmedia
6:echo "all=3" > /tmp/loglevel 调试等级
7:
killall mediaserver
killall QFacialGate
8:抓帧
mount -t ext4 /dev/mmcblk0p4 /userdata
Kill ispserver
grep '' /sys/class/video4linux/video*/name 抓一下节点
rkmedia_vi_get_frame_test -a -o /userdata/wzw.out -d /dev/videoxx -c 16
rkmedia_vi_get_frame_test -a -o /userdata/wzw.out -d rkispp_scale0 -c 16
代码分析 vi_get_frame_test--------------------------------------------------------------
可选参数
设置并使能channel
主体函数,单独创建的线程,详细分析
int pthread_create(pthread_t *restrict tidp, //新创建的线程ID指向的内存单元。
const pthread_attr_t *restrict attr, //线程属性,默认为NULL
void *(*start_rtn)(void *), //需创建线程的函数
void *restrict arg //默传入线程的参数)
Caution中提到,前几帧会非常暗,因此我们这里设置从第十二帧起抓
与下图对应
效果展示----------------------------------------------------------------------------------