可能是最通用的虚拟摄像头和虚拟麦克风

视频点此

这两天北京又有点儿吃紧,核心地区的学校又停课了。那必然,如果说上课或者考试的话,肯定会有摄像头来监控你的行为——远程办公也是类似的吧?那有没有办法能让你逃过摄像头的监视呢?虚拟一下就可以了。这可能也是最通用的虚拟方法,任何软件都能使用。

一、原理

如何实现呢?回想一下我曾经说过的用手机做电脑摄像头:在使用时需要先通过命令加载一个v4l2模块,然后在使用摄像头的程序里边选择v4l2的源就可以了。对了,这个v4l2设备就是切入点。我只需要设置一个v4l2设备,然后在需要摄像头的软件里选择这个摄像头即可。那么这个摄像头显示的内容要从哪儿来呢?

再回想一下我曾经说过的与视频流相关的东西什么?对了,ffmpeg就可以做到这一点。ffmpeg是十分强大的一个工具,转码、录制直播、向直播间推流甚至是录屏,都可以通过ffmpeg来完成。所以将两者结合,即可打造一个虚拟的摄像头设备。

二、实现过程

接下来就看看如何实现。

  • 安装v4l2loopback。直接安装v4l2loopback-dkms这个包就行了。注意啊,只支持Linux,MAC也许也可以?
  • 查看当前的视频捕获设备,方便之后判断成功与否

    • 通过命令ls /dev/ | grep video查看,或者文件管理器去往/dev/浏览video文件名的文件——所以你一定要明白,Linux用命令行更多的时候是因为方便,而不是离不开。
    • 像我的笔记本,因为自带一个摄像头,所以我应该可以找到一个名为video0的文件,象征着存在一个视频捕获设备。如果有更多,则会有更多的文件出现在这里,反之你就找不到就对了。
  • 加载v4l2模块sudo modprobe v4l2loopback
  • 再查看刚刚的文件夹,你应该会发现多出来一个video开头的文件。这就意味着虚拟摄像头创建成功了。

现在,往摄像头中传入视频源,以便使用。

  • 随便找一个视频备用
  • 使用命令ffmpeg -re -i '视频地址' -f v4l2 '刚刚新出现的video文件路径'

现在,使用任意一款使用到摄像头的软件,你会发现你会多出一个可选摄像头,选择之后显示出来的就是我们刚才使用的那段视频。

那么如何用来逃开远程监视就不必多说了吧?但是要明确一件事情啊,我只是在讨论技术,是你愿意把它拿去用在错误的地方了,这有任何问题可都不赖我。

三、虚拟麦克风

虽然用不到,但是音频和视频一般都是结伴出现的,所以既然有虚拟摄像头了,就附带着搞一个虚拟麦克风吧。不过,说是虚拟麦克风,实际上是新增了一块虚拟声卡,我们把音频流推到这个虚拟声卡上,就实现了虚拟麦克风的效果。

  • 查看/proc/asound/cards这个文本文件。它记录了这个电脑上所有的声卡。记住这几个,方便一会儿查看新增的虚拟声卡。
  • 加载虚拟声音回环模块——说人话就是加载虚拟声卡:sudo modprobe snd-aloop
  • 再查看文本文件,在最后应该新增了一项Loopback项,记住这个设备开头的数字。我这里是1

到此就说明虚拟声卡建立了。接下来尝试往这个声卡推送音频流。不过在真正使用之前,还需要找到这个虚拟声卡的设备号。

使用命令aplay -l即可查看到设备号。记住第二个Loopback行的device后的数字。我这里是1。现在就可以真正的往虚拟声卡中推送音频流了。

使用命令ffmpeg -i '文件' -f alsa hw:1,1其中,1,1分别对应刚刚要求记住的两个数字。

现在,使用任意一款使用到麦克风的软件,你会发现多出一个可选麦克风,选择之后就可以看到效果了。

创建时间:2020年06月19日
最后修订:2020年06月19日
另请参阅:
ArchlinuxManjaro
上一篇
打赏
下一篇

添加新评论

已有 2 条评论

 Meanson 1 个月前 • |

博主你好:我的全局菜单再更新plasma以后有些软件的全局菜单出现了软件开启时不显示全局菜单,但是切出去一次再回来以后就好了,暂时发现的就是chrome chromium 还有libreoffice直接打开任一个文档什么的时候。想请问博主有没有遇到这个问题,有没有解决办法。 系统是arch+kde桌面。

 等我稍后补充昵称 1 个月前 • |
@Meanson

没遇到过。可能只是没激活 重新添加一个全局菜单试试