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

一、运行环境

硬件平台:NI IC-3173 

软件平台:NI Real-time Linux

目标:在NI平台上安装USB监控摄像机,可以在远端通过网页web实时查看。

二、操作步骤

由于本人之前用过mjpg-streamer,个人感觉此工具用于开发监控摄像头再合适不过,进而想到可以再NI(本人用的是NI IC-3173)的硬件平台上使用mjpg-streamer。

1. 在NI平台上安装软件的方法

用过Linux的都知道,要在Linux上编译安装软件,需要gcc/g++的支持,同时,大部分软件都使用make来快速安装,因而首先需要安装gcc编译器make工具。在NI平台上,安装软件可以通过opkg来完成(opkg install ****)

1. 安装gcc编译器

通过尝试,本人使用 opkg install gcc 命令,发现并不能安装成功gcc编译器,在NI论坛上搜索后,一下帖子给了我启发 http://forums.ni.com/t5/NI-Linux-Real-Time-Documents/Installing-gFortran-Compile-Tools-on-NI-Linux-Real-Time/ta-p/3538813

简而言之,运行

rm /usr/bin/lastb

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

如此这般之后,通过 gcc -v 可以查看gcc是否安装成功

2. 安装make工具

make工具的安装比较简单,直接使用

opkg install make

即可安装成功。

2. 安装mjpg-streamer

1. 在网上又查了一边安装mjpg-streamer的方法,一致做法是先安装libjpeg,再安装mjpg-streamer,因为后者需要前者支持。

2. 本人试了多种方法安装libjpeg,不外乎

    (1) 下载libjpeg源码包,configure 后 make,下载地址http://www.ijg.org/files/ ,安装方法可参考文末链接1、2

     (2) 通过opkg安装,opkg install libjpeg-dev(不知道对不对,欢迎指正)

3. 安装libjpeg-streamer

如果以上步骤顺利的话,这一步就水到渠成了,下载mjpg-streamer安装包,mjpeg-streamer主要有两个版本,r63略老一点,code 182 较新,此处我使用的是code 182版本的

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

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

另附网友github https://github.com/jacksonliam/mjpg-streamer

下载完成后,解压到/home/user目录下(个人喜好),解压

tar -xvzf mjpg-streamer*

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

make

需要设置参数的童鞋可以参考文末链接1、2

至此安装完成,运行一下试试吧

4. 运行 mjpg-streamer

在 /home/user/mjpg-streamer-code-182/mjpg-streamer下,有个默认启动脚本 start.sh

./start.sh

三、插曲

相信任何过程都不会是一番风顺的,这里记录了我都探索历程

1. 使用NI交叉编译工具编译mjpg-streamer,编译工具下载及使用参考文末链接3、4

结果是编译未通过,提示错误:

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

compilation terminated.

如果有哪位大侠解决了,还望不吝赐教

2. 出现上述提示我都第一反应就是libjpeg库没安装,那就也交叉编译一下呗,于是又用NI的交叉编译工具(Eclipse)编译上面下载的libjpeg库(我用的是v8版本的),开始出现第一个错误,提示无法找到 jconfig.h,后百般搜索,发现可以吧jconfig.txt改为jconfig.h即可,参加jconfig.txt的内容(参考 http://blog.csdn.net/u010640288/article/details/23221797

然而改过之后也不是完全可以,仍然提示错误

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'

无解,欲哭无泪啊

3. 百般折腾后,终于使用开始所述方法安装成功,开开信心地运行 start.sh,在客户端输入 http://192.168.1.127:8080/?action=stream 时,却是黑乎乎地一片,这是什么鬼,开始认为是jpeg库的原因,可是安装jpeg库后,问题未解决,后来想到之前用mjpg-streamer的时候也出现过这种问题,有的相机可以用mjpg压缩,有的不行,必须用yuv未压缩的格式(当然占带宽),因而,我在 命令行参数中修改为

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

其中 -f 是设置帧频,因为默认帧频是5,太低了。

至此,终于见到图像了,散花。



参考链接:

1 . mjgp-steame的移植

2. mini2440开发板移植mjpg-streamer

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

4. Eclipse入门 – 用于基于NI Linux Real-Time的NI CompactRIO设备

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容