源碼地址為:https://github.com/jacksonliam/mjpg-streamer
Mjpg簡介:
(1)mjpg-streamer是一個命令行應用程序,它將JPEG幀從一個或多個輸入插件復制到多個輸出插件。它可用於通過基於IP的網絡將JPEG文件從網絡攝像頭流式傳輸到各種類型的查看器,如Chrome,Firefox,Cambozola,VLC,mplayer和其他能夠接收MJPG流的軟件。
(2)它最初是為嵌入式設備編寫的,在RAM和CPU方面資源非常有限。其前身“uvc_streamer”的創建是因為Linux-UVC兼容相機直接生成JPEG數據,即使是運行OpenWRT的嵌入式設備,也可以實現快速和流暢的M-JPEG流。輸入模塊“input_uvc.so”從連接的網絡攝像頭捕獲這樣的JPG幀。mjpg-streamer現在支持各種不同的輸入設備
源碼樹為:
└─mjpg-streamer └─mjpg-streamer-experimental ├─cmake ├─plugins │ ├─input_control │ ├─input_file │ ├─input_http │ ├─input_opencv │ │ └─filters │ │ ├─cvfilter_cpp │ │ └─cvfilter_py │ │ └─cmake │ ├─input_ptp2 │ ├─input_raspicam │ │ └─mmal │ │ ├─core │ │ ├─util │ │ └─vc │ ├─input_testpicture │ │ └─pictures │ ├─input_uvc │ ├─output_autofocus │ ├─output_file │ │ └─examples │ ├─output_http │ ├─output_rtsp │ ├─output_udp │ ├─output_viewer │ └─output_zmqserver ├─scripts └─www
其中:
下載后如圖所示,主要是 plugins, www, mjpg_streamer.h 頭文件跟mjpg_streamer.c源碼
其他都是一些打包方式,讓我覺得滿意的是有了ros_mjpg ,以及Dockerfile,真的是應用很廣。
解釋一下這些文件大概含義:
plugins目錄: 一些usb攝像頭的數據采集和傳輸的功能子函數,主要是input和output方式
www目錄:主要是在使用瀏覽器瀏覽時,html界面上一些功能。
mjpg-streamer.c & .h:主要實現命令參數的解析及調用相關線程運行功能子函數
有了上文大概了解,使用也很方便;
這里,通過Raspberry 3B+ 進行介紹:(暫時使用局域網內進行圖像傳輸,其實后面可以通過配置完成全網可視)
1.更新樹莓派
sudo apt-get update && sudo apt-get upgrade -y
更新很快,如果您的鏡像使用國可能有點慢-->> 可以跟我一樣換成國內鏡像。
2.開啟攝像頭
sudo raspi-config (必須sudo ) 然后選擇 ‘5 interfacing options’中的‘camera’然后enable,之后樹莓派將重啟(需要重啟)(步驟如下圖)
3.查看是否配置好攝像頭
ls /dev
此命令,通過ls /dev 查外設,若出現 video0 可證明攝像頭已經被樹莓派檢測到
4.安裝必要庫
sudo apt-get update sudo apt-get install subversion sudo apt-get install imagemagick sudo apt-get install libv4l-dev sudo apt-get install cmake sudo apt-get install git
5.下載開源包
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
6.編譯安裝
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
make all
sudo make install
編譯安裝過程可能有一點慢,建議不使用多線程編譯,可能出錯
7.運行
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -n -y -f 25 -r 640x480" -o "./output_http.so -n -w /usr/local/www"
出現上圖,可證明已經運行成功
8.打開網頁 瀏覽器輸入‘樹莓派的ip:8080’即可進入mjpg-streamer界面(如下圖)