4

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

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

JFIF header data
... lots of data ...

这种模式对每个“帧”重复。

这是一些我可以播放/转码的“标准”流格式,还是强制进入我的浏览器的一些 JPEG 集合,只是尽可能快地呈现它们?

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

我的 IP cam 中的软件非常糟糕,所以我想捕获这个流并在我的 Linux 机器上处理它。是否有一些我可以用来执行此操作的 ffmpeg/mplayer 工具集合?

4

2 回答 2

6

看起来像以“ipcamera”为边界的 MIME 多部分。

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==

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

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

更新:

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

上面提到的服务器软件通过 HTTP 流式传输 JPEG 序列。一个特殊的 mime-type 内容类型 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/

于 2011-09-03T17:31:19.020 回答
4

听起来像Motion JPEG,或者至少是其中的一些变体。

于 2011-09-03T17:27:42.393 回答