视频监控—mjpeg-streamer源码分析(1)-框架
- 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
- 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
- 开发环境:arm-linux-gcc-4.3.2工具链、linux-3.4.2内核(开发版根文件系统)
- 源码仓库:https://gitee.com/d_1254436976/Embedded-Linux-Phase-3
一、mjpg-streamer的简单介绍
mjpg-streamer是一款免费基于IP地址的视频流服务器,它的输入插件从摄像头读取视频数据,这个输入插件产生视频数据并将视频数据复制到内存中,它有多个输出插件将这些视频数据经过处理,其中最重要的输出插件是网站服务器插件,它将视频数据传送到用户浏览器中.
mjpg-streamer的工作就是将其中的一个输入插件和多个输出插件绑定在一起,所有的工作都是通过它的各个插件完成的。
二、mjpg-streamer的框架
1、globals
结构体管理
通过分析得到下图:
可以知道,整个mjpg-streame是由_globals
这个结构体进行管理的
struct _globals {
int stop;
/* signal fresh frames */
pthread_mutex_t db;
pthread_cond_t db_update;
/* global JPG frame, this is more or