在基於Web的視頻監控解決方案通過開源軟件ZoneMinder實現,通過Web訪問的關鍵在於mjpg-streamer,因爲它可以通過HTTP方式訪問Linux UVC兼容攝像頭。本文對mjpg_streamer命令使用方式和輸出方式進行詳細分析。
mjpg_streamer用於從攝像頭採集圖像,並把他們已流的形式,通過基於IP的網絡傳輸到瀏覽器端,例如火狐瀏覽器。在分析其源碼過程中發現,其主要圍繞Linux的V4L2接口展開,它的輸出插件分爲input-plugins、output-plugins兩種。
下面對於啓動視頻監控的命令,如圖1所示,下面進行解釋。
圖1
V4L2:是Linux內核中關於視頻設備的驅動框架,爲應用層視頻設備程序開發提供了統一的模型和接口,藉助該驅動用戶可以實現對視頻輸入,輸出接口的統一管理。USB攝像頭在工作時,需要V4L2驅動框架的支持,這是在Ubuntu Linux內核中設置爲自動加載的,用戶不用擔心。我們在編譯內核的過程中可以清晰查看到,如圖2 ~ 圖5所示。
圖 2
圖 3
圖 4
圖 5
不過,只有相關驅動和依賴關係全部匹配並配置正確,攝像頭設備才能正常工作。對應設備文件是/dev/video0
通過這條命令輸出我們可以發現圖像分辨率只有 640 X 480,這是VGA的標準分辨率,系統通過將有序的圖片序列轉換爲視頻流,在ZoneMinder中採用H.264壓縮方式來完成視頻流的壓縮任務。整個壓縮過程完全有軟件方式完成。對CPU處理能力要求較高。在zoneminder系統中的ffmpeg軟件也是採用H.264視頻壓縮標準。
格式:YUV 它是一種採用格式,說明系統中USB攝像頭採集YUV格式的原始圖像。
圖像格式JPG,輸出質量爲80%
通訊端口爲TCP 8090,這個值可以修改。
其它啓動方式:
#mjpg_streamer -i “input_uvc.so -y -d /dev/video0 -r 320x240 -f 10”
不指定端口默認爲8080
更多內容大家可以訪問國內首發《基於Web的視頻監控系統-ZoneMinder應用》原創課程。
https://edu.51cto.com/course/17700.html