imx6ull 开发板移植mjpg-streamer
imx6ull 移植mjpg-streamer
参考链接:https://blog.csdn.net/mucheni/article/details/109447610
前期准备:
PC端:Ubuntu18.04, 野火imx6ull pro开发板,免驱USB摄像头,需要用到交叉编译器
大致流程:
1.将jpeg库在PC端使用交叉编译,编译生成的文件,为后面编译Mjpg-Streamer做准备。
2.在PC端交叉编译Mjpg-Streamer,将生成的文件拷贝到开发板。
1 jpeg库的移植
MJPG 库下载地址:
http://www.ijg.org/files/,这里我使用的是jpegsrc.v8b.tar.gz
在当前用户的家目录下创建一个mjpg文件夹:
mkdir mjpg
进入刚创建的mjpg目录,将下载好的jpegsrc.v8b.tar.gz压缩包放到mjpg目录,使用下面命令解压
tar -zxvf jpegsrc.v8b.tar.gz
接着在mjpg目录下创建mjpg_install目录,后面编译生成的文件放在次目录。
1.1 配置编译选项
进入 jpeg-8b 文件夹,执行以下命令配置编译选项:
./configure --prefix=/home/cwz/mjpg/mjpg_install --host=arm-linux-gnueabihf
参数说明:
–-prefix=/home/cwz/mjpg/mjpg_install:指定安装的路径要使用绝对路径,这里根据自己的路径自行调整。
–-host=arm-linux-gnueabihf:将来软件要运行所在主机的架构。
1.2 使用make命令编译
make install
然后进入mjpeg_install(安装目录) 文件夹下查看,以下lib和include目录的路径会在后面用到。
1.3 移植编译好的文件到开发板
将mjpeg_install 目录下的lib目录下的库文件拷贝到开发板的/lib/目录下:
我这里PC端和开发板用NFS将PC端上的 /home/workdir/ 挂载到开发板 /mnt/ 目录。所以使用下面将库文件拷贝到开发板。
PC端:
sudo cp *jpeg* /home/workdir/
开发板:
这里先查看下有没有将库文件全部拷贝到开发板的/mnt/目录下
sudo cp /mnt/*jpeg* /lib/
2 mjpg-streamer 的移植
mjpg-streamer 是一个命令行应用程序,可通过网络将 JPEG 文件从网络摄像头流传输到各种类型的查看器,例如浏览器,mplayer 等其他能够接收 MJPG 流的软件。
下载链接接:https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/
下载命令:
svn checkout https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
如果执行以上命令提示如下,
则说明需要先安装软件,输入以下命令安装
sudo apt install subversion
安装完成后,再执行上面的下载命令,等待下载命令执行结束,可以看到mjpg-streamer-code文件夹
进入mjpg-streamer-code/mjpg-streamer/ ,执行 以下命令
make clean
2.1 Makefile中添加编译信息
进入到mjpg-streamer-code/mjpg-streamer/plugins/input_uvc目录,修改Makefile。
vim Makefile
添加以下内容,是上面移植mjpg库时安装目录下生成的include目录和lib目录,根据之前设置的路径自行调整。
2.2 使用make编译mjpg-streamer
返回到mjpg-streamer目录下,执行make命令前,要设置交叉编译器,可以使用下面任一种种方法设置:
方法1:执行以下命令进行编译
make CC=arm-linux-gnueabihf-gcc
出现错误,如下,这里我只记得提示的是未找到convert命令,下图不是当时出错具体信息,大概是这个意思。
解决:
这里是因为Makefile里面使用的convert命令识别不了,安装以下软件,就可以了。
sudo apt install graphicsmagick-imagemagick-compat
sudo apt install imagemagick-6.q16
sudo apt install imagemagick-6.q16hdri
安装好上面的软件,编译前先执行下面命令清除掉之前编译的,
make clean
再使用以下命令重新编译。
make CC=arm-linux-gnueabihf-gcc
方法2 :配置交叉编译工具:
从上图可以看到Makefile文件里的CC = gcc,这里要更改下。输入以下命令:
find -name "Makefile" -exec sed -i "s/CC = gcc/CC = arm-linux-gnueabihf-gcc/g" {} \;
这行命令是搜索当前目录及其子目录下的所有Makefile文件,并将Makefile里的CC变量设置为arm-linux-gnueabihf-gcc,因为Makefile默认是编译的软件运行在x86平台的。这里要移植到开发板,所以要更改使用交叉编译。
查看是否修改成功
grep "arm-linux-gnueabihf-gcc" * -nR
回到 mjpg-streamer 目录下,执行 make 编译,
make
编译成功后在目录下会生成:
.so 库文件:移植到/lib,提供动态库
mjpg_streamer:移植到/bin,提供可执行命令
www:移植到/opt,摄像头输出的网页
2.3 移植编译好的文件到开发板
PC端:
sudo cp *.so start.sh mjpg_streamer /home/workdir/
sudo cp www /home/workdir/ -rdf
开发板端:
通过NFS,可以看到文件已经从PC端拷贝到开发板/mnt/目录下了。
接下来分别将文件拷贝到开发板的其他目录下。
sudo cp /mnt/*.so /lib/
sudo cp /mnt/mjpg_streamer /bin/
sudo cp /mnt/www /opt/ -rdf
执行完上面的步骤,就完成全部移植了。
2.4 测试是否移植成功
在开发板上运行以下命令测试
mjpg_streamer --help
巴拉巴拉输出一堆内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73qfG6Dq-1671632838994)(https://raw.githubusercontent.com/colorful-p/Image_Data_Structures/main/image-20221221120516306.png)]
说明成功移植到开发板上。
2.5 mjpg_streamer的运行
这个命令我不知道干嘛的,执行之后报了一堆错。不管了。
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so"
input_uvc.so -d:打开设备节点 /dev/video1
output_http.so:输出信息通过http发送出去
输入以下命令运行mjpg_streamer
mjpg_streamer -i "input_uvc.so -d /dev/video0 -f 30 -q 90 -n" -o "output_http.so -w /opt/www"
执行命令,出现以下错误,我这里是因为开发板(imx6ull pro)未安装v4l-utils工具
2.5.1 v4l-utils工具安装
sudo apt install v4l-utils
再次进输入上面mjpg_streamer的命令,成功运行如下:
注意:当Ctrl + z,中断进程的时候,再次运行mjpg_streamer,会出现错误,需要先kill这个进程,方可重新运行。
2.5.2 PC端查看运行结果
开发板运行mjpg_streamer成功后,在PC端打开浏览器:输入开发板的IP地址和8080端口号,点击Stream选项会出现图像。
imx6ull 开发板移植mjpg-streamer相关推荐
- Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...
- 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)
基于正点原子的IMX6ULL开发板的智能车载系统(Qt) 提示:该项目借鉴了不少大佬的代码,我没有自己造轮子(代码在文章末尾,同时附上参考链接 ) 本人其他项目链接基于linux的智能仓储项目 基于Q ...
- 迅为IMX6ULL开发板Linux学习教程
1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 , 回复 :终结者,免费获取产品资料 让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...
- [教程]北京迅为iMX6ULL开发板上配置 AP 热点
本文转自迅为iMX6ULL开发板使用手册第九十九章,使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\99_章节使用资料. 关注公众号"迅为电子" , ...
- 北京迅为IMX6ULL开发板 DHT11网络编程实战练习
转自:[北京迅为i.mx6ull终结者开发板使用手册]第六十三章 QT 实战项目 硬件平台:IMX6ULL开发板 63.1 DHT11&网络编程实战练习 本项目为阶段性练习,内容简洁实用, ...
- 讯为开发板移植linux,迅为I.MX6ULL开发板移植Linux5.4内核教程
4412上移植最新5.4内核的流程非常的简单,因为4412被Linux官方支持,那么我们来看一下怎么把官方5.4内核移植到我们的I.MX6ULL终结者开发板上. 平台:i.MX6ULL开发板 前言 本 ...
- 【iMX6ULL】触觉 imx6ull开发板交叉编译环境搭建
开发IMX6ULL需要有一个安装了交叉编译器的linux操作系统的开发环境,用于编译开发板的uboot.kernel.文件系统和应用软件.下面以触觉智能imx6ull开发板为例. 1.开发环境说明 ...
- 正点原子IMX6ULL开发板禁用出厂QT界面
正点原子IMX6ULL开发板出厂时自动开启QT的GUI界面,在测试时如果需要关闭GUI界面可以采用如下操作. 1.vi /etc/rc.local 2.将以下三行加#屏蔽,需要开启时,去除#即可 #/ ...
- 解决Windows无法NFS启动imx6ull开发板的问题
解决Windows无法NFS启动imx6ull开发板的问题 问题:有时候我们需要将Linux虚拟机里的文件复制到Windows里,并在Windows上通过haneWIN NFS server启动imx ...
最新文章
- UML第一次作业:UML用例图绘制
- 5.0、Android Studio调试你的应用
- kafka 集群启动失败:FATAL [KafkaServer id=0] Fatal error during KafkaServer startup.
- 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
- python爬虫lxml xpath测试
- Java编码与乱码问题
- Puppeteer -headless Chrome 的 Node.js API
- Linux基础之bash shell介绍及基本特性
- MATLAB2016b安装包
- my ReadBook_4juan / zikao / zixuekaoshi
- 软件测试工程师面试如何做好自我介绍?月薪30k大鸟教你回答
- 思路分享——hdu 3233
- 计算机公式加法A C,概率公式c怎么计算
- vue练手小项目--眼镜在线试戴
- 【BZOJ】1535: [POI2005]Sza-Template
- QPSK调制解调仿真matlab
- alpine linux 简介
- 继承Handler还是实现Handler.Callback?
- Dream-hacking 造梦工程与脑波艺术
- 裁员不可怕,可怕的是行业在发生巨变,而你却原地踏步
热门文章
- 20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告
- P2787 语文1(chin1)- 理理思维(线段树)
- Plupload控件在IE9下不能上传、文件尺寸为空、出现下载对话框问题解决
- 你是那种只看《XXXXX从入门到精通》的程序员吗?
- 硅烷偶联纳米SiO2改性形状记忆聚氨酯/抗体偶联的介孔二氧化硅/米非司酮纳米制剂/纳米二氧化硅接枝黄麻纤维可降解复合物
- 计算机毕业设计Java居家养老系统(源码+系统+mysql数据库+lw文档)
- Kibana Unable to connect to Elasticsearch at http.....30000
- cmd执行程序突然卡住解决办法
- 工作指派问题(运筹学)
- 金融客户标签画像与客群查询使用HIVE+Hbase+Es实践(一)