開發(fā)環(huán)境:
主機(jī):Ubuntu16.04
Openwrt:Openwrt19.07
1 攝像頭選擇
做本次實(shí)驗(yàn)的時候,推薦大家用 USB 免驅(qū)的攝像頭,最好是支持 MJPEG 輸出的攝像頭類型。USB 免驅(qū)攝像頭輸出 YUV 格式和輸出 MJPEG 格式,對無線監(jiān)控的效果有什么影響呢?
首先大家要知道,同樣是一幀數(shù)據(jù),YUV 格式會比 MJPEG 格式的大得多,因此我們在視頻傳輸?shù)臅r候,一般是傳輸 MJPEG 格式的數(shù)據(jù)。這樣,就有這樣一個問題,如果攝像頭是輸出 YUV 格式,那么就意味著我們需要通過軟件將視頻數(shù)據(jù)由 YUV 格式轉(zhuǎn)換成 MJPEG格式,然后傳輸。如果攝像頭輸出的是 MJPEG 格式,那個將可以直接將得到的數(shù)據(jù)進(jìn)行傳輸。因此,使用支持 MJPEG 壓縮的攝像頭,比一般的攝像頭,做無線監(jiān)控的效果,好很多!
2 配置 OpenWrt 支持 usb 攝像頭
要支持?jǐn)z像頭,就必須配置上攝像頭的驅(qū)動,因?yàn)槭敲怛?qū)的 USB 攝像頭,因此我們必須配置上 UVC 驅(qū)動,具體如圖所示。首先,我們選中內(nèi)核模塊進(jìn)行配置。
Kernel modules --- >
Video Support --- >
< * > kmod-video-core
< * > kmod-video-uvc
-*- kmod-video-videobuf2
編譯。
$make V=99
將固件燒寫到板子中,插入USB攝像頭,接口查看是否有video0這個設(shè)備節(jié)點(diǎn)了。
3 配置 OpenWrt 支持 mipg-streamer 軟件
mipg-streamer 就是一款用于視頻數(shù)據(jù)采集、視頻數(shù)據(jù)格式轉(zhuǎn)換、視頻數(shù)據(jù)傳輸?shù)能浖?wù)器。因此為了讓 openwrt 系統(tǒng)支持該軟件,我們需要將它配置進(jìn)去。
Multimedia --- >
< * > mjpg-streamer
就這樣,我們就讓 openwrt 系統(tǒng)支持無線監(jiān)控,按前面的方法配置好后,保存退出,然后 make V=99,最后將編譯出來的固件燒寫到我們的開發(fā)板上面。然后啟動系統(tǒng)。啟動完成,插入我們的攝像頭,就會看到/dev/video0 這個設(shè)備節(jié)點(diǎn)。usb 攝像頭接入開發(fā)板后提示如下:
如果插上提示不對,請先做上一章,再重新生成固件即可。然后運(yùn)行 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 是設(shè)備位置,我們攝像頭的設(shè)備位置在:/dev/video0,-y 用于區(qū)分一般攝像頭和支持 MJPEG 的攝像頭,-o 指定輸出,這里輸出到 output_ http.so 即 http(可以理解為輸出到網(wǎng)頁上),-w指定 web 服務(wù)器為 www。運(yùn)行命令后,可以得到如下圖的信息:
#mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so"
好的,電腦上必須用火狐瀏覽器才能看到時視頻哦,我們打開網(wǎng)頁輸入:
http://192.168.2.1:8080/?action=stream
其中 192.168.2.1 是開發(fā)板的 ip 地址,8080 是 http tcp 的端口,action表示某個動作,這里表示: stream。通過這個輸入我們就可以從網(wǎng)頁完成視頻的監(jiān)控了!
當(dāng)然,在我們的 ” Monitor.apk” 中可以進(jìn)行手機(jī)安裝該軟件,進(jìn)行安卓手機(jī)端的控制!手機(jī)上只用輸入路由器的 IP 即可看到監(jiān)控畫面。這里 mipg-streamer 軟件使用方法我們可以通過命令:mjpg_streamer -h 進(jìn)行幫助!
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】輸入參數(shù)
-y 是關(guān)鍵,默認(rèn)啟動是 mjpeg 格式,這個就報錯。改成 YUV 格式
-d 指定設(shè)備
-f 制定幀數(shù),默認(rèn) 30 幀
-r 指定視頻大小,如 320×240
-q 指定畫質(zhì),默認(rèn) 80
【注2】輸出參數(shù)
-p 指定端口,這里是 8080
-w 指定網(wǎng)頁目錄,這里我們設(shè)置的是/www/camwww 目錄
-c 設(shè)置通過密碼訪問
【注3】修改分辨率
#mjpg_streamer -i "input_uvc.so -r 800*600 -d /dev/video0" -o "output_http.so 8080 -w www"
提示:未做出實(shí)驗(yàn)效果時可以用我提供的固件先測試一下。
【注4】服務(wù)操作
/etc/init.d/mjpg-streamer enable 是設(shè)置開機(jī)自動啟動
/etc/init.d/mjpg-streamer disable 是禁止開機(jī)自動啟動
/etc/init.d/mjpg-streamer start 是現(xiàn)在啟動
/etc/init.d/mjpg-streamer restart 重啟
/etc/init.d/mjpg-streamer stop 停止
service mjpg-streamer start,在通常*nuix是這樣的,但是openwrt的busybox是精簡版的,所以變成了直接調(diào)用服務(wù)啟動
審核編輯:湯梓紅
-
usb
+關(guān)注
關(guān)注
60文章
7945瀏覽量
264600 -
攝像頭
+關(guān)注
關(guān)注
60文章
4841瀏覽量
95671 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29750 -
開發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
225瀏覽量
16617 -
OpenWrt
+關(guān)注
關(guān)注
10文章
130瀏覽量
39302
發(fā)布評論請先 登錄
相關(guān)推薦
評論