前言
書接上期,我們已經(jīng)實現(xiàn)了許多功能了,但是對于視頻流的實時上傳還未實現(xiàn),本期主要分享的就是如何具體實現(xiàn)網(wǎng)頁實時顯示攝像頭采集到的視頻,從而實現(xiàn)安防中監(jiān)控的功能,這個功能完成后呢,就只剩下一個功能需求了,那就是GPRS模塊,能夠?qū)崿F(xiàn)危險報警的功能,也能夠打電話警報;只有這些功能完全實現(xiàn),我們才能完整的結(jié)束這個項目!下面來帶大家看一下視頻流信息究竟是如何一步步上傳到網(wǎng)頁的呢?
一、硬件準備和硬件設備的查詢
首先呢,必須準備一個攝像頭,哈哈哈,對頭不!接下來教大家來看一下怎樣查看攝像頭的基本信息,如果是在Windows下,大家只需要把USB攝像頭插入電腦的USB接口,顯示的信息如下:
大家可以在這里進行查看攝像頭的屬性信息,主要是查看硬件ID,包括VID和PID,并且可以在UVC官方網(wǎng)站里面看一下是否支持這個攝像頭;
如果大家直接插入到A9板子上,那么得看一下是否板子的內(nèi)核支持,首先我們必須確定的是USB必須支持,緊接著查看設備節(jié)點目錄下是否有該設備節(jié)點;
當插入攝像頭的時候會顯示以下信息:
并且大家也能夠看到這里的ID號和Windows下的ID號是一致的!
緊接著查看設備節(jié)點:
哈哈哈,大家是不是還想看一下拔出是個啥情況,滿足大家需求:
如果上述這些操作大家都正常,那么表示咱們的硬件環(huán)境已經(jīng)搭建完成了,接下來需要做的就是進行軟件實現(xiàn)視頻流上傳了;
大家一定要注意板子的內(nèi)核一定得支持USB接口,要不然咱們插上攝像頭是不會顯示信息的,先配置內(nèi)核,編譯好內(nèi)核后放在tftp目錄下,板子啟動后再插入;
二、 jpeg庫的移植
又到了移植的環(huán)節(jié)了,本項目做到這里呢,已經(jīng)是第三個移植了,從前兩個移植中我們基本已經(jīng)知道了移植其實就是將現(xiàn)成的接口標準庫拿過來加入到自己的項目框架中,進行合理運用;
2.1 源碼下載
源碼的下載可以點擊下面這個網(wǎng)站:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page
2.2 jpeg庫的移植
依舊是先下載,http://www.ijg.org/files/jpegsrc.v8b.tar.gz
緊接著解壓縮,命令是
tar -xvf jpegsrc.v8b.tar.gz
接下來配置源碼,需要注意的是這里的./configure后面需要緊接著傳參:
cd jpeg-8b
./configure --prefix=自己指定一個目錄 --host=arm-none-linux-gnueabi
注意:--prefix表示最終生成的庫和頭文件等存放的目錄,自己指定一個存在的路徑就可以,
后面編譯mjpeg-streamer的時候回用到,此處必須使用絕對路徑,--host=arm-none-linux-gnueabi --host表示生成的庫的運行平臺,
注意是兩個 - ,末尾不能加- ,./configure 之后為一行命令
這里提到了絕對路徑,一般再移植的過程中我們都使用絕對路徑,這樣保證不會出錯;因為畢竟是移植,如果設置為相對路徑,移植后的目錄已經(jīng)發(fā)生了變化,也就意味著相對路徑的相對基準已經(jīng)發(fā)生了變化;還記得boa服務器的移植嗎,如果不是移植再根目錄下,而是在某一個路徑下,那么配置boa.conf文件的時候就必須設置為絕對路徑了;這個就是設置為絕對路徑的優(yōu)勢!
接下來進行編譯,make就行;
最后拷貝庫文件到跟文件系統(tǒng)中:
sudo cp /home/fengjunhui/securitymonitor/mjpeg streamer/video/jpegarm/lib/* /home/fengjunhui/source/rootfs/lib
三、mjpeg-stream的移植
首先下載源碼;svn cohttps://mjpg-streamer.svn.sourceforge.NET/svnroot/mjpg-streamermjpg-streamer
下載源碼后進行解壓:
這幾個目錄文件的作用如下:
doc mjpg-streamer udp_client
mjpeg-client mjpg-streamer-experimental uvc-streamer
mjpg-streamer :目錄下提供了 的執(zhí)行程序和各個輸入輸出設備組件
uvc-streamer : 目錄下提供了 uvc-streamer的可執(zhí)行目錄
mjpeg-client: : 分別有 linux和windows 的客戶端
- 進入到mjpg-stream目錄下
- 修改源碼
vi ./plugins/input_uvc/Makefile
將CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
修改為
CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /home/secure/mjpeg-streamer/video/jpegarm/include (這個命令大家根據(jù)自己的路徑來敲)
將(CC)(CFLAGS) -o @inputuvc.cv4l2uvc.lojpegutils.lodynctrl.lo(LFLAGS)
修改為
(CC)(CFLAGS) -L /home/fengjunhui/securitymonitor/mjpeg-streamer/video/jpegarm/lib –o @inputuvc.cv4l2uvc.lojpegutils.lodynctrl.lo(LFLAGS)
- 在mjpg-streamer-code-182/mjpg-streamer 目錄下
編譯:make CC=arm-linux-gcc
在mjpg-streamer生成了
input*.so output*.so 和 mjpg_streamr 可執(zhí)行文件
小問題:
make CC=arm-linux-gcc
make: svnversion: Command not found
解決方案:sudo apt-get install subversion
安裝之前先更新一下軟件包的源和依賴:
Sudo apt-get update 更新軟件源
Sudo apt-get -f install 更新依賴
再次編譯:
make
Nothing to be done for `all'.
先
make clean,
然后再
make CC=arm-linux-gcc
查看生成的庫和可執(zhí)行的文件:
fengjunhui@ubuntu:~/securitymonitor/mjpeg-streamer/mjpg-streamer-code-182/mjpg-streamer$ ls *.so
input_file.so input_uvc.so output_http.so
input_testpicture.so output_file.so output_udp.so
ls mjpg_streamer
mjpg_streamer
- 移植到開發(fā)板
mkdir /home/fengjunhui/source/rootfs/mjpg-streamer (你的根文件系統(tǒng)目錄)
cp *.so /home/fengjunhui/source/rootfs/mjpg-streamer -arf
cp mjpg_streamer /home/fengjunhui/source/rootfs/mjpg-streamer -arf
將源碼目錄中的start.sh和目錄www拷貝到~/source/rootfs/mjpg-streamer/目錄下,然后就可以測試啦
sudo cp start.sh www/ ~/source/rootfs/mjpg-streamer/ -arf
四、測試結(jié)果
先打開開發(fā)板把內(nèi)核跑起來,內(nèi)核必須支持USB,并且對攝像頭也有一定的要求,這里需要給大家說仔細了,上面說到的設備號必須在http://www.ideasonboard.org/uvc/網(wǎng)站里面,但是經(jīng)過我的實測發(fā)現(xiàn),如果其他移植過程都沒有問題,并且運行start.sh腳本也沒有問題,或者有以下問題:
ERROR opening V4L interface: No such file or directory
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
MJPG-streamer [1296]: init_VideoIn failed
那么大家都可以打開start.sh文件,在以下處進行更改:
緊接著在A9開發(fā)板運行BOA服務器,直接進入視頻流文件夾下運行start.sh腳本,那么可以觀測到以下現(xiàn)象:
以上兩張圖片就是在網(wǎng)頁上顯示的視頻中午截圖所得,視頻還是比較模糊的,但是實測了一下離近一點會清晰一點,攝像頭用的還是比較便宜哈!文章來源:http://www.zghlxwxcb.cn/news/detail-741036.html
總結(jié)
本期的分享就到這里結(jié)束了,本期的這些過程如果大家一步步做下來的話,大家會發(fā)現(xiàn)遇到的問題還是不少的,但是問題永遠是存在的,有時候是硬件設備不匹配,有時候是軟件不支持,所以選型就是一個非常重要過程;希望大家還是能夠根據(jù)自己的項目找到合適的選型;最后,各位小伙伴們?nèi)绻惺斋@,可以點贊收藏哦,你們的認可是我創(chuàng)作的動力,一起加油!文章來源地址http://www.zghlxwxcb.cn/news/detail-741036.html
到了這里,關于安防監(jiān)控項目---mjpeg-streamer視頻圖像顯示(實時視頻流實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!