ubuntu18.04下的V4L2 vivi实验

最近想要学习V4L2,然后发现韦东山有视频教程,不过是很多年前的了,内核版本很古老,查了一下,vivi.c不见了,变成了vivid目录,我想重现这个ubuntu的 vivi实验,开搞。。

首先uname -a,查看一下虚拟机的ubuntu版本

Linux 100ask 5.4.0-136-generic #153~18.04.1-Ubuntu SMP Wed Nov 30 15:47:57 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

这个ubuntu是百问网提供的,可以看到版本为5.4.0-136-generic

然后去内核官网找到接近的版本,因为速度太慢了,所以我找了阿里云的镜像网linux-kernel_开源镜像站-阿里云

我找到一个比较接近的linux-5.4.1.tar.gz 162.4 MB 2019-11-29 17:17

把内核下载到电脑,解压后,提取出drivers/media/platform/vivid,将其拷贝到ubuntu。

然后修改里面的Makefile,修改如下

KERN_DIR = /usr/src/linux-headers-5.4.0-136-generic

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

obj-m += vivid.o

不能按教程的来,因为教程的内核版本,vivi只有一个文件,没有其他依赖,新版本的分离为很多文件,需要将所有文件编译,然后合成为vivid.ko

因为要用到ubuntu路径下的内核目录,还有用到这个xawtv app,因此需要安装

sudo apt install libelf-dev xawtv

Reading package lists... Done
Building dependency tree
Reading state information... Done
libelf-dev is already the newest version (0.170-0.4ubuntu0.1).
The following packages were automatically installed and are no longer required:
  libllvm9 linux-headers-4.18.0-15 linux-headers-4.18.0-15-generic
  linux-image-4.18.0-15-generic linux-modules-4.18.0-15-generic
  linux-modules-extra-4.18.0-15-generic

这里我踩了一个坑,我发现直接make会报错,查了一下错误,是架构不正确,因为这个ubuntu编译环境本来用于imx6ull,ARCH=arm

改一下架构,执行make ARCH=x86 ,此时发现顺利编译通过,然后按照韦东山的教程安装自己的vivid.ko

sudo modprobe vivid #安装自带vivid及依赖
sudo rmmod vivid #卸载自带的vivid
sudo insmod ./vivid.ko #安装自己编译的vivid.ko

执行

xawtv /dev/video0

最终呈现的效果!!!!完成!!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值