開發環境:
主機:Ubuntu16.04
Openwrt:Openwrt19.07
1 攝像頭選擇
做本次實驗的時候,推薦大家用 USB 免驅的攝像頭,最好是支持 MJPEG 輸出的攝像頭類型。USB 免驅攝像頭輸出 YUV 格式和輸出 MJPEG 格式,對無線監控的效果有什么影響呢?
首先大家要知道,同樣是一幀數據,YUV 格式會比 MJPEG 格式的大得多,因此我們在視頻傳輸的時候,一般是傳輸 MJPEG 格式的數據。這樣,就有這樣一個問題,如果攝像頭是輸出 YUV 格式,那么就意味著我們需要通過軟件將視頻數據由 YUV 格式轉換成 MJPEG格式,然后傳輸。如果攝像頭輸出的是 MJPEG 格式,那個將可以直接將得到的數據進行傳輸。因此,使用支持 MJPEG 壓縮的攝像頭,比一般的攝像頭,做無線監控的效果,好很多!
2 配置 OpenWrt 支持 usb 攝像頭
要支持攝像頭,就必須配置上攝像頭的驅動,因為是免驅的 USB 攝像頭,因此我們必須配置上 UVC 驅動,具體如圖所示。首先,我們選中內核模塊進行配置。
Kernel modules --- >
Video Support --- >
< * > kmod-video-core
< * > kmod-video-uvc
-*- kmod-video-videobuf2
編譯。
$make V=99
將固件燒寫到板子中,插入USB攝像頭,接口查看是否有video0這個設備節點了。
3 配置 OpenWrt 支持 mipg-streamer 軟件
mipg-streamer 就是一款用于視頻數據采集、視頻數據格式轉換、視頻數據傳輸的軟件,服務器。因此為了讓 openwrt 系統支持該軟件,我們需要將它配置進去。
Multimedia --- >
< * > mjpg-streamer
就這樣,我們就讓 openwrt 系統支持無線監控,按前面的方法配置好后,保存退出,然后 make V=99,最后將編譯出來的固件燒寫到我們的開發板上面。然后啟動系統。啟動完成,插入我們的攝像頭,就會看到/dev/video0 這個設備節點。usb 攝像頭接入開發板后提示如下:
如果插上提示不對,請先做上一章,再重新生成固件即可。然后運行 mipg-streamer 軟件:
- 一般攝像頭:
#mjpg_streamer -i "input_uvc.so -d /dev/video0 -y" -o "output_http.so -w www"
- 支持 MJPEG 的攝像頭:
#mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -w www"
其中: -i 表示指定輸入,這里輸入為:input_uvc.so 即 uvc(usb video),-d 是設備位置,我們攝像頭的設備位置在:/dev/video0,-y 用于區分一般攝像頭和支持 MJPEG 的攝像頭,-o 指定輸出,這里輸出到 output_ http.so 即 http(可以理解為輸出到網頁上),-w指定 web 服務器為 www。運行命令后,可以得到如下圖的信息:
#mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so"
好的,電腦上必須用火狐瀏覽器才能看到時視頻哦,我們打開網頁輸入:
http://192.168.2.1:8080/?action=stream
其中 192.168.2.1 是開發板的 ip 地址,8080 是 http tcp 的端口,action表示某個動作,這里表示: stream。通過這個輸入我們就可以從網頁完成視頻的監控了!
當然,在我們的 ” Monitor.apk” 中可以進行手機安裝該軟件,進行安卓手機端的控制!手機上只用輸入路由器的 IP 即可看到監控畫面。這里 mipg-streamer 軟件使用方法我們可以通過命令:mjpg_streamer -h 進行幫助!
root@OpenWrt:~# mjpg_streamer -h
-----------------------------------------------------------------------
Usage: mjpg_streamer
-i | --input "< input-plugin.so > [parameters]"
-o | --output "< output-plugin.so > [parameters]"
[-h | --help ]........: display this help
[-v | --version ].....: display version information
[-b | --background]...: fork to the background, daemon mode
-----------------------------------------------------------------------
Example #1:
To open an UVC webcam "/dev/video1" and stream it via HTTP:
mjpg_streamer -i "input_uvc.so -d /dev/video1" -o "output_http.so"
-----------------------------------------------------------------------
Example #2:
To open an UVC webcam and stream via HTTP port 8090:
mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090"
-----------------------------------------------------------------------
Example #3:
To get help for a certain input plugin:
mjpg_streamer -i "input_uvc.so --help"
-----------------------------------------------------------------------
In case the modules (=plugins) can not be found:
* Set the default search path for the modules with:
export LD_LIBRARY_PATH=/path/to/plugins,
* or put the plugins into the "/lib/" or "/usr/lib" folder,
* or instead of just providing the plugin file name, use a complete
path and filename:
mjpg_streamer -i "/path/to/modules/input_uvc.so"
-----------------------------------------------------------------------
【注1】輸入參數
-y 是關鍵,默認啟動是 mjpeg 格式,這個就報錯。改成 YUV 格式
-d 指定設備
-f 制定幀數,默認 30 幀
-r 指定視頻大小,如 320×240
-q 指定畫質,默認 80
【注2】輸出參數
-p 指定端口,這里是 8080
-w 指定網頁目錄,這里我們設置的是/www/camwww 目錄
-c 設置通過密碼訪問
【注3】修改分辨率
#mjpg_streamer -i "input_uvc.so -r 800*600 -d /dev/video0" -o "output_http.so 8080 -w www"
提示:未做出實驗效果時可以用我提供的固件先測試一下。
【注4】服務操作
/etc/init.d/mjpg-streamer enable 是設置開機自動啟動
/etc/init.d/mjpg-streamer disable 是禁止開機自動啟動
/etc/init.d/mjpg-streamer start 是現在啟動
/etc/init.d/mjpg-streamer restart 重啟
/etc/init.d/mjpg-streamer stop 停止
service mjpg-streamer start,在通常*nuix是這樣的,但是openwrt的busybox是精簡版的,所以變成了直接調用服務啟動
審核編輯:湯梓紅
-
usb
+關注
關注
60文章
7936瀏覽量
264458 -
攝像頭
+關注
關注
59文章
4836瀏覽量
95597 -
Ubuntu
+關注
關注
5文章
563瀏覽量
29703 -
開發環境
+關注
關注
1文章
225瀏覽量
16609 -
OpenWrt
+關注
關注
10文章
130瀏覽量
39296
發布評論請先 登錄
相關推薦
評論