2011-09-03 68 views
4

我有一個便宜的中文IP網絡攝像頭,它具有一個顯示實況視頻的網絡界面。該視頻看起來是一系列的jpeg圖像,並傳送到瀏覽器中。如果我在URL http://my-ip-camera/video.cgi指向我的wget接收流數據的一大塊的格式如下:來自我便宜的中文IP攝像頭的JPEG流格式是什麼?

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

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

這種模式重複每一個「框架」。

這是一些「標準」流格式,我可以播放/轉碼的東西,或者是JPEG格式的一些由採集被迫進入我的瀏覽器,只是使他們那麼快,因爲它可以?

我嘗試使用VLC,但它無法處理URL。

我的IP攝像頭中的軟件非常糟糕,所以我想捕獲這個流並在我的Linux機器上處理它。有一些我可以使用的ffmpeg/mplayer工具集合嗎?

回答

6

看起來像以「ipcamera」作爲邊界的MIME multipart。

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 multipart。我想,你應該找到JS庫來解析MIME-multipart並將其傳遞給瀏覽器的動態DOM。或者,您可以使用perl或其他腳本來支持MIME,並從此流獲取jpeg。

UPDATE:

實際上,這是「M-JPEG通過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/ - 它是exaclty你有什麼。

這裏是一個Python客戶端:http://code.google.com/p/python-mjpeg-over-http-client/

+1

這對我的數據是什麼格式,以及一些谷歌搜索後,我整個ZoneMinder(http://www.zoneminder.com/),這似乎做什麼來了我通緝。 – Piku

+0

嗯,zoneminder實際上是我用來使用ip-cameras的軟件。 – osgx