mjpg_streamer命令輸出詳解

在基於Web的視頻監控解決方案經過開源軟件ZoneMinder實現,經過Web訪問的關鍵在於mjpg-streamer,由於它能夠經過HTTP方式訪問Linux UVC兼容攝像頭。本文對mjpg_streamer命令使用方式和輸出方式進行詳細分析。html


mjpg-streamer 採用插件的形勢來完成相關的功能,主程序爲 mjpg-streamer, 插件分輸入和輸出兩大類,輸入即取視頻的方式,輸出即將內容轉出的方式。瀏覽器

其中輸入包含input_file, input_uvc, input_http, input_opencv, input_raspicam, input_ptp2。而輸出包含 output_http, output_file, output_udp,output_rtsp,output_viewer幾種方式。網絡


程序下載:https://sourceforge.net/projects/mjpg-streamer/框架


mjpg_streamer的做用是從攝像頭採集圖像,並把他們已流的形式,經過基於IP的網絡傳輸到瀏覽器端,例如火狐瀏覽器。在分析其源碼過程當中發現,其主要圍繞Linux的V4L2接口展開,咱們下面在命令行中將要用到的輸出插件分爲input-plugins、output-plugins、output_file幾種,其餘插件類型並不經常使用,這裏就再也不深刻舉例介紹。ide


命令格式說明spa

mjpg-streamer -i "input_uvc.so --help"   -- 關於這個輸入插件的使用說明.net

image.png

mjpg-streamer -o "output_http.so --help" -- 指定輸出的參數說明。插件

image.png


mjpg-streamer -i "input_uvc.so" -o "output_http.so -p 8859" -- 指定輸入插件和輸出插件,同時指定輸出的端口命令行


實戰:下面對於啓動視頻監控的命令,如圖1所示,下面進行解釋。3d

image.png

圖1

你們須要注意在 input 和 output 之間傳遞時使用的是 jpeg 圖片,而不是視頻信息。因此對這些圖片序列必須進行壓縮,並且採用平率不能太大,通常VGA分辨率 5幀/s。

  • output_file 將視頻圖片保存在本地。

  • output_udp, output_rtsp 在指定端口等待 udp 命令,並將圖片數據保存本地

  • output_viewer 經過 SDL 將圖片數據解碼後,進行顯示。

  • input_uvc 經過V4L2 來提取視頻,本文采用的 USB攝像頭接入方式。

  • 其它 input 的插件都是指對各本身的協議實現的提取,例如input_control 執行一些放大,縮小等之類的功能,能過 v4l2 的相關協議實現。


上面提到的V4L2是Linux內核中關於視頻設備的驅動框架,爲應用層視頻設備程序開發提供了統一的模型和接口,藉助該驅動用戶能夠實現對視頻輸入,輸出接口的統一管理。USB攝像頭在工做時,須要V4L2驅動框架的支持,這是在Ubuntu Linux內核中設置爲自動加載的,用戶不用擔憂。咱們在編譯內核的過程當中能夠清晰查看到,如圖2 ~ 圖5所示。

image.png

圖 2

image.png

圖 3

image.png

圖 4

image.png

圖 5

不過,只有相關驅動和依賴關係所有匹配並配置正確,攝像頭設備才能正常工做。對應設備文件是/dev/video0,若是設備上接了第二個攝像頭設備文件是/dev/video1,以此類推。


經過這條命令輸出咱們能夠發現圖像分辨率只有 640 X 480,這是VGA的標準分辨率,系統經過將有序的圖片序列轉換爲視頻流,在ZoneMinder中採用H.264壓縮方式來完成視頻流的壓縮任務。整個壓縮過程徹底有軟件方式完成。對CPU處理能力要求較高。在zoneminder系統中的ffmpeg軟件也是採用H.264視頻壓縮標準。


參數「-y」 表示輸入格式爲YUV,若是不加-y 表示 mjpg輸入。

  • 格式:YUV 它是一種採用格式,說明系統中USB攝像頭採集YUV格式的原始圖像。


  • 圖像格式JPG,輸出質量爲80%


  • 通信端口爲TCP 8090,該值可修改。


其它啓動方式:

#mjpg_streamer -i 「input_uvc.so -y -d /dev/video0 -r 320x240 -f 10」

image.png

不指定端口,默認爲8080


接下來就能夠在瀏覽器地址欄中輸入`http://localhost:8080/?action=stream來查看視頻。


image.png


高級技巧:


若是但願瀏覽網頁時須要用戶密碼認證則使用下列參數:


-c "username:password" 用戶名:    username     密碼    :password

命令實例:


image.png



將jpg圖片序列輸出到制定的目錄下,例如/tmp


image.png


/tmp目錄發生了哪些變化呢?


image.png

更多內容你們能夠訪問國內首發《基於Web的視頻監控系統-ZoneMinder應用》原創課程。

https://edu.51cto.com/course/17700.html

相關文章
相關標籤/搜索