開源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用
摘要:針對嵌入式設(shè)備在進行多媒體數(shù)據(jù)處理時存在的資源限制問題,采用了一種開源視頻服務(wù)器軟件MJPG-streamer完成多媒體數(shù)據(jù)的處理及存儲,基于該軟件的特點和體系結(jié)構(gòu),通過修改MJPG-streamer的源代碼,添加新的功能模塊,以增強這款軟件的功能。并重新交叉編譯后,移植到嵌入式系統(tǒng)中,以實現(xiàn)一個可控制前端設(shè)備的基于Arm9的嵌入式遠程視頻監(jiān)控系統(tǒng)。實驗結(jié)果表明,該方法很好地增強了視頻數(shù)據(jù)處理的效果,并可流暢地在客戶端播放瀏覽器。
關(guān)鍵詞:MJPG-streamer;開源;視頻服務(wù)器;插件;嵌入式應(yīng)用
“MJPG-streamer”是一個輕量級的視頻服務(wù)器軟件。一個可以從單一輸入組件獲取圖像并傳輸?shù)蕉鄠€輸出組件的命令行應(yīng)用程序。
該軟件可應(yīng)用在基于IP協(xié)議的網(wǎng)絡(luò)中,從網(wǎng)絡(luò)攝像機中獲取并傳輸JPEG格式的圖像到瀏覽器,例如Firefox、Cambozola、Videolanclie nt,甚至是一個運行了TCPMP播放器的Windows移動設(shè)備。
它繼承于uvc_streamer,為在RAM和CPU上存在資源限制的嵌入式設(shè)備而寫的。因為兼容Linux-uvc的攝像機可以直接生成JPEG數(shù)據(jù),即使是運行OpenWRT Linux的嵌入式設(shè)備也可以快速處理M-JPEG數(shù)據(jù)流。
這款工具源代碼簡潔,注釋清晰。組件功能明確,銜接清晰。使用Linux C語言進行開發(fā),可移植到不同的計算機平臺,也可以在根據(jù)GPL v2的條款下進行改進和發(fā)行。
1 MJPG-streamer的處理流程
MJPG-streamer主函數(shù)的定義在mjpg-streamer.c文件。主函數(shù)的處理流程如圖1所示。
2 MJPG-streamer的相關(guān)組件
MJPG-streamer采用模塊化的設(shè)計方法,以功能塊為單位進行描述,這些功能塊被稱為plug-in(組件)。軟件中定義好了各組件的輸入、輸出,以及組件之間的銜接關(guān)系。用戶可自行根據(jù)對功能的需求,選擇需要的模塊。這種模塊化的程序設(shè)計簡化了代碼的編寫、調(diào)試、維護,程序員只需要遵守設(shè)計的規(guī)范,就可以輕松地改寫軟件,或者編寫新的模塊以增強軟件的功能。
MJPG-streamer最主要并且最常用的組件是input_uvc輸入組件和output_http輸出組件。其他組件包括input_control、input_file、input_testpicture、input_gspcavl、output_autofocus、output_file、out_viewer,如圖2所示。
c語言相關(guān)文章:c語言教程
攝像頭相關(guān)文章:攝像頭原理 矢量控制相關(guān)文章:矢量控制原理
評論