我的台式机的u2 ee camu2 摄像头app怎么固定?

session多服务器共享的方案梳理
作者:用户
本文讲的是session多服务器共享的方案梳理,
session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点。我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢。
php中session的原理,以前做了一
session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点。我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢。
php中session的原理,以前做了一下总结,可以参考:http://www.cnblogs.com/wangtao_20/archive//1955659.
以前业界使用session的做法:
默认情况下,php的session文件是保存在磁盘文件中。在php.ini配置文件中的配置项如下:
session.save_handler = files
session.save_path = "N;/path"
第一个配置项是指定使用files(文件形式)存储session数据。
第二个参数指定保存的路径。N表示生成多少级目录(不放到一个目录下,分散到多个磁盘目录中去)
我的配置项是:session.save_path = "F:/wamp/tmp"。那么就会去这个目录下面看到很多session数据的文件。
当我们使用php的内置函数session_start()的时候,就是去上面指定的磁盘目录把session数据载入,实际上就是拿类似
sess_74dd7807n2mfml49a1i12hkc45的文件。
74dd7807n2mfml49a1i12hkc45就是大家经常说的什么session的id号。
php.ini中还有一个关键配置项,如下:
session.name = SESSID
PHPSESSID就是cookie的名称,其实上面一串"74dd7807n2mfml49a1i12hkc45"会保存在一个名为PHPSESSID的cookie中。
根据http的请求机制,当浏览器请求的时候,头部信息会把浏览器中的cookie一起发给服务器。PHPSESSID这个cookie也
是在其中发给了服务器,php引擎通过读取PHPSESSID的值来确定要载入哪个session文件。
比如值为74dd7807n2mfml49a1i12hkc45,载入的就是"sess_74dd7807n2mfml49a1i12hkc45"。
注:当你调用php的函数session_start(),才表明你需要使用session文件了。不然平白无故就去载入文件,浪费性能。
===========================================
根据如上原理。session的数据默认是保存在磁盘文件中。假设这种情况:多台php服务器进行负载均衡的时候,比如有三台php服务器,为了实现负载均衡,那么三台服务器上面的php代码都是一样(拷贝一份)。
上面的图是nginx+fpm部署图。可以看到多台php服务器进行负载均衡。
生成session数据文件都是在本地了(a,b,c各自的服务器磁盘上)。负载均衡的目的本来就是要为了平均分配请求,所以没有固定第一次访问和第二次访问是同一台服务器,实际上无法确定的。第一秒访问可能是a服务器,第二秒访问的可能是c服务器。
所以同一个登录会员,实际上就会出现:第一秒访问第一台php服务器,第二秒访问的是第二台服务器。登录的信息一般是保存在session中的。这样子登录保存的session数据就需要进行共享了。不然的话会出现,访问第一台服务器生成了一个session数据。第二秒负载请求到第三台服务器,结果获取不到刚才生成的session数据。
我的理解是:只有涉及到多台多台后端服务器(php,java等处理服务器)的时候,才涉及到session读取不到的问题。
在php环境中,只有多台php服务器(php服务器而非web服务器,session文件是php引擎生成的)的情况下,才会涉及到
session共享的问题。单台php服务器,存储都在一台主机上。不涉及到共享问题。因为session直接存储在这台服务器磁盘上是能够被本机读取到的。
如果是:一台php服务器,多台服务器。这种也是负载均衡,这种负载均衡不涉及到共享问题。因为怎么session数据怎么操作都是保存在一台服务器上。
==================================
ps:实际上,session在php,.net,java等只要是后端语言都会用到。session的存储机制,各种语言都大体差不多。我觉得这跟cookie在各个语言中都会用到差不多。.net,java我没去了解过。但是存储原理是差不多的。区别就是,php,java,.net调用的函数,读和取session数据的方式不同。默认都是存储在本地文件中的(不然怎么会涉及到session共享问题呢,存储在数据库本身就可以实现共享的)。
所以,无论是.net还是java都会涉及到session数据共享的问题。
其实我的理解是,session的原理都是一样的。讨论session共享方案设计,是可以抛开具体的语言去讨论session共享方案设计。
目前业界解决session共享的几种思路,我总结如下:
第一种办法:把原来存储在服务器磁盘上的session数据存储到客户端的cookie中去。
这样子,就不需要涉及到数据共享了。a客户端请求的时候,原来生成在服务器的数据生成到浏览器的cookie中,根据cookie中的数据识别用户。php由原来的”从本地(也就是服务器)磁盘上读取session数据”转变为”浏览器的cookie中读取数据”,
这样子,在多台php服务器负载均衡的情况下,即便第一秒请求是a服务器,第二秒请求是b服务器,都不需要管哪台服务器了。反正都是读取客户端上的cookie数据。
一般是把session数据按照自己定义的加密规则,加密后后存在cookie中。
数据保存在cookie中这种做法有好处,也有坏处。
好处是服务器的压力减小了,因为session数据不存在服务器磁盘上。根本就不会出现session读取不到的问题。
带来的弊端是:
网络请求占用很多。每次请求时,客户端都要通过cookie发送session数据给服务器。
另外,浏览器对cookie的大小存在限制。每个浏览器限制是不同的。
Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
  Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
所以第一种方案不适合高访问量的情况下,因为高访问量的情况下,每次请求浏览器都要发送session数据给服务器。一般一个cookie大小2k的样子。
要占用很多带宽了(服务器购买带宽是一个很大费用),成本增高。归纳为带宽性能,速度问题。
存储到cookie中去,第二方面是安全问题:把session数据放到客户端,一般session中存的都是重要性数据(帐号、昵称、用户id等),会存在安全问题。
了解到,淘宝以前用过这种方式,把session数据存储到cookie中,根据cookie来识别用户。
第二种思路:用一种算法(简单理解为规则),什么机制下session是保存在哪台服务器下,那么读取的时候就按照这种规则去读取,就能定位到原来的服务器。叫做分发请求,分发到特定的服务器上去,我理解其原理是存session和读session数据保证都在一台服务器操作,就不会需要涉及到共享,具体实现方式是通过约定一种分发机制来实现。
也叫做sticky模式(粘性会话模式),同一个用户的访问请求都被派送到同一个服务器上。
假设是同一个用户user1,每次访问都路由到同一台服务器上,这样即便是在负载均衡的情况下,也能保证每次访问都能读取到session,不需要做session数据共享了。
关键多台server的原因是为负载均衡而做的,那么就得把原来负载均衡的规则假设是—a,现在改为按照session来均衡分发请求的规则—b。
如果这台机子挂掉了,那么后续的请求按照session的规则还是会分发到这台服务器上去,但是现在不可用了。
本来负载均衡有一个目的就是:当其中一台机子不可用的时候,会自动分发到可用的机子上去(自动判断现在要请求的机子是否可用)
因为某种规则的session都是保存在一台服务器上,比如用户编号是1-200涉及到的session数据保存到a服务器上去。所以只要一台出问题,1-200的用户就无法实现登录了。后面就不可用了(可能想到1-200用户的session服务器用多台进行复制,这感觉很蹩脚,仍然需要用到复制的话,还不如用其他简便的方法)
第三种思路:做一个中间层,专门来存储所有访问涉及到的session。也就是所有的session都存储在这里。
服务器端统一从这里读取session数据。
具体实现方式很多种。我的理解是,这里只是一种思想层面上的。我不知道淘宝的tbsession框架的具体实现。但是大致思想差不多,
由这个session框架来维护所有网站的session数据。我根据自己的理解,猜测淘宝的结构画图大致如下:
使用这种中间层的思想来实现共享,具体的技术方案,我归纳为以下几种:
1、 通过NFS文件共享的方式,多台php服务器共享保存session文件的磁盘。
通过nfs的方式,各个php服务器操作session数据的时候,是读取本地磁盘目录,但实际上是一个共享网络文件。各个php服务器实际上操作的都是同一个目录的文件。
具体的操作细节。到时候还需要详细写一下。我根据理解,画了下面的图:
 2、保存在数据库中,这种方式的扩展性很强,可以随意增加WEB而不受影响。放在数据库里面安全方面好。
其实我理解本质是:自己写程序(php,java都可以实现,反正是保存在数据库中)模拟实现session的机制。
具体为,把以前存储在文件中的session数据存储到数据库中去,那么这样做,其实就不用到php内置的session机制了(像session_start()之类的函数都不需要去用了)。
写程序要模拟的是,从数据库拿session数据,约定什么情况下数据过期了然后自动清理,这里是指删除数据库中的行。保存在文件中的时候,php有垃圾回收机制会去自动清理过期的session文件。
====================================弊端
放在数据库里面,访问量小没有问题。大流量网站这么做,只会拖慢速度。因为得查询数据库,造成数据库压力大。
高并发访问的情况下,会出现很大的性能问题。
有些做法跟这种思想是类似的:比如ecshop、phpcms是把session数据都存储在数据库中去。服务端就是从数据库中拿session的数据。
放到数据库存储后,就可以实现:多台web服务器统一操作数据库,因为数据都在数据库,web服务器都能从数据库进行读取,那么session数据就能实现共享。
存储在数据库的做法,在线人数决定了其瓶颈,主要问题是影响性能。在线人数,因为登录的session数据存储在数据库中,只要是登录的用户就会涉及到频繁操作数据库。
我觉得小网站,同时1-2万个人在线情况下。应该没什么问题。
看网上丢出一个问题:对于大访问量的网站,数据库存储session方法可行性有待商榷。
我搜寻了一些资料,理解如下:
访问量大的话,一个用户访问了n多个页面,哪怕是刷新页面,都需要去数据库取session数据。数据库的承受压力,确实很恐怖。pv是多少,就要请求多少次数据库服务器。
访问每个页面都会去数据库查询是否登录,或者添加数据进数据库的sessions表
保存在文件中的时候,则交给了操作系统去控制。一个用户怎么刷新页面,查看其他页面,都只需要读取单个session文件(sess_74dd7807n2mfml49a1i12hkc45)。
我觉得,ecshop,discuz之类的系统之所以把session存储在数据库中去,跟网站的应用级别有关。他们设计的系统本身就是给中小站长用的,这些中小站长一般由于规模小,经济成本考虑,使用的是虚拟主机之类的。不具备对服务器的完全控制权限,比如还要安个memcache之类的,修改php.ini之类的都需要自己拥有独立服务器才能操控的(vps也算,只是虚拟出来的硬件而已)。
其实真正要做到网站大了,系统承受不住了。也会自己有独立的技术人员可以进行二次。
discuz这些做通用的软件要考虑思路有个特点:得考虑大部分用户的服务器环境。比如经常看到源代码里面要做php版本判断的代码,判断是5.0之前的要如何处理,以求尽量适应大部分环境。而我们公司自己运营的内部系统,环境我们完全可控。做这些确实是多余的工作量。
另外一个点是,这些通用软件不会为了高级用户的特殊需求,做一些改变,结果另外一部分用户就无法使用了。没法两全。所以我的理解是,他们一般不会随便去响应站长的需求,比如你明明是一个很大用户的站点,你用了我的系统,还要说数据量大了承受不住,表容易损坏。你都达到某种级别的应用了,还不自己进行开发。来这里抱怨。找我按照你们方式定制,愿意给钱就好。
从这里我看到,不是说这些软件技术含量就多好,是多么成熟的解决方案。他们针对的用户群不同。
由于http是短连接,每次过程是:建立连接(握手)》》数据通信》》通信结束后结束连接。如果频繁的这样子连接后再断开,性能会非常差。
session存储在数据库中,有多少pv,就要多少次这样的数据库连接操作(得去数据库拿session才能知道有没有登录,登录是否过时)。
3、可以将session数据保存在memcached,redis之类内存数据库中,memcached是基于内存存储数据的,性能很高,用户并发量很大的时候尤其合适。
主要是利用内存的数据读取速度是很快的,与磁盘读取的速度不是一个数量级的。
使用内存存储:方便统计在线人数,内存的速度比磁盘访问快、内存数据库系统能够控制内存中的过期数据自动失效(刚好符合session过期需要)。
存储在redis比较理想的选择,存储在数据库中方便存储统计在线人数,那么存储在redis中也实现了这个要求。
也可以存储在memcache中。但redis支持的数据类型多。所以用它好点。
关于使用技术工具复制session数据同步到多台服务器的方案权衡:
这种方案是,使用一些文件同步工具(linux下的rsync),当a服务器中的session数据有更改的时候,就会把这些更改也同步到b,c服务器上去。通过复制的方式,最终a,b,c各个服务器上都拷贝了一份session数据。
这种方式的弊端是,速度慢。复制数据会出现延迟。比如第一秒访问是a服务器,修改了session数据,负载均衡,可能下一秒访问是b服务器,session数据如果没有被复制到b服务器,则是读取不到session数据的,出现时间上的延迟。这种复制数据要消耗很多网络带宽的。在实际中业界用得比较少。机器的数量越多,复制数据的性能损耗越大。不具备高度扩展性。
复制session的方式,无论是网络带宽成本还是硬件开销上都很大的。
=================================结束
我写这篇总结的目的,只是为了梳理知识,完善自己的知识库。不一定正确。其中有些方式我确实没试过,也没有100%搞清楚细节。所以不一定完全正确。
有不当之处,期待后续完善,欢迎指正。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索服务器
,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!Linux系统中如何正确安装摄像头驱动-嵌入式系统-与非网
1、摄像头(Webcam)驱动说明;
  摄像头在Windows的驱动极为容易,最多是点几下鼠标,没有什么太大的难度。但在中,驱动起来是有点困难,这并不是说Linux多高雅。只能说开发商唯利是图,没有好处的事,他们的确不怎么积极。Linux 的用户比较少,所以他们也不把用户当回事。
  目前看来摄像头(Webcam)在 Linux 中驱动基本成熟,缺少的是应用程序的支持,比如即时通讯工具支持视频的好程序比较少。有些芯片组是没有任何问题,在国内,大多摄像头的芯片组是Z-Star,也有显示为Vimmicro(和Z-Star是同样的芯片)的。在Fedora 5.0或SuSE 10.x中,已经支持了很多摄像头,应该说即插即用。对于我们来说,是不是即插即用,那是另一回事,只有幸运儿才有这个的福气。如果您的摄像头接上还是用不了,那您就有必要看一下我写的这个文档了。
  本文操作环境: Fedora Core 5.0 。由于大部份是用源码包编译 ,所以还是有通用性的;
  1.1 摄像头在Linux中是如何支持的;
  在 Linux中,硬件的驱动程序,都是由内核支持的;目前比较新内核版本也集成了一些的。就是Fedora、SuSE最新版本所支持的内核也是来自由 kernel.org 。所以支持也是极为正常的。内核对硬件的支持分为内置于和外挂模块两种方便。对于摄像头来说,大多是模块支持的;
  1.2 摄像头(Webcam)驱动网址;
  http://mxhaard.free.fr
  目前最新版本的摄像头驱动,已经到了 spca5xx-.tar.gz 版本;您可以在上面的地址下载;
  2、驱动摄像头详细过程;
  2.1 查看摄像头型号;
  我们用用到 lshal 工具,在老版本的Linux是没有这个工具的。在最新版本的Linux都有这个工具;
  [root ~]# lshal |grep WebCam
  info.product = 'ZC0303 WebCam' (string)
  usb_device.product = 'ZC0303 WebCam' (string)
  上面这个命令是列出系统硬件设备,然后从输出中,提取WebCam字样的信息。这说明这个摄像头是ZC0303芯片组的;如果想更详细的,就用下面的命令,找到带有ZC0303 WebCam设备的详细信息,就把所有USB设备都列出来;
  [root ~]# lshal |grep usb
  然后就找 ZC0303字样的设备 ,那一大段都要仔细的看;
  也可以这样的方法;
  [root ~]# lshal -s |grep usbusb_device_0_0_d_0usb_device_0_0_d_0_if0usb_device_4fc_3_noserialusb_device_4fc_3_noserial_if0usb_
device_4fc_3_noserial_if0_logicaldev_inputusb_device_4fc_3_noserial_usbrawusb_device_0_0_d_0_usbrawusb_device_
0_0_d_1usb_device_0_0_d_1_if0usb_device_ac8_303b_noserialusb_device_ac8_303b_noserial_if0usb_
device_ac8_303b_noserial_usbrawusb_device_ac8_303b_noserial_video4linuxusb_device_0_0_d_1_usbrawusb_
device_0_0_d_2usb_device_0_0_d_2_if0usb_device_0_0_d_2_usbrawusb_device_0_0_
d_7usb_device_0_0_d_7_if0usb_device_0_0_d_7_usbraw
  我们看到带有video4linux字样的,他的设备号是 usb_device_ac8_303b_noserial_video4linux字样的,在其前面还有几个差不多的编号的设备。比如 usb_device_ac8_303b_noserial。我们就先查这个设备,大多数这样的一组相似的设备号,查第一个就能知道是什么设备。于是用。。
  [root ~]# lshal -l -u usb_device_ac8_303b_noserial
  udi = '/org/freedesktop/Hal/devices/usb_device_ac8_303b_noserial'
  info.udi = '/org/freedesktop/Hal/devices/usb_device_ac8_303b_noserial' (string)
  linux.subsystem = 'usb' (string)
  linux.hotplug_type = 1 (0x1) (int)
  usb_device.bus_number = 3 (0x3) (int)
  usb_device.can_wake_up = false (bool)
  usb_device.is_self_powered = false (bool)
  usb_device.version_bcd = 272 (0x110) (int)
  usb_device.speed_bcd = 0) (int)
  usb_device.linux.device_number = 2 (0x2) (int)
  usb_device.num_ports = 0 (0x0) (int)
  usb_device.max_power = 160 (0xa0) (int)
  usb_device.device_revision_bcd = 256 (0x100) (int)
  info.product = 'ZC0303 WebCam' (string)
  usb_device.product = 'ZC0303 WebCam' (string)
  info.vendor = 'Z-Star Microelectronics Corp.' (string)
  usb_device.vendor = 'Z-Star Microelectronics Corp.' (string)
  usb_device.product_id = 1b) (int)
  usb_device.vendor_id = 2760 (0xac8) (int)
  usb_device.device_protocol = 0 (0x0) (int)
  usb_device.device_subclass = 0 (0x0) (int)
  usb_device.device_class = 255 (0xff) (int)
  usb_device.num_interfaces = 1 (0x1) (int)
  usb_device.num_configurations = 1 (0x1) (int)
  usb_device.configuration_value = 1 (0x1) (int)
  usb_device.linux.sysfs_path = '/sys/devices/pci0:00:1d.1/usb3/3-1' (string)
  info.linux.driver = 'usb' (string)
  info.bus = 'usb_device' (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_d_1' (string)
  linux.sysfs_path_device = '/sys/devices/pci0:00:1d.1/usb3/3-1' (string)
  linux.sysfs_path = '/sys/devices/pci0:00:1d.1/usb3/3-1' (string)
  这回应该详细了吧。看上面的设备是哪个厂出品的?
  usb_device.vendor_id = 2760 (0xac8) (int)
  usb_device.product_id = 1b) (int)
  info.product = 'ZC0303 WebCam' (string)
  info.vendor = 'Z-Star Microelectronics Corp.' (string)
  usb_device.product_id = 1b) (int)
  在Gnome桌面环境下,还用hal-gnome软件包工具可用;您可以通过下面的方式来安装此软件包
  [root ~]# yum install hal-gnome
  然后运行hal-device-manager工具;
  [root ~]# hal-device-manager
  点鼠标查看摄像头的详细信息还是没有问题吧。
  2.2 根据摄像头信息到驱动网站对号入座;
  请参见: http://mxhaard.free.fr/spca5xx.html
  请注意:这两个最重要的信息,也驱动网址摄像头芯片所对应地址对号入座,如果这张列表上没有摄像头,可能您得等一等了。不过也不是绝对的,给开发者捐赠一个不被支持的摄像头,肯定能解决。驱动开发者有捐赠主页,不妨捐一个看看。
  usb_device.vendor_id = 2760 (0xac8) (int)
  usb_device.product_id = 1b) (int)
  比如我的这款摄像头,在其网站上,显示为支持。
  2.3 摄像头驱动的选择;
  spca5xx-.tar.gz
  对于Fedora Core 5.0 4.0 摄像头驱动RPM包:
  其实在Fedora Core 5.0 中已经有这款驱动的RPM包了,但我尝试后发现根本不能用。如果您也想尝试RPM包,请到下面的网址去下载;或用YUM在线安装也行,不过得设置YUM的源;
  http://mirrors.ircam.fr/pub/atrpms/fc5-i386/atrpms/RPMS.testing
  如果是Fedora 4.0的,就到下面的地址去下载;
  http://mirrors.ircam.fr/pub/atrpms/fc4-i386/atrpms/RPMS.testing/
  首先:要看自己的内核版本,然后再下载;
  [root ~]# uname -r -i
  其次:下载软件包选择;
  下载spca5xx开头的,要安装两个包左右,一个是 spca5xx-kmdl,另一个是 video4linux-kmdl,还有一个是 video4linux-kernheaders。根据软件包的时间、版本、内核版本对照下载安装。这方面不能说的太多。自己试试看,我是没有成功。
  2.4 下载并编译内核;
  由于RPM包安装上也不可用,所以我采用的是源码包安装的方法,当然因为我用的是比较新的内核,2.6.16.19。所以这个文档就是通用性了。源码包安装大多都差不多。所以其它发行版本也可以做为参考。
  2.41 下载内核;
  我测试摄像头所用的内的内核版本是 2.6.16.19;
  linux-2.6.16.19.tar.bz2
  下载内核配置文件:
  我从Slackware的FTP上,找到了2.6.16.19的配置文件。请到这里下载;kernel261619.txt
  2.42 编译内核;
  第一步:解压内核软件包;
  [root ~]# tar jxvf linux-2.6.16.19.tar.bz2
  [root ~]# mv linux-2.6.16.19 /usr/src
  把下载下来的内核配置文件改名复制到 /usr/src/linux-2.6.16.19
  [root ~]# cp kernel261619.txt /usr/src/linux-2.6.16.19/.config
  第二步:编译内核;
  [root ~]# cd /usr/src/linux-2.6.16.19/
  [root linux-2.6.16.19]# make
  [root linux-2.6.16.19]# make modules_install
  [root linux-2.6.16.19]# make install
  第三步:查看/boot/grub/menu.lst文件;
  一般的情况下,make install 安装内核后,系统会把启动写入GRUB的配置文件。/boot/grub/menu.lst。您可以看到有类似如下的一段;
  title Fedora Core (2.6.16.19)
  root (hd0,6)
  kernel /boot/vmlinuz-2.6.16.19 ro root=LABEL=/1 rhgb quiet
  initrd /boot/initrd-2.6.16.19.img
  对于其它发行版本,您可以修改menu.lst文件。
  2.5 编译摄像头驱动程序;
  在编译摄像头驱动的前题是,我们要用2.6.16.19这个内核来启动系统,然后在 2.6.16.19内核系统环境下编译摄像头驱动;
  2.51 下载摄像头驱动;
  http://mxhaard.free.fr
  spca5xx-.tar.gz
  2.52 解压编译;
  再说一点,可能在编译的过程中需要各种开发库和或开发工具之类的,比如gcc、make、automake等,您要懂得自己把这些东西安装上;少什么就安装什么吧。
  [root ~]# tar zxvf spca5xx-.tar.gz
  [root ~]# cd spca5xx-
  [root spca5xx-]# make
  [root spca5xx-]# make install
  [root spca5xx-]# depmod -a
  [root spca5xx-]# modprobe spca5xx
  看看驱动模块挂载好了没有?
  [root spca5xx-]# lsmod |grep spca5xx
  spca5xx
  videodev 7040 1 spca5xx
  我们再查看一下设备/dev/video0是否存在?
  [root spca5xx-]# ls -lh /dev/video0
  crw------- 1 beinan root 81, 0 06-08 09:33 /dev/video0
  3、摄像头应用程序 SpcaV
  3.1 SpcaView 软件包,包括一组工具;
  spcaview工具是用来纪录数据流,也能用来播放数据;
  spcaserv 是流媒体服务器;
  spcacat 简单图片的抓取工具;
  SpcaView 下载和安装;
  下载地址:
  http://mxhaard.free.fr/spca50x/Download ,我下载的是目前这个版本:spcaview-.tar.gz
  依赖关系;
  此软件依赖 libsdl,要先安装它才行,下载地址:http://www.libsdl.org ,我下载的是:SDL-1.2.10.tar.gz
  http://www.libsdl.org/download-1.2.php
  [root ~]# tar zxvf SDL-1.2.10.tar.gz
  [root ~]# cd SDL-1.2.10
  [root SDL-1.2.10]# ./make install
  安装SpcaView:
  [root ~]# tar zxvf spcaview-.tar.gz
  [root ~]# cd spcaview-
  [root spcaview-]# make install
  配置可执行程序的路径:
  可执行的工具被安装到 /usr/local/bin目录中,所以我们还要配置一下用户的环境变量PATH 。配置命令执行路径,在当前用户家目录下的.bashrc文件中加入下面的一行;
  export PATH=&.:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin&
  然后运行如下命令;
  [root ~]# source .bashrc
  3.2 通用spcaview来测试摄像头;
  [root ~]# spcaview -d /dev/video0 -f jpg -s 320x240
  如果您想看的图像分辨率,可以调整 -s后面的参数,比如 640x480
  如果抓取数据流,尝试用下面的命令,比如我们把抓取的数据流存在一个linuxsir.org.avi文件中;如果想播放,就用mplayer就行,xine也可以。
  [root ~]# spcaview -f yuv -o linuxsir.org.avi
  更多的帮助: http://mxhaard.free.fr/sview.html
  4、即时通讯工具;
  即时通讯工具在 Linux 视频下比较少,其中有aMSN,不过aMSN虽然能简单的应用,但如果您的机器是接在路由器或防火墙之后,还要配置端口转发。由于我的路由器功能比较差,所以没有发现有哪块配端口转发。不过在公司内部局域网和同事聊天还是能用看到对方的。Mercury 也是MSN的客户端 ,需要Java虚拟机支持,安装起来有点麻烦。我在Fedora 5.0 Core 中没有安装成功。如果您想安装尝试,请自行安装一下。如果有问题,咱们再交流;
  4.1 aMSN ;
  主页:http://amsn.sourceforge.net
  aMSN 支持视频,不过在路由器或防火墙后的计算机需要配置路由器。我和公司同事聊天测试,无需配置路由器。由于我的路由器功能比较简单,还没有找到相应的选项。看两张图吧;&&
  今天(),我换了一个路由器,总算把这个问题测试成功了;在路由器上找到 有ip forward 类似的选项,要把 6890 - 6900转发到您所用的计算机上上的端口上,协议是TCP/UDP。比如我用的计算机的IP地址是:192.168.1.3;我的路由器上有NAT 选项,我在NAT中的防火墙规则中设置的。也就是把 来自WAN的数据流,协议TCP/UDP ,端口 6890 - 6900,转发到 192.168.1.3 机器上的 6890 - 6900。&&
  4.2 Mercury (MSN客户端)
  主页: http://www.mercury.to
  主页: http://gaim-vv.sourceforge.net
  Gaim-vv 包含支持YahooMessager 视频功能;目前Gaimvv已停止开发,据说在未来的Gaim 2.x中要做为重点开发;Gaim-vv效果还是不错的,遗憾的是只支持 YahooMessager 视频。我测试了 Gaim-vv 的YahooMessager 视频,性能还比较不错,对系统资源占用相对来说较少
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
有位网友来找我,目的是向我咨询掌握什么技术在毕业后能找份好工作。他才大二,语气中充满焦虑。这似乎是一个喜欢速成的时代,大多数人追求短平快,而摒弃踏踏实实积累。可是如果一个人心不静,当下的事情都做不好,谈何规划未来?大学里两年的时间,他还能学习很多知识。
发表于: 15:30:00
我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊)。
发表于: 11:12:35
在经过近一年的幕后工作之后,华为推出了一款工具,旨在测试主要区块链性能。据悉,他们现在正在准备正式提交给Linux Foundation领导的超级账本(Hyperledger)区块链联盟。
发表于: 10:12:08
我们家,时间最富裕的就是我女儿了。她每天一边写作业一边惦记着动画片,特别在周末,一旦看起来就不停。我经常教育她,要把看动画片的时间拿一部分出来练习画画,读一些书。看电视毕竟是消费精神产品,人还是必须要为社会创造价值的。为了能让女儿爱上读书,我几乎在家建了一个图书馆,但是效果甚微。其中有些书她没读,我倒先读了。
发表于: 13:58:15
随着Internet与网络的迅速发展并向家庭领域不断扩展,使消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式系统再度成为研究与应用的热点。
发表于: 13:15:59
过去的一年里,内存价格不断上涨,8GB DDR4内存接近千元,DDR3内存也被带动涨了一波。今年内存价格虽有所下跌,但仍然远超去年同期水平。
发表于: 08:16:00
集邦咨询半导体研究中心(DRAMeXchange)指出,中国存储器产业目前以投入NAND Flash市场的长江存储、专注于行动式内存的合肥长鑫,以及致力于利基型内存晋华集成三大阵营为主。
发表于: 16:54:16
在产品设计时,倘若没有考虑应用环境对电源隔离的要求。产品到了应用时就会出现因设计方案的不当导致的系统不稳定,甚至出现高压损坏后级负载的情况,以及出现危害人身财产安全的情况。因此产品设计是否需要隔离至关重要。
发表于: 16:52:43
随着智能手机、平板电脑等智能终端性能的快速提升,以及智能硬件设备的应用普及,设备对存储器件的要求越来越高.华为P10闪存门更是把eMMC直接带入大家的视野,但是在eMMC广泛应用的同时,eMMC海量烧录的困境你真的知道吗?
发表于: 16:52:22
台湾NAND Flash控制芯片厂慧荣总经理苟嘉章表示,预期上半年NAND Flash将供过于求,价格呈现缓步下滑,到下半年因多家新款手机储存容量加大带动需求,市况可能略为吃紧,但不至于缺货。
发表于: 10:31:14
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号

我要回帖

更多关于 ivcam 电脑摄像头 的文章

 

随机推荐