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

相关文章

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

【学习笔记】 陈强-机器学习-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仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓