mjpg_streamer命令输出详解

在基于Web的视频监控解决方案经过开源软件ZoneMinder实现,经过Web访问的关键在于mjpg-streamer,由于它能够经过HTTP方式访问Linux UVC兼容摄像头。本文对mjpg_streamer命令使用方式和输出方式进行详细分析。html


mjpg-streamer 采用插件的形势来完成相关的功能,主程序为 mjpg-streamer, 插件分输入和输出两大类,输入即取视频的方式,输出即将内容转出的方式。浏览器

其中输入包含input_file, input_uvc, input_http, input_opencv, input_raspicam, input_ptp2。而输出包含 output_http, output_file, output_udp,output_rtsp,output_viewer几种方式。网络


程序下载:https://sourceforge.net/projects/mjpg-streamer/框架


mjpg_streamer的做用是从摄像头采集图像,并把他们已流的形式,经过基于IP的网络传输到浏览器端,例如火狐浏览器。在分析其源码过程当中发现,其主要围绕Linux的V4L2接口展开,咱们下面在命令行中将要用到的输出插件分为input-plugins、output-plugins、output_file几种,其余插件类型并不经常使用,这里就再也不深刻举例介绍。ide


命令格式说明spa

mjpg-streamer -i "input_uvc.so --help"   -- 关于这个输入插件的使用说明.net

image.png

mjpg-streamer -o "output_http.so --help" -- 指定输出的参数说明。插件

image.png


mjpg-streamer -i "input_uvc.so" -o "output_http.so -p 8859" -- 指定输入插件和输出插件,同时指定输出的端口命令行


实战:下面对于启动视频监控的命令,如图1所示,下面进行解释。3d

image.png

图1

你们须要注意在 input 和 output 之间传递时使用的是 jpeg 图片,而不是视频信息。因此对这些图片序列必须进行压缩,并且采用平率不能太大,通常VGA分辨率 5帧/s。

  • output_file 将视频图片保存在本地。

  • output_udp, output_rtsp 在指定端口等待 udp 命令,并将图片数据保存本地

  • output_viewer 经过 SDL 将图片数据解码后,进行显示。

  • input_uvc 经过V4L2 来提取视频,本文采用的 USB摄像头接入方式。

  • 其它 input 的插件都是指对各本身的协议实现的提取,例如input_control 执行一些放大,缩小等之类的功能,能过 v4l2 的相关协议实现。


上面提到的V4L2是Linux内核中关于视频设备的驱动框架,为应用层视频设备程序开发提供了统一的模型和接口,借助该驱动用户能够实现对视频输入,输出接口的统一管理。USB摄像头在工做时,须要V4L2驱动框架的支持,这是在Ubuntu Linux内核中设置为自动加载的,用户不用担忧。咱们在编译内核的过程当中能够清晰查看到,如图2 ~ 图5所示。

image.png

图 2

image.png

图 3

image.png

图 4

image.png

图 5

不过,只有相关驱动和依赖关系所有匹配并配置正确,摄像头设备才能正常工做。对应设备文件是/dev/video0,若是设备上接了第二个摄像头设备文件是/dev/video1,以此类推。


经过这条命令输出咱们能够发现图像分辨率只有 640 X 480,这是VGA的标准分辨率,系统经过将有序的图片序列转换为视频流,在ZoneMinder中采用H.264压缩方式来完成视频流的压缩任务。整个压缩过程彻底有软件方式完成。对CPU处理能力要求较高。在zoneminder系统中的ffmpeg软件也是采用H.264视频压缩标准。


参数“-y” 表示输入格式为YUV,若是不加-y 表示 mjpg输入。

  • 格式:YUV 它是一种采用格式,说明系统中USB摄像头采集YUV格式的原始图像。


  • 图像格式JPG,输出质量为80%


  • 通信端口为TCP 8090,该值可修改。


其它启动方式:

#mjpg_streamer -i “input_uvc.so -y -d /dev/video0 -r 320x240 -f 10”

image.png

不指定端口,默认为8080


接下来就能够在浏览器地址栏中输入`http://localhost:8080/?action=stream来查看视频。


image.png


高级技巧:


若是但愿浏览网页时须要用户密码认证则使用下列参数:


-c "username:password" 用户名:    username     密码    :password

命令实例:


image.png



将jpg图片序列输出到制定的目录下,例如/tmp


image.png


/tmp目录发生了哪些变化呢?


image.png

更多内容你们能够访问国内首发《基于Web的视频监控系统-ZoneMinder应用》原创课程。

https://edu.51cto.com/course/17700.html

相关文章
相关标签/搜索