|
花了一个星期的时间,给这个摄像头部分一个完整的解决。
刚开始时使用的中星微301摄像头,直接可以输出MJPG数据流,所以问题很简单,稍微配置一下就可以出图像。但这个摄像头体积比较大,重量也很重,不大适合装到四轴上。于是我又开始搜索新的摄像头。
跑到电脑市场,买了2个目前主流的免驱动摄像头。不出我的意料,果然接上Linux不认,于是就开始疯狂搜索驱动。可惜中星微没有提供一个Linux的驱动,只好在老外的代码里搜索。最后还是通过升级Linux内核到最新的2.6.30,然后利用里面的UVC驱动把摄像头驱起来了。
下面就要找到一个合适的摄像头服务器软件,也是花了很大的功夫。在Linux下,摄像头接口有V4L和V4L2。大多数比较早的程序都只支持V4L,结果不支持我的免驱动摄像头。最后找到了一款MJPG-Streamer(http://mjpg-streamer.sf.net/),这个利用插件的模式可以支持2种接口。
本来已经很简单了,但我忘记加一个参数,导致这个程序非要用从摄像头获取MJPEG数据才能正常工作。我以为这个软件又不行了呢。最后每办法了,只好研究起S3C2440里自带的CMOS摄像头接口,配合Linux下的一个驱动自己写了一个MJPG-Streamer输入插件,才算最终出图像。
刚才在PC上研究了一下,发现只要多加一个参数,我目前的程序已经是做到摄像头通吃了。不管是有驱还是无驱还是CMOS摄像头,都可以支持了。:em24: ,应该算是一个比较完美的解决方案了。
不过目前的问题就是,如果摄像头没有硬件压缩,依靠2440自己来软压JPG,速度上不去。在320x240的情况下勉强能到10FPS。这个有点郁闷,但是目前没有好办法了,先这样吧。 |
|