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


发布评论