这个JPEG流来自我廉价的中文IP网络摄像头是什么格式的?

Pik*_*iku 4 linux webcam jpeg mjpeg video-streaming

我有一个便宜的中文IP网络摄像头,它有一个显示实时视频的网络界面.该视频似乎是一系列输入浏览器的jpeg图像.如果我在URL http://my-ip-camera/video.cgi上指向wget,我会收到以下格式的大量流数据:

--ipcamera
Content-Type: image/jpeg
Content-Length: 46056

JFIF header data
... lots of data ...
Run Code Online (Sandbox Code Playgroud)

每个"框架"都会重复这种模式.

这是一种"标准"流媒体格式,我可以用某些东西进行播放/转码,还是一些强制进入我浏览器的JPEG集合,只是尽可能快地渲染它们?

我尝试使用VLC,但无法处理URL.

我的IP cam中的软件非常糟糕,所以我想捕获这个流并在我的Linux机器上处理它.我可以使用一些ffmpeg/mplayer工具来做这个吗?

osg*_*sgx 6

看起来像MIME multipart以"ipcamera"为边界.

http://en.wikipedia.org/wiki/MIME#Multipart_messages

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="frontier"

This is a message with multiple parts in MIME format.
--frontier
Content-Type: text/plain

This is the body of the message.
--frontier
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
Run Code Online (Sandbox Code Playgroud)

你能发布数据的最开头吗?

有很多库可以使用MIME multipart.我想,您应该找到JS库来解析MIME-multipart并将其传递给浏览器的动态DOM.或者,您可以使用带有MIME支持的perl或其他脚本,并从此流中获取jpeg.

更新:

实际上,这是"M-JPEG over HTTP" http://en.wikipedia.org/wiki/Motion_JPEG#M-JPEG_over_HTTP

上面提到的服务器软件通过HTTP流式传输JPEG序列.一个特殊的mime类型内容类型multipart/x-mixed-replace; boundary =通知浏览器期望几个部分作为由特殊边界分隔的答案.此边界在MIME类型中定义.对于M-JPEG流,JPEG数据通过正确的HTTP标头发送到客户端.只要客户端想要接收新帧并且服务器想要提供新帧,TCP连接就不会关闭.这种服务器的两个基本实现是测试服务器"cambozola"和网络摄像头服务器"MJPG-Streamer".

以下是这种格式生成的一个示例http://nakkaya.com/2011/03/23/streaming-opencv-video-over-the-network-using-mjpeg/ - 它很简单.

这是一个python客户端:http://code.google.com/p/python-mjpeg-over-http-client/