我用gphoto2给我的旧单反相机带来了新的生命,把它变成了Linux电脑的网络摄像头。
今年,在我基本上放弃了MacBook,转而使用NixOS机器之后,我开始在与人进行视频通话时被要求“打开摄像头”。这是一个问题,因为我没有网络摄像头。我考虑购买一个,但后来我意识到我有一台完好无损的2008年产的佳能EOSRebelXS数码单反相机放在书架上。这台相机有一个mini-USB接口,所以我自然而然地思考:一台数码单反相机、一个mini-USB接口和一台台式电脑,是否意味着我能拥有一个网络摄像头?
只有一个问题。我的佳能EOSRebelXS不能录制视频。它可以拍摄一些漂亮的照片,仅此而已。所以这结束了?
恰好有一个叫做gphoto2的神奇的开源软件。一旦安装,它允许你从计算机控制各种支持的相机,并拍摄照片和视频。
了解你的设备是否得到支持:
快门触发,图像会保存到你当前的工作目录中。
我意识到了这里的潜力,所以尽管我的相机没有视频功能,我还是决定尝试?命令。不知怎么,尽管我的相机不支持视频功能,仍然能够生成一个MJPEG文件!
在我的相机上,我需要将其置于“实时预览”模式下,然后?才能录制视频。这包括将相机设置为纵向模式,然后按下“设置Set”按钮,使取景器关闭,相机屏幕显示图像。不幸的是,这还不足以将其用作网络摄像头。它仍然需要分配一个视频设备,例如。
毫不奇怪,有一个开源的解决方案来解决这个问题。使用你的包管理器安装?、和。例如,在Fedora、CentOS、Mageia和类似的Linux发行版上:
在Debian、LinuxMint及其类似发行版:
我使用的是NixOS,这是我的配置文件:
创建虚拟视频设备需要使用?Linux内核模块。在撰写本文时,该功能未包含在主线内核中,因此你需要自己下载和编译它:
如果你像我一样使用NixOS,你可以在?中添加额外的模块包:
在NixOS上,运行?,然后重启。

运行以下命令,将?中的数据发送到,使用设备如设备:
要查看来自网络摄像头的视频,请使用?命令:
每次想使用网络摄像头时都需要执行一次命令有点麻烦。幸运的是,你可以在启动时自动运行此命令。我将其实现为一个?服务:
在NixOS上,运行?,然后重新启动你的计算机。你的网络摄像头已经开启并处于活动状态。
要检查是否存在任何问题,可以使用?命令。它会告诉你服务最后一次运行的时间,并提供其以前输出的日志。这对于调试非常有用。
止步于此也许很诱人。考虑到当前的全球危机,我们可能需要思考是否有必要一直开着网络摄像头。这让我感到不太理想,原因如下:
我的摄像头有一个镜头盖,所以说实话,第二个原因并不真的让我感到困扰。当我不使用网络摄像头时,我总是可以把镜头盖上。让一个耗电量大的单反相机整天开着(更不用说需要解码视频所需的CPU开销),对我的电费并没有任何好处。
为了实现这一点,你需要使用一个自定义的udev规则。
udev规则可以告诉你的计算机,当它发现某个设备已经可用时执行某个任务。这可以是外部硬盘甚至是非USB设备。在这种情况下,你需要通过其USB连接识别相机。
指定udev规则被触发时要运行的命令。你可以用一个shell脚本来完成(应该可以工作)。我运行的是NixOS,所以我只需要创建一个派生包(一个Nix包),它会重新启动systemd服务:
接下来,实际定义udev规则。查找摄像头的设备和厂商ID。使用?命令可以完成此操作。该命令可能已经安装在你的发行版上,但我不经常使用它,因此我只需要根据需要使用安装它:
无论你的计算机上已经安装了它,还是刚刚安装,请运行?:
在此输出中,厂商ID为?,设备ID为。这已足以创建udev规则:
或者,如果你使用的是NixOS:
在你的?systemd服务中删除这一行。(如果保留它,则无论相机是否开启,该服务都会在下次重启时自动启动。)
我希望这篇文章能让你在放弃一些旧技术之前三思而后行。Linux可以为技术注入活力,无论是你的电脑还是数码相机或其他外围设备等简单的东西。
本文来源:国外服务器--如何在Linux中使用旧相机作为网络摄像头(linux调用网络摄像头)
本文地址:https://www.idcbaba.com/guowai/4944.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



