在qt中,如果由于捕获视频导致ui主线程卡顿,则可以采用线程捕获视频数据的方式,
但是会导致内存管理崩溃,泄露等严重问题。因此视频捕获采用阻塞方式,及在ui主线程中执行。
原因:
V4L2编程中使用阻塞方式打开一个设备文件,除非你能开始采集数据时队列里的n块缓存已有数据存在。
倘若使用非阻塞,及线程方式,则会出现BUG:
VIDIOC_DQBUF: Bad file number
可能是内核缓冲区(驱动缓冲区)没有这么大导致程序在VIDIOC_DEBUF时一直阻塞
也可能是驱动的问题
将耗时的工作放入线程线程中,会出现线程间任务来回切换完成、任务堆叠等情况,使用时需要充分考虑好。