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


    (前一部分的基础操作来源于作者:LingXiaokai 的 Ubuntu 9.10 下如何使用笔记本摄像头以及虚拟摄像头vivi的测试

       自己仅对实际操作中需要注意的点进行阐述

    一、先在Ubuntu 9.10下面安装一个应用程序的测试程序xawtv,便于分析:

        在网上搜索Ubuntu摄像头测试,搜索Ubuntu摄像头驱动,有cheesexawtv两种摄像头驱动。

        经过测试,cheese由于系统版本太老无法使用,我们使用的是xawtv这个摄像头测试程序。

        在Ubuntu下面安装应用程序非常简单,执行 sudo apt-get install xawtv 即可。

        如果Ubuntu无法上网,需配置,加上路由 sudo route add default gw 192.168.0.1 (路由器)

        执行sudo apt-get install xawtv ,发现需要一些安装包。

        输入Y安装,发现Ubuntu找不到安装包,由于Ubuntu9.10已经很老了,需更新资源列表sources.list。

        文件/etc/apt/sources.list是一个普通可编辑的文本文件,保存了ubuntu软件更新的源服务器的地址。

        解决方法:

        在这个网站创建新的sources.list:  http://repogen.simplylinux.ch/   
        
        选择国家china 选择接近的Ubuntu版本12.04 选择生成哪些库,选择第一个主分支,但是不要下载。
        
        点击最下方Generate List,生成list 
        
        得到一行deb:  deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
        
        修改sudo vi /etc/apt/sources.list 
        
        把里面的内容全部删掉,加上 deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
        
        更新:sudo apt-get update,再安装 sudo apt-get install xawtv


        如果以上方法仍无法安装,可能是由于官网无可用的Ubuntu相近版本的sources.list,可以使用国内的开源代理,如163代理


        使用如下deb:
    deb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse
    eb-src http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse
    deb http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted
    deb-src http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted
    deb http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted
    deb http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted
    deb-src http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted
    deb http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted
    deb-src http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted
    deb-src http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted


        现在安装xawtv完成,接下来测试笔记本电脑的摄像头:


        让虚拟机位于前台,ls /dev/video 发现摄像头设备:dev/video0,即对应笔记本电脑摄像头。
        
        直接执行 xawtv,打开摄像头。点击右键出来菜单,可以调节亮度等信息。


    二、测试虚拟摄像头vivi


    1.查看Ubuntu内核版本 :uname -a
       Linux book-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux


    2.去网站下载这个版本的内核,www.kernel.org  如果没有这个版本,取相邻版本
       
      下载 linux-2.6.31.14.tar.bz2  05-Jul-2010 17:13   59M 


    3.将下载的内核里面的/drivers/media/video目录复制到服务器project_video目录下:
       
      虚拟机Ubuntu内核目录:cd /usr/src     linux-headers-2.6.31-14-generic
      
      执行pwd    显示路径: /usr/src/linux-headers-2.6.31-14-generic,这就是Makefile里的内核目录


    4.到project_video目录下的video里新建一个Makefile


    KERN_DIR = /usr/src/linux-headers-2.6.31-14-generic


    all:
            make -C $(KERN_DIR) M=`pwd` modules 


    clean:
            make -C $(KERN_DIR) M=`pwd` modules clean
            rm -rf modules.order


    obj-m   += vivi.o
      
      直接make,得到vivi.ko


    5.sudo insmod vivi.ko
    发现 insmod: error inserting 'vivi.ko': -1 Unknown symbol in module 有些函数找不到


      dmesg 命令 :
    [12120.272121] vivi: Unknown symbol videobuf_streamoff
    [12120.272794] vivi: Unknown symbol videobuf_poll_stream
    [12120.276482] vivi: Unknown symbol videobuf_reqbufs
    [12120.276823] vivi: Unknown symbol videobuf_queue_is_busy
    [12120.277830] vivi: Unknown symbol videobuf_dqbuf
    [12120.278501] vivi: Unknown symbol videobuf_to_vmalloc
    [12120.278735] vivi: Unknown symbol videobuf_vmalloc_free
    [12120.279255] vivi: Unknown symbol v4l_bound_align_image
    [12120.279709] vivi: Unknown symbol videobuf_stop


      在虚拟机内核代码里查找videobuf_streamoff在哪里定义:videobuf-core.c里定义,所以也应该在Makefile里把它编译进去。
      在Makefile里要编译的文件如下:


    obj-m   += vivi.o
    obj-m   += videobuf-core.o
    obj-m   += videobuf-vmalloc.o
    obj-m   += v4l2-common.o


      再sudo insmod  vivi.ko ,没有问题了。


    6.ls /dev/video*  : 出现两个设备节点 /dev/video0  /dev/video1 ,其中video0为笔记本摄像头,video1为vivi.ko虚拟出来的摄像头设备。


    7.测试vivi.ko :
      应用程序xawtv默认打开的是/dev/video0,执行 xawtv --help 查看帮助信息
      执行 xawtv -c /dev/video1 即可打开vivi,我们可以看到是一个虚拟的视频(条纹)
    --------------------------------------------------------------------------------------------------------------

    在装载vivi,ko时,实际上其所需要的依赖不仅仅是以上几个。若在装载vivi.ko之前没有将USB摄像头连接到Ubuntu,

    则会继续出现Unknown symbol in module 的问题。当右下角出现摄像头时,则说明已经系统已经提前安装好相关驱动。则可以insmod成功。

    (解决方法见下节)

  • 相关阅读:
    MySQL数据透视功能
    MySQL 姓名两个字中间加两个空格
    Back To Basics: Clustered vs NonClustered Indexes; what’s the difference?
    炉石传说 佣兵战纪 贫瘠之地
    When to Use Clustered or NonClustered Indexes in SQL Server
    Stairway to SQL Server Indexes
    Why use the INCLUDE clause when creating an index?
    Clustered vs Nonclustered Index: Key Differences with Example
    SQL Server: Order of Rows
    Being Agile vs. doing Agile: What's the difference?
  • 原文地址:https://www.cnblogs.com/y4247464/p/10615476.html
Copyright © 2020-2023  润新知