zoukankan      html  css  js  c++  java
  • 虚拟摄像头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成功。

    (解决方法见下节)

  • 相关阅读:
    自定义指令
    freemarker 数据类型
    hibernate简单的增删改查
    hibernate增删改查
    Hibernate HQL查询语句总结
    Hibernate配置详细解释
    Filter过滤器
    日志统计
    分页-模糊查询
    分页
  • 原文地址:https://www.cnblogs.com/y4247464/p/10615476.html
Copyright © 2011-2022 走看看