linzhao789 发表于 2020-11-2 14:17

迅为-iMX6ULL开发板-移植mjpg-streamer实现远程监控

本帖最后由 linzhao789 于 2020-11-2 14:18 编辑

本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\97_章节使用资料。
本章节介绍移植 MJPG 库和 mjpg-streamer 服务器到迅为 i.MX6ULL 终结者开发板上,并将采集到的图像通过网络在 PC 机上显示出来,交叉编译工具为 arm-linux-gnueabihf,摄像头为 USB 免驱摄像头。
97.1移植 MJPG库
因为使用 mjpg-streamer 要用到 MJPG 库,所以我们要先把 MJPG 库移植到开发板上。
MJPG 是 MJPEG 的缩写,MJPEG 是一种视频编码格式,但是 MJPEG 还可以表示文件格式扩展名,常用于闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,能发送高质量图片,生成完全动画视频,即由系列 jpg 图片组成视频。
MJPG 库下载地址:http://www.ijg.org/files/,本文档选择的 jpegsrc.v8b.tar.gz 这个版本,也可以使用文档同一目录下的 jpegsrc.v8b.tar.gz 压缩包,然后在 Ubuntu 创建文件夹 mjpg,
mkdir mjpg
将下载好的 jpegsrc.v8b.tar.gz 压缩包放到 mjpg 文件夹下,然后解压:
tar -vxf jpegsrc.v8b.tar.gz
http://www.eechina.com/data/attachment/forum/202011/02/103351ucnr9tc2at0svnyz.jpg
然后在此目录下创建文件夹用来存放编译生成文件,
mkdir _jpeg_install,
http://www.eechina.com/data/attachment/forum/202011/02/103351gdyh0eg7edm92eay.jpg
进入 jpeg-8b 文件夹,执行以下命令配置编译选项:
./configure --prefix=/home/ubuntu/work/mjpg/_jpeg_install --host=arm-linux-gnueabihf
参数说明:
--prefix=/home/ubuntu/work/mjpg/_jpeg_install:为上步创建的文件夹路径,根据实际填写。
--host=arm-linux-gnueabihf:为交叉编译工具的名字。
完成后如图 97.1.3:
http://www.eechina.com/data/attachment/forum/202011/02/103351uiwioemp7d6omoom.jpg
执行 make 编译,完成后如图 97.1.4:
http://www.eechina.com/data/attachment/forum/202011/02/103351zxuzncr5lsaa3r95.jpg
执行 make install,完成后如图 97.1.5:
http://www.eechina.com/data/attachment/forum/202011/02/103351ris8idq85hxzs58l.jpg
进入_jpeg_install 文件夹查看,有图 97.1.6 所示文件即为成功:
http://www.eechina.com/data/attachment/forum/202011/02/103508u2v6f95l9lc9o2el.jpg
将_jpeg_install 的/lib/下的库文件拷贝到开发板的/lib/目录下:
http://www.eechina.com/data/attachment/forum/202011/02/103529j6smsm5wccjsbs9s.jpg
http://www.eechina.com/data/attachment/forum/202011/02/103537t22d0z2rg6nbzffk.jpg
97.2移植 mjpg-streamer服务器
mjpg-streamer 是一个命令行应用程序,可通过网络将 JPEG 文件从网络摄像头流传输到各种类型的查看器,例如浏览器,mplayer 等其他能够接收 MJPG 流的软件。
http://www.eechina.com/data/attachment/forum/202011/02/103559fffqe9z04f3ep9r4.jpg
下载网站:https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/
输入:svn checkout https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code 下载,目录下多出以下文件:
http://www.eechina.com/data/attachment/forum/202011/02/103616ezchacazecvhyyts.jpg
进入 mjpg-streamer/mjpg-streamer-code/mjpg-streamer/文件夹:执行 make clean
输入以下命令修改交叉编译工具:
find -name "Makefile" -exec sed -i "s/CC = gcc/CC = arm-linux-gnueabihf-gcc/g" {} \;
查看是否修改成功,grep "arm-linux-gnueabihf-gcc" * -nR:
http://www.eechina.com/data/attachment/forum/202011/02/103629fsn1vz8z9zccoskd.jpg
继续修改编译选项,搜索“CFLAGS”: http://www.eechina.com/data/attachment/forum/202011/02/103721h7qbxrz7uxu5bt57.jpg
根据搜索出来的信息,进入 plugins 文件夹,修改 plugins/input_uvc/Makefile,第 15 行添加
CFLAGS += -I /home/ubuntu/work/mjpg/_jpeg_install/include/
第 25 行改为:
LFLAGS += -L /home/ubuntu/work/mjpg/_jpeg_install/lib/ -ljpeg
完成后如图 97.2.5:
http://www.eechina.com/data/attachment/forum/202011/02/103736wurdaaskkiwffnud.jpg
回到 mjpg-streamer 目录下,执行 make 编译,成功后如图 97.2.6:
http://www.eechina.com/data/attachment/forum/202011/02/103750uy9hbke6m70m0u6r.jpg
在目录下会生成.so 库文件和 mjpg_streamer,
http://www.eechina.com/data/attachment/forum/202011/02/103800v76njccnz7eaqkfq.jpg
将.so 文件拷贝到开发板的/lib/目录下,mjpg_streamer 文件夹拷贝到开发板的/bin/目录下,www 拷贝到/opt/目录下:
cp *.so start.sh mjpg_streamer ~/nfs_dir/
cp www /opt/ -rf
cp mjpg_streamer /bin/

http://www.eechina.com/data/attachment/forum/202011/02/103814ptn3jk3vdtjnmldy.jpg
97.3测试
测试过程中要保证网络畅通,根据 start.sh 文件,输入以下命令测试:
mjpg_streamer -i "input_uvc.so -d /dev/video2 -r 320x240 -f 30 -yuv" -o "output_http.so -w /opt/www"报错可以忽略,

http://www.eechina.com/data/attachment/forum/202011/02/103829z3o57a973h3ad9sj.jpg
下方会显示端口号:
http://www.eechina.com/data/attachment/forum/202011/02/103845ykvfankyqvauff2y.jpg
然后在 Ubuntu 的火狐浏览器输入服务器 ip 和端口号,ip 为开发板 ip,端口号默认为 8080,
http://192.168.1.120:8080/

http://www.eechina.com/data/attachment/forum/202011/02/103915uzifbvgu4gucxxv8.jpg
能看到图像说明移植成功。
http://www.eechina.com/data/attachment/forum/202011/02/104033yx0m30590r9z4a0x.jpg


123654789 发表于 2020-11-3 15:00

做一个记号
页: [1]
查看完整版本: 迅为-iMX6ULL开发板-移植mjpg-streamer实现远程监控