2012-05-17 113 views
5

我正從我的相機接收MJPEG流。當我用十六進制編輯器查看視頻數據時,似乎它不包含任何流媒體信息。我只看到一個接一個的原始JPEG,但沒有關於幀率的信息等。MJPEG流信息

MJPEG是否缺少任何正常的元信息?或者它與我正在使用的相機有關嗎?如果沒有關於信息流的信息,玩家怎麼知道播放視頻的速度有多快?

回答

6

缺少元數據是正常的。 IP攝像機通常會發送MJPEG,一個接一個的JPEG圖像作爲流。這是最基本的有效MJPEG文件。如果你需要一堆jpeg,將它們放在一個巨大的大文件中,然後將其提供給ffmpeg,它會將其視爲有效的mjpeg格式文件。某些相機會添加一個額外的標題以包含音頻數據,但不需要將其視爲有效的運動JPEG。

許多攝像頭在最初發送數據流時會在HTTP標頭中包含X-Framerate等標頭,或者可以將其設置爲攝像頭配置的一部分。但是,當相機僅發送jpeg時,無法從流本身告知幀率。

0

通常情況下,MJPEG數據在AVI或MOV(quicktime)等流媒體封裝中發送。包裝格式將包含幀速率和有關可選音頻數據的信息。

+0

但原始的MJPEG數據不包含這樣的信息? – Toby

+0

您是否檢查過JPEG信息流中的元數據(例如APPxx標記)?發佈一個示例框架,我會分析它。 – BitBank

3

MJPEG是否缺少任何正常的元信息?或者它只是與我正在使用的相機有關?如果沒有關於信息流的信息,玩家怎麼知道播放視頻的速度有多快?

要添加到已經回答的IP攝像機是一個實時視頻源,並且幀一旦從攝像機到達時就會顯示出來。罕見的IP攝像機可以附加額外的每幀信息,而不是名望大小(有些甚至不這麼做!他們只發送數據和分隔符)。還有一些附加時間戳和額外的數據,如運動檢測狀態。

大多數IP攝像機不會執行恆定幀速率。也就是說,幀速率可能會有所不同,尤其是,在低光照條件下降低。將數據複用爲容器格式時,接收方有責任附加每幀時間戳。時間戳可以從元數據中恢復(很少存在),或者更常見的是接收者用本地接收時間戳一個幀。

這是玩家以適當的速率播放視頻序列的方式。實時饋送通常在「儘快顯示接收幀」的基礎上呈現。