织梦CMS - 轻松建站从此开始!

罗索

应用网络协议介绍 --- MJPEG协议

jackyhwei 发布于 2010-11-22 15:38 点击:次 
MJPG可以在多种传输协议上传输,比如TCP/UDP,最常见是在HTTP上采用传输。大部分的摄像头也是采用HTTP+MJPG的传输形式的。我们后续将采用这个进行分析。
TAG:

Andrew Haung bluedrum@163.com 转载请注明作者及联络方式
 
Mjpeg是Motion JPEG 的简称。它的原理是把视频镜头拍成的视频分解成一张张分离的jpg数据发送到客户端。当客户端不断显示图片,即可形成相应的图像.
大部分低端的网络摄像头都支持的MJPG协议,较为高级的摄像头支持是H.264.
MJPG的优点是实现简单,客户端实现简单,不会出现马赛克的情况。缺点就是占带宽比较大,因为是一帧一帧按图像来传输的.
MJPG可以在多种传输协议上传输,比如TCP/UDP,最常见是在HTTP上采用传输。大部分的摄像头也是采用HTTP+MJPG的传输形式的。我们后续将采用这个进行分析。
关于MJPEG分析的的比较详细是的 http://www.jpegcameras.com/,里面有大量关于MJPG的应用。

一.mjpg分析
-----------------------------------------------------------
mjpg的在http的mime type是"x-mixed-replace".但mjpg
首先是要由客户发一个GET取一个特殊文件(不同摄像头有不同的定义)
如果ipcam返回200,表示已经接收的请求,并在返回的头里指明边界字符串,这是在context type的boundary子属性来指明的。
然后ipcam开始发送JPG数据,首先是发送类型和长度。
Content-Type= image/jpeg以及用Content-Length指向随后的长度。
当一个图发送完毕后,以边界字符串来结束。
以Original LIVECAM Motion JPEG为例,它的mjpg流程是

这里的边界字符串是ThisRandomString.

GET /xxx.jpg HTTP/1.1
HTTP/1.0 200 OK Server: Digital Video Technology PUSH1 Expires: 0 Pragma: no-cache
Content-Type: multipart/x-mixed-replace;boundary=ThisRandomString
--ThisRandomString
Content-Type: image/jpeg
Content-Length: 6280
...(jpeg数据)
--ThisRandomString
 
二.mjpg-streamer的协议说明
------------------------------------------------------------
在本次监控项目中,我们使用了mjpg-streamer, mjpg-streamer是常用来实现mjpg流传输的开源项目,我们分析一下它的协议内容。
首先是发送 GET /?action=stream\n\n
服务器响应200表示联接成功.并指明是multipart/x-mixed-replace的mjpg数据,边界字符串是boundarydonotcross

HTTP/1.0 200 OK
Connection: close
Server: MJPG-Streamer/0.2
Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Expires: Mon, 3 Jan 2000 12:34:56 GMT
Content-Type: multipart/x-mixed-replace;boundary=boundarydonotcross

--boundarydonotcross

接下是开发发送JPG数据

Content-Type: image/jpeg
Content-Length: 19454

<中间19454字节就是一个JPG完整的图像>
--boundarydonotcross

当连续不断发送这个数据,在客户端即可显示视频

(Andrew Huang)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201011/10511.html]
本文出处:bluedrum.cublog.cn 作者:Andrew Huang
顶一下
(8)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容