(四) 虚拟摄像头vivi体验
虚拟摄像头vivi体验
vivid是虚拟的摄像头驱动.可以理解等同于UVC,只是说不需要USB总线驱动控制等
源码下载
# 查看内核版本
$ uname -a
Linux 100ask 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
下载代码后解压
tar xzf linux-4.13.1.tar.gz
#新版本的linux下已经更名为vivid
linux-4.13.1/drivers/media/platform/vivid/
修改Makefile
修改Makefile
,也就是加入vivid-cec.o
,因为如果不加入的话,会提示缺少符号
KERN_DIR = /usr/src/linux-headers-4.13.0-36-generic
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
all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
或者使用dmesg
也可以看到无法加载
# make的警告
WARNING: "vivid_cec_bus_free_work" [/home/book/stu/ubuntu_src/linux-4.13.1/drivers/media/platform/vivid/vivid.ko] undefined!
WARNING: "vivid_cec_alloc_adap" [/home/book/stu/ubuntu_src/linux-4.13.1/drivers/media/platform/vivid/vivid.ko] undefined!
搜索下这个,可以找到,所以修改Makefile加入vivid-cec.o
$ grep vivid_cec_bus_free_work * -nR
vivid-cec.c:25:void vivid_cec_bus_free_work(struct vivid_dev *dev)
安装xawtv
#这里最新的ubuntu直接安装即可
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 //运行摄像头