现在使用的是合众达的DM8168开发板,有两个uvc摄像头,自己编写的采集视频的程序(在ubuntu上测试通过了,两个摄像头都能保存视频)。
但在开发板上运行时出了问题,
第一个摄像头,可以在板子上采集640×480的视频(也可以采集320×240的视频),但采集1280×720的时候程序会卡在ioctl(vd->fd, VIDIOC_DQBUF, &vd->buf),没有返回值。
第二个摄像头,可以采集320×240的视频,采集640×480的时候程序会卡在ioctl(vd->fd, VIDIOC_DQBUF, &vd->buf),没有返回值。
为什么摄像头在采集高分辨率的图像的时候,会卡在ioctl(vd->fd, VIDIOC_DQBUF, &vd->buf)处呢?
另外,为什么第二个摄像头不能采集640×480的视频呢?
Ternence_Hsu:
会不会是你的SDK版本过低 ?或者内核版本 ? 正常应当是可以采集的
Denny%20Yang99373:
建议DEBUG一下摄像头的驱动,加一些打印看看。
buyu wang:
回复 Ternence_Hsu:
我也觉得与内核驱动有关系,但不知道该从哪个地方去改。合众达只提供2.0的开发包,没法升级到高版本。问摄像头的技术人员,说与usb的高速和全速有关系,只有usb摄像头工作在高速模式下,才能传输高分辨率的的图像。而且还提高部分USB2.0并不支持高速模式。但现在不知道怎么查看摄像头工作在高速还是全速模式下,还有怎么设置为高速模式?望高手指点!另外,通过降低帧率,原来的帧率是30,改为15之后,第一个摄像头可以采集1280×720的,第二个摄像头可以采集640×240的,640×480的还是不可以。
buyu wang:
回复 Denny%20Yang99373:
要修改内核哪个地方的代码,能给点提示吗,对内核不太了解。还有请教一下,如何查看摄像头工作在高速还是全速模式下?另外怎么设置为高速模式?