http://blog.sina.com.cn/s/blog_af1b6f4801017no5.html
网络上盛传的基于mini2440的摄像头监控一般是基于 MJPEG-Streamer。这种方法利用的是V4L2的底层驱动,然后配合mjpeg这种格式的流传输,然后通过浏览器浏览视频和控制。
下面用一个更接近真实的IP-camera的方案来实现。
参考:http://www.linuxidc.com/Linux/2013-04/83108.htm
文本照搬他的代码,只是将他的webcam_server交叉编译到arm上,webcam_shower编译到pc上。
这种方案是用的V4L2的视频驱动,然后配合ffmpeg、x264的软件编解码,通过udp上传至pc显示,视频的编解码真的非常麻烦,幸好有很多开源的编解码库可以使用,几百行的代码就可以实现h.264的流编码与传输。
usb摄像头得到的数据格式一般是YUV422,如果用的是cmos 摄像头可能是raw原始数据格式,YUV422,是在raw基础上色彩抽点编码,因为人眼对亮度的敏感大于对色彩的敏感,所以并非对所有的色彩编码,这样的数据量会非常的大,视频编解码格式就不讨论了,很多很复杂,当然,你会了,就不会觉得难。
ffmpeg和x264的作用是将YUV422再编码成H.264
上图看效果,这是在linux中接的图,窗口中显示的是从2440usb摄像头上传上来的视频
这是实物图,手机拍的
废话少说,一步一步实现
1、平台
硬件:arm mini2440,usb摄像头
软件:Fedora14,arm-linux-gcc v4.4.3
2、源文件
ffmpeg-0.10.1.tar.gz
last_x264.tar.bz2
zlib-1.2.5.tar.gz (mini2440中没有libz.so,但是程序运行时需要这个库支持,所以下载源文件交叉编译)
以上文件只要会搜索的人都能找到
最后是webcam应用程序,下载地址:http://www.linuxidc.com/Linux/2013-04/83108p7.htm 的2.zip