開發環境:
主機: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文章
7979瀏覽量
266054 -
攝像頭
+關注
關注
60文章
4860瀏覽量
96294 -
Ubuntu
+關注
關注
5文章
566瀏覽量
30031 -
開發環境
+關注
關注
1文章
230瀏覽量
16695 -
OpenWrt
+關注
關注
10文章
130瀏覽量
39447
發布評論請先 登錄
相關推薦
Openwrt開發指南 第1章 OpenWrt入門
Openwrt開發指南 第2章 OpenWrt開發環境搭建
Openwrt開發指南 第3章 OpenWrt下載及配置
Openwrt開發指南 第7章 添加Web界面
Openwrt開發指南 第12章 添加OpenWrt軟件包
Openwrt開發指南 第13章 OpenWrt啟動流程
Openwrt開發指南 第14章 統一接口配置UCI
Openwrt開發指南 第17章 驅動開發之字符設備驅動程序
Openwrt開發指南 第22章 Openwrt串口的使用2
Openwrt開發指南 第29章 OpenWrt 防火墻介紹

評論