文章插图
今年,在我基本上放弃了 macBook,转而使用 NixOS 机器之后,我开始在与人进行视频通话时被要求“打开摄像头” 。这是一个问题,因为我没有网络摄像头 。我考虑购买一个,但后来我意识到我有一台完好无损的 2008 年产的佳能 EOS Rebel XS 数码单反相机放在书架上 。这台相机有一个 mini-USB 接口,所以我自然而然地思考:一台数码单反相机、一个 mini-USB 接口和一台台式电脑,是否意味着我能拥有一个网络摄像头?
只有一个问题 。我的佳能 EOS Rebel XS 不能录制视频 。它可以拍摄一些漂亮的照片,仅此而已 。所以这结束了?
还是有别的办法?
恰好有一个叫做 ??gphoto2?? 的神奇的开源软件 。一旦安装,它允许你从计算机控制各种支持的相机,并拍摄照片和视频 。
支持的相机首先,了解你的设备是否得到支持:
$ gphoto2 --list-cameras
拍摄图像你可以用它拍照:$ gphoto2 --capture-image-and-download
快门触发,图像会保存到你当前的工作目录中 。录制视频我意识到了这里的潜力,所以尽管我的相机没有视频功能,我还是决定尝试 ?
?gphoto2 --capture-movie?
? 命令 。不知怎么,尽管我的相机不支持视频功能,??gphoto2?
? 仍然能够生成一个 MJPEG 文件!在我的相机上,我需要将其置于“实时预览”模式下,然后 ?
?gphoto2?
? 才能录制视频 。这包括将相机设置为纵向模式,然后按下 “设置Set” 按钮,使取景器关闭,相机屏幕显示图像 。不幸的是,这还不足以将其用作网络摄像头 。它仍然需要分配一个视频设备,例如 ??/dev/video0?
? 。安装 ffmpeg 和 v4l2loopback毫不奇怪,有一个开源的解决方案来解决这个问题 。首先,使用你的包管理器安装 ?
?gphoto2?
?、??ffmpeg?
? 和 ??mpv?
? 。例如,在 Fedora 、centos 、Mageia 和类似的 linux 发行版上:$ sudo dnf install gphoto2 ffmpeg mpv
在 Debian、Linux Mint 及其类似发行版:$ sudo apt install gphoto2 ffmpeg mpv
我使用的是 NixOS,这是我的配置文件:【如何在 Linux 中使用旧相机作为网络摄像头】
# configuration.nix...environment.systemPackages = with pkgs; [ffmpeggphoto2mpv...]
创建虚拟视频设备需要使用 ??v4l2loopback?
? Linux 内核模块 。在撰写本文时,该功能未包含在主线内核中,因此你需要自己下载和编译它:$ git clone https://github.com/umlaeute/v4l2loopback$ cd v4l2loopback$ make$ sudo make install$ sudo depmod -a
如果你像我一样使用 NixOS ,你可以在 ??configuration.nix?
? 中添加额外的模块包:[...]boot.extraModulePackages = with config.boot.kernelPackages;[ v4l2loopback.out ];boot.kernelModules = ["v4l2loopback"];boot.extraModprobeConfig = ''options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"'';[...]
在 NixOS 上, 运行 ??sudo nixos-rebuild switch?
?,然后重启 。创建一个视频设备假设你的计算机当前没有 ?
?/dev/video?
? 设备,你可以借助 ??v4l2loopback?
? 在需要时创建一个 。运行以下命令,将 ?
?gphoto2?
? 中的数据发送到 ??ffmpeg?
?,使用设备如 ??/dev/video0?
? 设备:$ gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video0
你得到的输出是这样的:ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developersbuilt with gcc 11.3.0 (GCC)configuration: --disable-static ...libavutil56. 70.100 / 56. 70.100libavcodec58.134.100 / 58.134.100libavformat58. 76.100 / 58. 76.100libavdevice58. 13.100 / 58. 13.100libavfilter7.110.100 /7.110.100libavresample4.0.0 /4.0.0libswscale5.9.100 /5.9.100libswresample3.9.100 /3.9.100libpostproc55.9.100 / 55.9.100Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort.[mjpeg @ 0x1dd0380] Format mjpeg detected only with low score of 25, misdetection possible!Input #0, mjpeg, from 'pipe:':Duration: N/A, bitrate: N/AStream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 768x512 ...Stream mApping:Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))[swscaler @ 0x1e27340] deprecated pixel format used, make sure you did set range correctlyOutput #0, video4linux2,v4l2, to '/dev/video0':Metadata:encoder: Lavf58.76.100Stream #0:0: Video: rawvideo (I420 / 0x30323449) ...Metadata:encoder: Lavc58.134.100 rawvideoframe=289 fps= 23 q=-0.0 size=N/A time=00:00:11.56 bitrate=N/A speed=0.907x
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 心理学|如何应对职场暴力?可以读读这本“职场人的孙子兵法”
- 岳翎|“哑巴新娘”岳翎:巅峰时息影,嫁富商老公定居国外,如今怎样了
- 鲢鳙|浮钓鲢鳙,如何选漂和调漂?出现这些漂相都能中鱼
- |百看不厌的5部甜宠剧,每一部都是神仙阵容,好评如潮看点十足
- 衬衫|果然换发如换脸!近42岁凭发型再次回归颜值巅峰,肌肤状态绝佳
- 新型冠状肺炎|潘石屹捞金捐哈弗6亿,国内疫情却一毛不拔,如今儿子酿下大祸!
- 国企|作为职场女性,如何自我调节,才能顶住工作和带娃的双重压力?
- hr|求职时,如何在谈薪环节与HR博弈,从而获得最好待遇?
- 谢贤|谢贤的前女友“用青春换来2000万”如今变为普通人!
- 大豆异黄酮多囊卵巢