久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > OpenWRT下的mjpg streamer配置

OpenWRT下的mjpg streamer配置(zhi) 時間(jian):2018-08-15      來源:未知(zhi)

1.1.1 軟件(jian)介紹

mjpg-streamer 可以通過(guo)文件或(huo)者是HTTP方式訪問(wen)linux UVC兼容攝像頭。

1.1.2 安裝

在openwrt系統(tong)下(xia),需要安裝以(yi)下(xia)攝像頭的驅動。

opkg kmod-usb2

opkg install kmod-usb-ohci #一般BCM用的是ohci USB控制(zhi)器

opkg install kmod-usb-video

opkg install kmod-video-gspca-core

opkg install kmod-video-core

opkg install kmod-video-uvc #免(mian)驅uvc攝像頭

opkg install kmod-video-gspca-zc3xx #中微星攝像頭 如zc301 zc303 zc305

opkg install kmod-i2c-core

opkg install kmod-input-core

如果(guo)能找到(dao) /dev/video0 的設備(bei)文件,就說明驅(qu)動已經(jing)安裝成功。

如(ru)果(guo)沒有(you)成功(gong),羅(luo)技的攝像頭(tou)還可以嘗試一下安裝kmod-video-pwc。

在(zai)openwrt系統下(xia)面,安裝mjpg-streamer很簡單(dan)。

opkg install mjpg-streamer

安裝完了之后,運行

/etc/init.d/mjpg-streamer start

就可以啟動了。

1.1.3 使用

在firefox瀏覽器(qi)里(li)面輸入 //192.168.1.1:8080/?action=stream ,應該能看(kan)到攝像(xiang)頭抓取的視頻。

這(zhe)個(ge)視頻(pin)的幀數很(hen)低,顯得攝(she)像頭反(fan)應很(hen)慢。可(ke)以修改/etc/config/mjpg-streamer里面(mian)的fps參數。

如(ru)果想在公司(si)訪問(wen)家里的攝像頭,還應該修(xiu)改防火墻,接受(shou)8080端口的外(wai)網(wang)請求。

添加下面配(pei)置到 /etc/config/firewall

config rule

option src wan

option proto tcp

option dest_port 8080

option target ACCEPT

然后重(zhong)啟防(fang)火墻 /etc/init.d/firewall restart,就可以了。

外(wai)網訪問(wen)攝(she)像(xiang)頭的時(shi)候,如果看視頻(pin)可(ke)能速度會跟不上(shang),可(ke)以只看截(jie)屏。//192.168.1.1:8080/?action=snapshot

需(xu)要將192.168.1.1替換(huan)成(cheng)路(lu)由器說使用的公網IP地(di)址

1.1.4 設置開機自啟動

openwrt是基于linux內核(he)的路由操作(zuo)系統,

總結一(yi)下OpenWrt的啟(qi)(qi)動(dong)流程:1.CFE->2.linux->3./etc/preinit->4./sbin/init ->5./etc/inittab ->6./etc/init.d/rcS->7./etc/rc.d/S* ->8.經過裁(cai)剪,因此(ci)與普通(tong)linux系統(tong)文件(jian)結構有所不同。為了(le)添加攝像(xiang)頭裝了(le)mjpg_streamer,但是每次都要手(shou)動(dong)啟(qi)(qi)動(dong)攝像(xiang)頭,實在是太(tai)麻(ma)煩了(le)于是給它設(she)置(zhi)為開機自(zi)啟(qi)(qi)動(dong)。

首先在(zai)/etc/init.d里添加(jia)需要啟動的shell腳本

vim startCamera

#!/bin/sh /etc/rc.common

# /init.d/startCamera

START=50

start()

{

mjpg_streamer -b -i "input_uvc.so -r 320x240 -f 15 " -o "output_http.so -p 8080 -w /web"

}

stop()

{

killall startCamera

}

之后還需要(yao)在rc.d目(mu)(mu)錄下做(zuo)一個鏈接(jie),啟動(dong)(dong)時系統會按順(shun)序(xu)啟動(dong)(dong)rc.d目(mu)(mu)錄下的(de)腳本鏈接(jie),對應執行init.d目(mu)(mu)錄下的(de)啟動(dong)(dong)腳本。

命令(ling):ln -s /etc/init.d/startCamera /etc/rc.d/S50startCamera

重啟,即可

現(xian)在實現(xian)了(le)開機(ji)自(zi)啟動

如果想關閉的話 直(zhi)接(jie)殺進程(cheng)就可以了

還有一種是通(tong)過傳參來設(she)置

mjpg_streamer -b -i "input_uvc.so -r 320x240 -f 15 -y" -o "output_http.so -p 8080 -w /web"網(wang)址

//192.168.1.90:8080/?action=stream

服務啟動

/etc/init.d/mjpg-streamer enable 是設置(zhi)開機自動啟動

/etc/init.d/mjpg-streamer disable 是禁止開機自動(dong)啟動(dong)

/etc/init.d/mjpg-streamer start 是現在啟動

/etc/init.d/mjpg-streamer restart 重啟(qi)

/etc/init.d/mjpg-streamer stop 停止

service mjpg-streamer start

設置開機(ji)自(zi)動啟動服務(wu)

/etc/init.d/mjpg-streamer enable

立即啟動服務

/etc/init.d/mjpg-streamer start [1]

很像ser2net,即便拔掉攝像頭再(zai)插上(shang)也(ye)會識(shi)別。

1.1.5 配置用戶名和密碼(ma)

mjpg-streamer 還可以使用用戶名和密(mi)碼來訪問。

修(xiu)改 /etc/init.d/mjpg-streamer 中的(de)[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port" &為[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &

后添(tian)加的部分(fen)就是(shi)用戶(hu)名和(he)密碼,中間用冒(mao)號分(fen)割。重(zhong)新(xin)啟動mjpg-streamer,保證配置生效。

/etc/init.d/mjpg-streamer restart

1.2 OpenWRT下(xia)的(de)ser2net配置使用

1.2.1 軟件(jian)介(jie)紹(shao)

ser2net是(shi)以款串(chuan)口(kou)轉發軟(ruan)件(jian),這是(shi)一(yi)個(ge)可以通(tong)過(guo)個(ge)人PC或手(shou)機(ji)向路(lu)(lu)由(you)的(de)指(zhi)定(ding)端口(kou)發送(song)數(shu)(shu)據,然后路(lu)(lu)由(you)原封不動(dong)的(de)將(jiang)數(shu)(shu)據發送(song)到路(lu)(lu)由(you)的(de)TTL接口(kou)的(de)程序(xu)。當安(an)裝完(wan)這個(ge)程序(xu)后,我(wo)們就可以通(tong)過(guo)編制(zhi)的(de)程序(xu)向路(lu)(lu)由(you)的(de)TTL口(kou)發送(song)串(chuan)行(xing)數(shu)(shu)據,意義在于(yu):單片機(ji)就可以接受路(lu)(lu)由(you)發送(song)的(de)串(chuan)行(xing)數(shu)(shu)據進行(xing)各種控制(zhi)。

聯(lian)網以后利用(yong)opkg指令(ling)來(lai)安裝,或用(yong)luci安裝,安裝完以后會出現(xian)一個文件

vi /etc/ser2net.conf

找到

2001:raw:600:/dev/ttyATH0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS

#2002:raw:600:/dev/ttyS1:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS

注意,這(zhe)里"#"代表的(de)是(shi)屏蔽,我們修改的(de)是(shi)非(fei)屏蔽語句,可(ke)以看(kan)到,上位機發送(song)的(de)端(duan)口是(shi)2001,這(zhe)就是(shi)我們需要發送(song)的(de)端(duan)口號(hao),波特率是(shi)9600,其它的(de)略(lve)。

1.2.2 設置開(kai)機啟動

ser2net開機自啟動(dong):

命令vi /etc/rc.local 打開它,i進入(ru)編輯,在exit0的上一行(xing)添加(jia)一條ser2net,esc退出編輯,wq保(bao)存

命令vi /etc/init.d/ser2net,,i進入(ru)編(bian)輯

#!/bin/sh /etc/rc.common

# /init.d/my-ser2net

START=99

start() {

ser2net –c /etc/ser2net.conf

}

Esc退出(chu)編輯,wq 保存(cun)。

命令reboot重(zhong)啟路由器,ok

直接(jie)輸入ser2net可以(yi)啟(qi)動(dong)此軟件(jian)。輸入 ./ser2net 驗證自啟(qi)動(dong)修(xiu)改(gai)是否正(zheng)確

1.2.3 串口ser2net過濾特(te)殊字符(fu)

許多(duo)流(liu)行的linux串口編(bian)程的版本中都沒對c_iflag(termios成員變(bian)量)這個變(bian)量進(jin)(jin)行有(you)效的設置,這樣傳送ASCII碼(ma)時沒什(shen)么問(wen)題,但傳送二進(jin)(jin)制(zhi)數(shu)據時遇到0x0d,0x11和(he)0x13卻會被丟掉(diao)。不用(yong)說(shuo)也(ye)知道,這幾個肯(ken)定是特(te)殊字(zi)符,被用(yong)作特(te)殊控制(zhi)了。關掉(diao)ICRNL和(he)IXON選項即可解決(jue)。

c_iflag &= ~(ICRNL | IXON);

0x0d 回車符CR

0x11 ^Q VSTART字符(fu)

0x13 ^S VSTOP字(zi)符

ICRNL 將輸入的CR轉換為(wei)NL

IXON 使起動/停止(zhi)輸出控(kong)制流起作用

在(zai)《UNIX環境高(gao)級編程第二版》第18章第11小節看到(dao)把(ba)終端I/O設置為(wei)原始(shi)模(mo)式(串口通訊就是終端I/O的原始(shi)模(mo)式)時輸入屬性設置為(wei)

term.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

原來這三(san)個數(shu)據是(shi)串口通信里面特殊字符(fu),具(ju)有(you)特別(bie)的意義,會(hui)被(bei)ser2net過濾掉(diao),那么怎么保證數(shu)據完整無誤地傳輸呢?

方法一:修(xiu)改(gai)ser2net源代碼,這個方法太麻煩。

方法二: 用winscp登陸(lu)WIFI板,轉到/etc/目錄,打開(kai)ser2net.conf文件(jian),找到如下配置:

2001:raw:600:/dev/ttyATH0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS

將其中藍色字體(ti)部(bu)分刪除,變為(wei):

2001:raw:600:/dev/ttyATH0:9600 NONE 1STOPBIT 8DATABITS LOCAL -RTSCTS

保存,再重啟WIFI板(ban),ser2net就(jiu)不再會過濾掉特殊字(zi)符了。

那(nei)如何在(zai)OpenWRT源(yuan)碼編譯(yi)鏡(jing)像的時候就(jiu)將此軟件(jian)(jian)包(bao)配置好呢,簡單的方(fang)法(fa)就(jiu)是(shi)修(xiu)改(gai)編譯(yi)所需(xu)軟件(jian)(jian)包(bao)中的配置文件(jian)(jian),文件(jian)(jian)路徑:/dl/ser2net-2.9.1.tar.gz

tar -zxvf ser2net-2.9.1.tar.gz

進入我們(men)解壓的目(mu)錄

cd ser2net-2.9.1/

ls

可(ke)以找到ser2net.config,對其進行編輯

vi ser2net.config

將XONXOFF刪除(chu),將ttyS0改(gai)為ttyATH0,另(ling)外此處(chu)還可(ke)以修改(gai)端口號及串口波特率。wq保存退出,然后退回到dl目(mu)錄,刪除(chu)之前(qian)的軟件(jian)包(bao),重新壓縮。

cd ..

rm ser2net-2.9.1.tar.gz

tar –zcvf ser2net-2.9.1.tar.gz ser2net-2.9.1/

1.2.4 ser2net的(de)雙(shuang)向通(tong)信

因shell與ser2net占(zhan)用同一個串口,當我(wo)們向串口發送數據時就會(hui)出現問題,需(xu)要(yao)將shell注釋掉(diao)。根(gen)據我(wo)們選擇額(e)硬件平(ping)臺,我(wo)們需(xu)要(yao)修改./target/linux/ar71xx/base-files/etc/inittab

 vi ./target/linux/ar71xx/base-files/etc/inittab

將后一(yi)行#號注釋掉

上一篇:飛行控制器Pixhawk簡介

下一篇:什么是 ZigBee協議棧?

熱點文章推薦
華清學員就業榜單
高(gao)薪學員(yuan)經驗分(fen)享
熱點新聞推薦(jian)
前臺專線:010-82525158 企(qi)業培訓洽談專線:010-82525379 院(yuan)校合作(zuo)洽談(tan)專(zhuan)線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部