电子工程师技术服务社区
- 社区首页
- 下载
- MyWifiCar_Android.zip
资料描述
顺应潮流,我最近也在玩android编程,买了本《疯狂android讲义》,看了几天,觉得应该弄个小项目练练手,就想能不能在安卓上实现视频监控呢?
之前已经实现了mjpg-streamer的网络视频监控。网络上也有做wifi小车的论坛,他们已经实现了安卓端的程序,里面就包含远程视频显示。下载他们的早期版本开始研究(最新版不开源),发现和mipg-streamer网络视频监控原理基本一样。
理解了他们的程序,就开始动手自己实现一个吧!
因为我是初学者,对安卓编程还没啥概念,因此我定下了如下目标:
1)功能尽量简单,仅仅实现一个监控功能;
2)尽量做稳定
分为三部分:mjpg-streamer原理、jpg编码格式、android程序说明。
一、mjpg-streamer原理
我们既然用了mjpg-streamer,应该了解一下他的实现。理解了mjpg-streamer,后面android部分的jpg数据帧处理就容易了。因为没有啥文档,直接看他的源代码吧。
先来看看我们打开mjgp-streamer的命令
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640*480 -f 5" -o "./output_http.so -p 9090 -w ./www"
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640*480 -f 5" -o "./output_http.so -p 9090 -w ./www"
这条命令使用了./input_uvc.so和./output_http.so两个动态程序,这和windows下的动态库是一个道理。
input_uvc.so负责采集摄像头数据,input_uvc中的input_init由主程序mjpg-streamer调用初始化,然后mjpg-streamer继续调用input_run启动cam_thread线程。
这个线程把jpg数据帧从tmpbuffer拷贝到pglobal中供其他线程读取。
再来看output_http,同样由mjpg-streamer调用初始化接口output_init和