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相关推荐

  1. Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)

    Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...

  2. 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)

    基于正点原子的IMX6ULL开发板的智能车载系统(Qt) 提示:该项目借鉴了不少大佬的代码,我没有自己造轮子(代码在文章末尾,同时附上参考链接 ) 本人其他项目链接基于linux的智能仓储项目 基于Q ...

  3. 迅为IMX6ULL开发板Linux学习教程

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料  让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...

  4. [教程]北京迅为iMX6ULL开发板上配置 AP 热点

    本文转自迅为iMX6ULL开发板使用手册第九十九章,使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\99_章节使用资料. 关注公众号"迅为电子" , ...

  5. 北京迅为IMX6ULL开发板 DHT11网络编程实战练习

    转自:[北京迅为i.mx6ull终结者开发板使用手册]第六十三章 QT 实战项目 硬件平台:IMX6ULL开发板   63.1 DHT11&网络编程实战练习 本项目为阶段性练习,内容简洁实用, ...

  6. 讯为开发板移植linux,迅为I.MX6ULL开发板移植Linux5.4内核教程

    4412上移植最新5.4内核的流程非常的简单,因为4412被Linux官方支持,那么我们来看一下怎么把官方5.4内核移植到我们的I.MX6ULL终结者开发板上. 平台:i.MX6ULL开发板 前言 本 ...

  7. 【iMX6ULL】触觉 imx6ull开发板交叉编译环境搭建

      开发IMX6ULL需要有一个安装了交叉编译器的linux操作系统的开发环境,用于编译开发板的uboot.kernel.文件系统和应用软件.下面以触觉智能imx6ull开发板为例. 1.开发环境说明 ...

  8. 正点原子IMX6ULL开发板禁用出厂QT界面

    正点原子IMX6ULL开发板出厂时自动开启QT的GUI界面,在测试时如果需要关闭GUI界面可以采用如下操作. 1.vi /etc/rc.local 2.将以下三行加#屏蔽,需要开启时,去除#即可 #/ ...

  9. 解决Windows无法NFS启动imx6ull开发板的问题

    解决Windows无法NFS启动imx6ull开发板的问题 问题:有时候我们需要将Linux虚拟机里的文件复制到Windows里,并在Windows上通过haneWIN NFS server启动imx ...

最新文章

  1. UML第一次作业:UML用例图绘制
  2. 5.0、Android Studio调试你的应用
  3. kafka 集群启动失败:FATAL [KafkaServer id=0] Fatal error during KafkaServer startup.
  4. 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
  5. python爬虫lxml xpath测试
  6. Java编码与乱码问题
  7. Puppeteer -headless Chrome 的 Node.js API
  8. Linux基础之bash shell介绍及基本特性
  9. MATLAB2016b安装包
  10. my ReadBook_4juan / zikao / zixuekaoshi
  11. 软件测试工程师面试如何做好自我介绍?月薪30k大鸟教你回答
  12. 思路分享——hdu 3233
  13. 计算机公式加法A C,概率公式c怎么计算
  14. vue练手小项目--眼镜在线试戴
  15. 【BZOJ】1535: [POI2005]Sza-Template
  16. QPSK调制解调仿真matlab
  17. alpine linux 简介
  18. 继承Handler还是实现Handler.Callback?
  19. Dream-hacking 造梦工程与脑波艺术
  20. 裁员不可怕,可怕的是行业在发生巨变,而你却原地踏步

热门文章

  1. 20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告
  2. P2787 语文1(chin1)- 理理思维(线段树)
  3. Plupload控件在IE9下不能上传、文件尺寸为空、出现下载对话框问题解决
  4. 你是那种只看《XXXXX从入门到精通》的程序员吗?
  5. 硅烷偶联纳米SiO2改性形状记忆聚氨酯/抗体偶联的介孔二氧化硅/米非司酮纳米制剂/纳米二氧化硅接枝黄麻纤维可降解复合物
  6. 计算机毕业设计Java居家养老系统(源码+系统+mysql数据库+lw文档)
  7. Kibana Unable to connect to Elasticsearch at http.....30000
  8. cmd执行程序突然卡住解决办法
  9. 工作指派问题(运筹学)
  10. 金融客户标签画像与客群查询使用HIVE+Hbase+Es实践(一)