总述

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

作者:良知犹存

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

查看并下载源码

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

uname -a

Linux 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/

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

进行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-generic

all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order obj-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文件

测试体验效果

首先我们先安装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内核下的虚拟摄像头配置,如果大家有什么更好的思路,欢迎分享交流哈。

更多分享,扫码关注我

linux虚拟摄像头vivid配置的更多相关文章

  1. linux(十二)___Apache服务器用户认证、虚拟主机的配置

    创建xiangkejin  zhangsan两个用户 可看见文件中创建的两个用户: 建立虚拟目录并配置用户认证 ①建立虚拟目录 /xiangkejin ②在Apache的主配置文件httpd.conf ...

  2. Linux网络配置之虚拟网卡的配置(ubuntu 16.04)

    关于图形界面的配置,我这里就不多介绍了,这个很简单.这里介绍的是如何通过修改配置文件来实现虚拟网卡. 首先介绍ubuntu(我这里使用的是ubuntu-16.04)下虚拟网卡的配置 1.先用ifcon ...

  3. (四) 虚拟摄像头vivi体验

    目录 虚拟摄像头vivi体验 源码下载 修改Makefile 安装xawtv 测试体验 title: 虚拟摄像头vivi体验 date: 2019/4/23 19:20:00 toc: true -- ...

  4. 虚拟摄像头vivi的测试(二)

    (前一部分的基础操作来源于作者:LingXiaokai 的 Ubuntu 9.10 下如何使用笔记本摄像头以及虚拟摄像头vivi的测试) 自己仅对实际操作中需要注意的点进行阐述 一.先在Ubuntu ...

  5. LINUX+Vmware+SVN的配置和安装

    LINUX+Vmware+SVN的配置和安装 验证SVN安装了没有 svnserve --version 查看CentOS自带JDK是否已安装. ◆输入:yum list installed |gre ...

  6. Linux通过NAT方式配置网络

    步骤:1.将虚拟机的网卡VMware Network Adapter VMnet8改成DHCP自动获取IP.2.将Linux虚拟机的网卡自定义连接到VMware Network Adapter VMn ...

  7. Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

    负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...

  8. Linux USB摄像头驱动【转】

    本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 ...

  9. macOS平台下虚拟摄像头的研发总结

    一.背景介绍 虚拟摄像头,顾名思义,就是利用软件技术虚拟出一个摄像头硬件设备供用户使用.当我们需要对视频图像进行处理再输出时,虚拟摄像头就具备非常大的价值了.关于如何在Windwos上实现一个虚拟设备 ...

随机推荐

  1. JButton的常用方法

    JButton 实现了普通的三态外加选中.禁用状态,有很多方法可以设置,不要自己去写鼠标监听器.setBorderPainted(boolean b)    //是否画边框,如果用自定义图片做按钮背景 ...

  2. 【分享】wdcp服务器管理系统常用维护工具

    wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,类似国外流行的cpanel,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟 ...

  3. VRP CommandLines

    <> 用户视图 通过 system-view 进入系统视图 [] 系统视图 通过interface 0/0/0 进入接口视图 CTRL+Z 返回用户视图 CTRL+A 把光标移动到当前命令 ...

  4. Solon rpc 之 SocketD 协议 - 消息鉴权模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  5. LeetCode解题Golang(1-10)

    前言 LeetCode题目个人答案(Golang版) 本篇预期记录 1-10 题, 持续更新 正文 1.两数之和(简单) https://leetcode-cn.com/problems/two-su ...

  6. SqlLoad的简单使用

    sqlload的简单使用: 能实现: 快速导入大量数据 1.先安装oracle 客户端机器.有点大,600M+, 2.安装时选择管理员安装(1.1g) 3.第三步的时候我的出错了.说是环境变量校验不通 ...

  7. mysql的安全问题

    mysql 用户目录下,除了数据文件目录,其他文件和目录属主都改为root 删除空账号 drop user ''@'localhost'; 给root 设置口令 在[client]中写入user='' ...

  8. Pytorch 中张量的理解

    张量是一棵树 长久以来,张量和其中维度的概念把我搞的晕头转向. 一维的张量是数组,二维的张量是矩阵,这也很有道理. 但是给一个二维张量,让我算出它每一行的和,应该用 sum(dim=0) 还是 sum ...

  9. [Usaco2005 Dec]Scales 天平

    题目描述 约翰有一架用来称牛的体重的天平.与之配套的是N(1≤N≤1000)个已知质量的砝码(所有砝码质量的数值都在31位二进制内).每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝 ...

  10. STM32驱动LCD实战

    前段时间写了<STM32驱动LCD原理>和<STM32的FSMC外设简介>两篇文章,本文将对STM32驱动LCD进行实战应用.LCD是深圳市拓普微科技开发有限公司的LMT028 ...