新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 开源视频服务器软件MJPG-streamer的研究和应用

开源视频服务器软件MJPG-streamer的研究和应用

作者:时间:2012-06-11来源:网络收藏

2)int input_run(void)
该函数使用pthread_create函数创建工作线程。并使用pthread_detach函数将该线程设置为分离状态。在input_uvc组件中,input_run函数创建cam_thread线程,该线程负责抓取摄像头采集的一帧图像并进行格式转换,采用的是V4L2视频设备开发框架。具体工作流程请参考下文描述。
3)int input_stop(void)
该函数通过调用pthread_cancel(pthread_t tid)函数实现主线程取消cain_thread线程(抓取数据帧的工作线程),这两个线程在同一个进程内,共享该进程的地址空间。主线程通过内核发送信号以取消工作线程。tid是要取消线程的线程ID。
4)int input_cmd(int in_cmd_type cmd,int value)
该函数的主要功能是对网络摄像头镜头的控制,例如对色彩、饱和度、对焦等功能的控制。in_cmd_type结构体定义了对输入组件进行控制的命令类型,把对镜头的控制命令类型和参数值传入此函数。函数内进行匹配,以完成对镜头的控制操作。
input_uvc组件的私有函数如下:
1)void help(void)
该函数打印相关的帮助信息到stderr。
2)void*cam_thread(void*arg)
这个工作线程的作用是抓取一帧数据并把它复制到全局缓冲区。它的工作流程如图4所示。

本文引用地址:http://www.eepw.com.cn/article/148910.htm


工作流程不断循环,直至线程退出。退出前使用pthread_cleanup_pop函数调用cam_cleanup线程清理函数。
3)void cam_cleanup(void*arg)
该函数是线程清理函数,线程退出前,使用此函数释放在工作线程中被分配的资源。
2.2 ouput_http输出组件
output_http输出组件中的http.c文件内定义了服务器对客户端请求的响应。
send_snapshot、send_stream、send_error、send_file分别定义了如何响应客户端发送截图、发送视频流、发送错误信息、发送文件的请求信息。
command函数执行客户端指定控制命令,并发送反馈信息。
server_thread服务线程的作用是打开一个TCP socket并等待客户端连接。如有客户端链接,则为每一个连接到服务器的客户端创建一个client_thread专门服务于该客户端。
client_thread客户线程的作用是为连接到服务器的客户端服务。

3 在嵌入式中的
本文通过修改源代码,实现的额外功能。将作为于嵌入式开发。
系统以S3C2440微处理器为核心,构建嵌入式视频监控系统。Arm9将摄像头拍摄图像经压缩后传到Web客户端,客户端除了可以查看摄像头拍摄图像外,还可以控制云台设备,从而获得任意角度的图像。
采用低端云台作为前端的控制设备,嵌入式器可提供多个前端设备接口与多个云台连接。嵌入式器根据各客户端的请求,将图像或云台控制信号传输给相应的前端设备。本文只实现系统的基本模型,采用一个云台设备。可在基本模型的基础上,扩展成多路传输。
3.1 系统硬件平台
系统的硬件平台采用的是天嵌的TQ-2440开发板,CPU处理器是S3C2440AL,主频为400MHz,最高可达533MHz,配备256MB的Nand Flash、2 MB的Nor Flash以及64 MB的SDRAM,可满足系统要求。另外使用了一个V4L2摄像头,以及一个RS485接口的低端云台设备。

c语言相关文章:c语言教程


摄像头相关文章:摄像头原理
矢量控制相关文章:矢量控制原理


评论


相关推荐

技术专区

关闭