v4l2摄像头移植mjpg_streamer笔记

2023-10-30 06:32

本文主要是介绍v4l2摄像头移植mjpg_streamer笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

							v4l2摄像头移植mjpg_streamer笔记							mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库 
(1)jpeg库的移植1)jpeg源码包通过下面这个网址下载http://www.ijg.org/files/jpegsrc.v8b.tar.gz2)解压源码包tar xvf jpegsrc.v8b.tar.gz3)配置源码cd jpeg-8b./configure --prefix=/home/6410/video/jpeg --host=arm-linux4)编译make5)安装make install6)拷贝libjpeg.s0.8库到开发板文件系统lib下中
mjpg-stream的移植1)mjpg-stream源码包通过下面这个网址下载http://sourceforge.net/projects/mjpg-streamer/ 2)解压源码tar xvf mjpg-streamer-r63.tar.gz3)修改源码cd mjpg-streamer-r63修改顶层makefile及plugins目录中的各级makefile将所有CC=gcc修改为CC=arm-none-linux-gnueabi-gcc修改plugins/input_uvc/Makfile修改CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC为CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/6410/video/jpeg/include修改$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo为$(CC) $(CFLAGS) -ljpeg -L/home/6410/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo4)编译make5)测试在开发板上mkdir /mjpeg拷贝*.so到开发板的mjpeg目录下,mjpg_streamer到开发板的bin下并改变权限打开开开发板运行mjpg_streamer -i "/webcam/input_uvc.so -y -d /dev/video0" -o "/webcam/output_http.so"用火狐浏览器打开一个网页输入下面地址就能够看到一个视频(开发板的IP为222.22.253.88):http://222.22.253.88:8080/?action=stream 打开一个网页输入下面地址就能够看到一个静态图片:http://222.22.253.88:8080/?action=snapshot ---------------------------------------------------------------------------                
经常出的问题:
问1:由于摄像头驱动为v4l2架构的,所以安装mjpg_streamer视频服务器,但是运行mjpg_streamer出现如下错误?
# mjpg_streamer 
Jan 14 01:57:37 MJPG-streamer [638]: starting application
MJPG Streamer Version.: 2.0
Jan 14 01:57:37 MJPG-streamer [638]: MJPG Streamer Version.: 2.0ERROR: could not find input plugin
Jan 14 01:57:37 MJPG-streamer [638]: ERROR: could not find input pluginPerhaps you want to adjust the search path with:
Jan 14 01:57:37 MJPG-streamer [638]:        Perhaps you want to adjust the search path with:# export LD_LIBRARY_PATH=/path/to/plugin/folder
Jan 14 01:57:37 MJPG-streamer [638]:        # export LD_LIBRARY_PATH=/path/to/plugin/folderdlopen: File not found
Jan 14 01:57:37 MJPG-streamer [638]:        dlopen: File not found网友说找不到共享库路径,但是已经添加了/mjpeg/,还是出现这个问题,请问怎么回事?
下面是共享库的环境变量
export LD_LIBRARY_PATH='/mjpeg:/lib'# ls /mjpeg/ -l
total 344
-rwxrwxrwx    1 root     root         61423 Jan 13 23:59 input_gspcav1.so
-rwxrwxrwx    1 root     root        168284 Jan 13 23:59 input_testpicture.so
-rwxrwxrwx    1 root     root         27718 Jan 13 23:59 input_uvc.so
-rwxrwxrwx    1 root     root         14736 Jan 14 00:01 mjpg_streamer
-rwxrwxrwx    1 root     root         29420 Jan 13 23:59 output_autofocus.so
-rwxrwxrwx    1 root     root         11958 Jan 13 23:59 output_file.so
-rwxrwxrwx    1 root     root         23726 Jan 13 23:59 output_http.so
-rwxr-xr-x    1 root     root          3436 Jan 14 01:06 start.sh答1: 肯定不是共享库路径的问题了,mjpg_streamer -i "input_testpicture.so",可以正常运行,那就排除库的路径问题了sean@ubuntu:~/work/cx92755/rishun_driver/web_cam/mjpg-streamer-r63$ file input_uvc.so  input_testpicture.so input_gspcav1.so input_uvc.so:         ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not strippedinput_testpicture.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not strippedinput_gspcav1.so:     ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped查看动态库也都是一样的,通过readelf -d input_uvc.so 发现了问题 	
sean@ubuntu:~/work/cx92755/rishun_driver/web_cam/mjpg-streamer-r63$ readelf -d input_uvc.so Dynamic section at offset 0x4898 contains 25 entries:Tag        Type                         Name/Value0x00000001 (NEEDED)                     Shared library: [libjpeg.so.8]		//需要依赖的库,然而这个库文件跟我编译jpeg库文件名称不同,修改库文件名称就搞定。0x00000001 (NEEDED)                     Shared library: [libc.so.0]		//需要依赖的库0x0000000c (INIT)                       0x11440x0000000d (FINI)                       0x3bf80x00000019 (INIT_ARRAY)                 0xc8200x0000001b (INIT_ARRAYSZ)               4 (bytes)0x0000001a (FINI_ARRAY)                 0xc8240x0000001c (FINI_ARRAYSZ)               4 (bytes)0x00000004 (HASH)                       0xb40x00000005 (STRTAB)                     0x8f80x00000006 (SYMTAB)                     0x3380x0000000a (STRSZ)                      1049 (bytes)0x0000000b (SYMENT)                     16 (bytes)0x00000003 (PLTGOT)                     0xc9800x00000002 (PLTRELSZ)                   520 (bytes)0x00000014 (PLTREL)                     REL0x00000017 (JMPREL)                     0xf3c0x00000011 (REL)                        0xdec0x00000012 (RELSZ)                      336 (bytes)0x00000013 (RELENT)                     8 (bytes)0x6ffffffe (VERNEED)                    0xdcc0x6fffffff (VERNEEDNUM)                 10x6ffffff0 (VERSYM)                     0xd120x6ffffffa (RELCOUNT)                   300x00000000 (NULL)                       0x0问2:在服务器上运行 mjpg_streamer -i "/webcam/input_uvc.so -d /dev/video0" -o "/webcam/output_http.so" ,在firefox浏览器上运行出现全黑?
答2:由于mjpg_streamer软件支持两种编码格式jpeg和yuv格式,如果摄像头是yuv格式,添加-y就可以了服务器端	 			mjpg_streamer -i "/webcam/input_uvc.so -y -d /dev/video0" -o "/webcam/output_http.so" 		                客户端	 	 地址栏输入	http://192.168.8.15:8080/?action=stream             服务器端 mjpg_streamer -i "/webcam/input_uvc.so -y -d /dev/video0" -o "/webcam/output_http.so -w `pwd`/www" 	

这篇关于v4l2摄像头移植mjpg_streamer笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306212

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus