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

評(píng)論