Linux虚拟摄像头vivid配置

总述

最近在看摄像头驱动,需要配置虚拟摄像头的驱动,但是教程里面是linux2.6内核的,实际电脑的是Ubuntu16,内核是linux4.15版本,从2.6到4.15内核好多文件发生了变化,所以我们该怎么操作呢?下面就让我给大家介绍一哈,怎么下载最新的内核并进行编译成虚拟摄像头驱动。

作者:良知犹存

转载授权以及围观:欢迎添加微信公众号:Conscience_Remains

1

查看并下载源码

使用命令查看当前系统的内核

uname -aLinux lyn 4.15.0-117-generic #118~16.04.1-Ubuntu SMP Tue Sep 8 14:54:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux


可以看到内核版本是4.15,然后我们就可以去下载源码去了

去www.kernel.org找同版本的内核,如果没有请找最相近的内核代码

因为我的版本已经是4.15属于v4.x,所以选择了v4.x进入

最后用网页搜索选择了4.15的一个版本进行了下载

tar xzf linux-4.15.1.tar.gz 解压文件

新版本的linux下已经更名为vivid,可以用find寻找一下目录


之后就把

linux-4.15.1/drivers/media/platform/vivid/

目录下所有文件拷贝的一个文件夹下

2

进行VIVID驱动编译

首先我们看一下,在vivid文件目录下本来的Makefile文件,这个Makefile编译之后选项配置由CONFIG_VIDEO_VIVID这个变量控制,显然不符合我们的要求

    首先编译我们需要选择编译的内核目录,首先我在linux的usr(usr被称为是Unix System Resource,即Unix系统资源的缩写。/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。)目录下寻找。

cd /usr/src/linux......

这样就可以看到对应的内核目录了

经过添加内核目录,然后添加上需要编译的文件,一个简单的驱动Makefile就做好了,当然这个也不是最完美的,请听我一一道来。

KERN_DIR = /usr/src/linux-headers-4.15.0-118-genericall:make -C $(KERN_DIR) M=`pwd` modules
clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o \vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o \vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o \vivid-osd.o vivid-cec.o

开始进行编译,出现一个error

/work/driver_and_test/vivid/vivid-ctrls.c:In function ‘vivid_vid_cap_s_ctrl’:
/work/driver_and_test/vivid/vivid-ctrls.c:346:3:error: ‘V4L2_COLORSPACE_ADOBERGB’ undeclared (first use in this function)V4L2_COLORSPACE_ADOBERGB,^
/work/driver_and_test/vivid/vivid-ctrls.c:346:3:note: each undeclared identifier is reported only once for each function itappears in
scripts/Makefile.build:337: recipe fortarget '/work/driver_and_test/vivid/vivid-ctrls.o' failed
make[2]: ***[/work/driver_and_test/vivid/vivid-ctrls.o] Error 1

出现了未定义V4L2_COLORSPACE_ADOBERGB变量的error

但是在正则表达式去搜索文件定义的时候发现vivid目录下所有文件都没有定义过,所以我直接选择进行出问题的地方进行注释

vi vivid-ctrls.c +346 //注释掉相关定义


继续编译出现另一处类似的错误,继续注释掉

不过这次用这个Makefile编译完之后,我们编译出了好多个.ko文件,在实际加载驱动时候很不方便

所以我们需要重新修改Makefile文件,把vivid目录下的文件都编译成一个.o文件,按然后再编译为一个.ko文件

MakeFile内容如下所示:

编译结果如下,只有一个vivid,ko文件

3

测试体验效果

首先我们先安装xawtv

xawtv是用于使用电视调谐器或卫星接收卡(DVB-S)观看和录制电视和网络摄像头的软件。xawtv可在类似Unix的操作系统上运行,并已获得GPL许可。

维基百科

sudo apt-get install xawtv

sudo modprobe vivid     //安装自带vivid及依赖,这里先使用modprobr加载vivid,会将其依赖一并加载,然后再卸载vivid,最后加载上我们编译的vivid.ko
sudo rmmod  vivid        //卸载自带的vivid
sudo insmod./vivid.ko  //安装自己编译的vivid.ko

 

xawtv -h           //帮助信息
xawtv -c/dev/videoX   //指定设备
xawtv -noalsa        //关闭声卡启动
xawtv          //运行摄像头

如图所示,虚拟摄像头就开始运行起来了。

这就是我分享的linux4.15内核下的虚拟摄像头配置,如果大家有什么更好的思路,欢迎分享交流哈。


插播一条信息:

之前推荐的一本书籍,大家反响很好,今天书籍的其中一位作者「博士」会开一个直播,有喜欢的同学可以看看。

现代操作系统:原理与实现

作者:陈海波 夏虞斌

推荐语:

操作系统和系统安全领域国际知名学者、上海交通大学陈海波、夏虞斌领衔撰写;

由浅入深介绍现代操作系统经典理论与方法,结合前沿研究与工业界实践,面向真实场景与真实问题;

全新打造ChCore微内核系列课程实验,建立对操作系统的第一手实践经验。

书籍详细内容可以点击阅读原文:

大家转发这篇文章并留言,我选出5名同学赠送这本书籍,截止周六晚上20:00

选中的留言我会置顶并回复一颗♥,发现自己的留言被置顶了的同学记得私信给我收货地址。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一次工作报告

要求 1. 对源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等)统计字符数、单词数、行数、词频,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。 2. 使用性能…

树莓派Pico的一些有趣的基本实验

▲ 实验电路板Raspberry PI Pico小型MCU模块,以其价格低廉,功能丰富,开发方便为很多非电子类专业的同学进行创意项目原型设计提供了方便的平台。下面的一些实验给CDIE课程设计同学们制作的一些基本演示实验。▌01 PI Pico实验板在 RASPBERRY …

Gabor变换

gabor变换分析非平稳信号有弊端主要是时频窗宽度固定 小波wavelet a小窗窄a大窗宽 窗口或短时傅氏变换在时域上和频域上的局部化程度主要由窗函数g(x)的有效时宽Δt 和有效带宽Δf 决定。Δt 和Δf 越小, 表明局部性越好。但Heisenberg 测不准原理指出[ 6] :Δt 和Δf 不可能任…

30块钱的树莓派跑unix系统,源码全部开源,香

▌ 1、前言之前做活动抽奖送的几个树莓派,但是因为好几个人都没有填写地址,所以就只能把东西寄回来给我,然后手痒自己玩了下,觉得这个东西确实很香,比一般的Linux开发板都好。PICO这个开发板可以玩很多东西1 、运行pic…

为什么大家都只谈薪资,却不谈梦想?

说个薪资的问题,最近在帮一个朋友物色工作,当然,除了我那个朋友以外,也有挺多同学向我咨询offer薪资的问题。先说我那个朋友。高中毕业后去当兵,服兵役结束后去4s店修车,我车子的很多问题也会向他咨询&…

差生的 8 年程序员总结

今年终于从大菊花厂离职了,离职前收入大概60w不到吧,在某乎属于比较差的,今天终于有空写一下自己的职场故事,也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了,也有更多事情做错了,在这里记…

Python简单的抓取静态网页内容

import requests from bs4 import BeautifulSoup res requests.get(http://news.sina.com.cn/china/)#获取目标网页 res.encoding utf-8#抓取网页出现乱码 #print(res.text) soup BeautifulSoup(res.text,html.parser)#爬取网页 for news in soup.select(.news-item): if le…

直观感受电路信号波形:半波整流电路

前言电子电路的理论很抽象,所以多看电子电路的信号波形,对掌握理论知识非常有帮助。让我们通过形象的电路信号波形,直观地了解电路的世界!半波整流电路半波整流电路,电路图很简单,通过一个二极管实现半波整…

【nodejs】安装browser-sync 遇到错误提示

首先我用的是mac电脑在我执行安装browser-sync时遇到如下问题: 因为不被允许所以我只能不安装全局了: 但是又出现了如下的新问题 纠结了半个小时,终于知道为什么会出现这个问题了, node只有--global or -g才是全局安装的包&#x…

本机获取Intel AMT IP地址的例子

转自:http://software.intel.com/zh-cn/blogs/2009/02/10/intel-amt-ip/?cidsw:51cto Intel AMT的IP地址设置有两种模式:静态IP和动态IP。 在动态IP,也就是DHCP自动分配的情况下,本机的操作系统起来后,Intel AMT的I…

如何解密单片机内程序?

▌单片机解密是什么?单片机解密又叫单片机破解,芯片解密,IC解密,但是这严格说来这几种称呼都不科学,但已经成 了习惯叫法,我们把CPLD解密,DSP解密都习惯称为单片机解密。单片机只是能装载程序芯…

拆解玩具电池充电器:充久了可能会爆,廉价电路方案让人震惊!

▲ 本文要分析的电路家里有不少给小孩子买的电动玩具,感叹现在的电动玩具虽然才几十块钱,但是不仅包邮,还附送充电器和可充电电池,真的很便宜,大家都买得起。下图这款充电器忘了是哪个玩具附送的,看起来像模…

炒股从负债百万,到“睡后收入”上百万,我做了这件事!

问你一个很残酷的问题:你炒股到现在,赚钱了吗?因为股市里永远存在着“7亏2平1赢”的规律。如果你想要在市场里保持持续的盈利状态,你就得成为其中的“1”,而不是7和2!也就是说,想要在市场里立足…

I/O流总结

一,I/O流概述I/O流简单的理解就是数据的输入与输出;那数据的的输入与输出又怎么理解呢?首先我们知道,所有的数据在计算机中都是以二进制的形式存储的.我们看到的字节或者字符形式的文件都是计算机经过解析之后形成的.那么数据的输入与输出简单地说,就是我们向计算机(通信设备)…

单片机显示原理

▌一.接口LCD1602是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是HD44780或者其它兼容芯片。与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除了普通字符外&…

Overview of ISA and TMG Networking and ISA Networking Case Study (Part 2)

老方说:此篇文章摘自ISASERVER.ORG网站,出自Thomas Shinder达人之手。严重建议ISA爱好者看看。Published: Dec 16, 2008 Updated: Jan 21, 2009 Author: Thomas Shinder In our last article . ISA and TMG firewall networking, I talked about how I…

WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

版本:win10系统  virtualbox:5.1.26  vagrant :1.9.7  centos 7.0  xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox 一.把虚拟机加载到box容器中 vagrant box add CentOs7.0 D:\soft\Vagrantfile\package.boxCentOs7.0 是给虚拟机起的名字 D:\soft\Vagr…

Linux 驱动开发 | 驱动世界里的宏伟建筑

哈喽,我是老吴。是否每一个上进的人都会觉得自己还可以再努力一点?事情到了最后,只要没达成目的,总能把失败的原因归为 "没有再努力一点"。但是,对努力的最大错误认知就是:时间越长,过…

【乡音】海安话四级考试

海安话四级考试海安话国家四级考试试卷-------------启用前★绝密------------(中国标准话语言研究中心命题) 准考证号___________ 姓名_____________ 座位号___________ 一、选择题(共五题&#xf…