【NI】在NI RtLinux 上部署 mjpg-streamer

一、運(yùn)行環(huán)境

硬件平臺(tái):NI IC-3173?

軟件平臺(tái):NI Real-time Linux

目標(biāo):在NI平臺(tái)上安裝USB監(jiān)控?cái)z像機(jī),可以在遠(yuǎn)端通過(guò)網(wǎng)頁(yè)web實(shí)時(shí)查看。

二、操作步驟

由于本人之前用過(guò)mjpg-streamer,個(gè)人感覺(jué)此工具用于開(kāi)發(fā)監(jiān)控?cái)z像頭再合適不過(guò),進(jìn)而想到可以再NI(本人用的是NI IC-3173)的硬件平臺(tái)上使用mjpg-streamer。

1. 在NI平臺(tái)上安裝軟件的方法

用過(guò)Linux的都知道,要在Linux上編譯安裝軟件,需要gcc/g++的支持,同時(shí),大部分軟件都使用make來(lái)快速安裝,因而首先需要安裝gcc編譯器make工具。在NI平臺(tái)上,安裝軟件可以通過(guò)opkg來(lái)完成(opkg install ****)

1. 安裝gcc編譯器

通過(guò)嘗試,本人使用 opkg install gcc 命令,發(fā)現(xiàn)并不能安裝成功gcc編譯器,在NI論壇上搜索后,一下帖子給了我啟發(fā) http://forums.ni.com/t5/NI-Linux-Real-Time-Documents/Installing-gFortran-Compile-Tools-on-NI-Linux-Real-Time/ta-p/3538813

簡(jiǎn)而言之,運(yùn)行

rm /usr/bin/lastb

opkg update && opkg install packagegroup-core-buildessential git

如此這般之后,通過(guò) gcc -v 可以查看gcc是否安裝成功

2. 安裝make工具

make工具的安裝比較簡(jiǎn)單,直接使用

opkg install make

即可安裝成功。

2. 安裝mjpg-streamer

1. 在網(wǎng)上又查了一邊安裝mjpg-streamer的方法,一致做法是先安裝libjpeg,再安裝mjpg-streamer,因?yàn)楹笳咝枰罢咧С帧?/p>

2. 本人試了多種方法安裝libjpeg,不外乎

? ? (1) 下載libjpeg源碼包,configure 后 make,下載地址http://www.ijg.org/files/?,安裝方法可參考文末鏈接1、2

? ? ?(2) 通過(guò)opkg安裝,opkg install libjpeg-dev(不知道對(duì)不對(duì),歡迎指正)

3. 安裝libjpeg-streamer

如果以上步驟順利的話,這一步就水到渠成了,下載mjpg-streamer安裝包,mjpeg-streamer主要有兩個(gè)版本,r63略老一點(diǎn),code 182 較新,此處我使用的是code 182版本的

? ? ?(1) r63?https://sourceforge.net/projects/mjpg-streamer/

? ? ?(2) code 182?https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/

另附網(wǎng)友github https://github.com/jacksonliam/mjpg-streamer

下載完成后,解壓到/home/user目錄下(個(gè)人喜好),解壓

tar -xvzf mjpg-streamer*

cd mjpg-streamer-code-182/mjpg-streamer

make

需要設(shè)置參數(shù)的童鞋可以參考文末鏈接1、2

至此安裝完成,運(yùn)行一下試試吧

4. 運(yùn)行 mjpg-streamer

在 /home/user/mjpg-streamer-code-182/mjpg-streamer下,有個(gè)默認(rèn)啟動(dòng)腳本 start.sh

./start.sh

三、插曲

相信任何過(guò)程都不會(huì)是一番風(fēng)順的,這里記錄了我都探索歷程

1. 使用NI交叉編譯工具編譯mjpg-streamer,編譯工具下載及使用參考文末鏈接3、4

結(jié)果是編譯未通過(guò),提示錯(cuò)誤:

..\plugins\input_uvc\jpeg_utils.c:27:21: fatal error: jpeglib.h: No such file or directory

compilation terminated.

如果有哪位大俠解決了,還望不吝賜教

2. 出現(xiàn)上述提示我都第一反應(yīng)就是libjpeg庫(kù)沒(méi)安裝,那就也交叉編譯一下唄,于是又用NI的交叉編譯工具(Eclipse)編譯上面下載的libjpeg庫(kù)(我用的是v8版本的),開(kāi)始出現(xiàn)第一個(gè)錯(cuò)誤,提示無(wú)法找到?jconfig.h,后百般搜索,發(fā)現(xiàn)可以吧jconfig.txt改為jconfig.h即可,參加jconfig.txt的內(nèi)容(參考?http://blog.csdn.net/u010640288/article/details/23221797

然而改過(guò)之后也不是完全可以,仍然提示錯(cuò)誤

x86_64-nilrt-linux-gcc -O0 -g3 -Wall -c -fmessage-length=0 -o jdpostct.o "..\\jdpostct.c"

x86_64-nilrt-linux-gcc -O0 -g3 -Wall -c -fmessage-length=0 -o jmemdos.o "..\\jmemdos.c"

..\jmemdos.c:81:3: error: unknown type name 'You'

..\jmemdos.c:81:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'to'

..\jmemdos.c:81:14: error: unknown type name 'to'

..\jmemdos.c:85:39: error: invalid suffix "K." on integer constant

..\jmemdos.c:100:11: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token

..\jmemdos.c:104:11: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token

..\jmemdos.c:107:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jdos_open'

..\jmemdos.c:108:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jdos_close'

..\jmemdos.c:109:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jdos_seek'

..\jmemdos.c:110:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jdos_read'

無(wú)解,欲哭無(wú)淚啊

3. 百般折騰后,終于使用開(kāi)始所述方法安裝成功,開(kāi)開(kāi)信心地運(yùn)行 start.sh,在客戶端輸入 http://192.168.1.127:8080/?action=stream 時(shí),卻是黑乎乎地一片,這是什么鬼,開(kāi)始認(rèn)為是jpeg庫(kù)的原因,可是安裝jpeg庫(kù)后,問(wèn)題未解決,后來(lái)想到之前用mjpg-streamer的時(shí)候也出現(xiàn)過(guò)這種問(wèn)題,有的相機(jī)可以用mjpg壓縮,有的不行,必須用yuv未壓縮的格式(當(dāng)然占帶寬),因而,我在 命令行參數(shù)中修改為

./mjpg_streamer -i "./input_uvc.so -y -f 10" -o "./output_http.so -w ./www"

其中 -f 是設(shè)置幀頻,因?yàn)槟J(rèn)幀頻是5,太低了。

至此,終于見(jiàn)到圖像了,散花。



參考鏈接:

1 .?mjgp-steame的移植

2.?mini2440開(kāi)發(fā)板移植mjpg-streamer

3.?GNU C & C++ Compilers for x64 Linux (Windows host) 2014-2016

4.?Eclipse入門(mén) – 用于基于NI Linux Real-Time的NI CompactRIO設(shè)備

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容