v4l2loopback虚拟摄像机
尝试用 v4l2loopback 虚拟了个摄像头
玩了玩 v4l2loopback 这个模块,还蛮有意思的,可以创建虚拟虚拟视频设备,普通的 v4l2 应用程序可以读取这些设备,就好像它们是普通的视频设备一样
这玩意搭配 FFmpeg 使用说不定就能模拟一个摄像头跟别人视频聊天,虽然人不在电脑前,但别人看到的还是我在电脑前 (o゜▽゜)o☆
v4l2loopback 使用
先安装这个模块,ArchLinx 的官方库里有,可以直接安装
1 |
|
运行模块
1 |
|
这样就可以查看 /sys/devices/virtual/video4linux 中是否有虚拟的摄像头了
1 |
|
/dev 中也能看到
1 |
|
在运行 v4l2loopback 模块的时候可以选择加入参数
1 |
|
devices 参数可以指定虚拟出多少个设备
如果要更改配置,需要先卸载模块,重新运行模块才可以
1 |
|
FFmpeg 把视频流推给虚拟摄像头
FFmpeg 是一个多媒体视频处理工具,有许多非常牛逼的功能,比如视频采集功能、视频格式转换、视频抓图、给视频加水印等
反正处理视频能力就是特别强
虽然虚拟了摄像头设备,但这些摄像头没有东西可以用,这里就需要使用 FFmpeg 把视频流推给它们
1 |
|
各参数解释
- -readrate
: 读取速度 - -re: 以本机帧速率读取,相当于 “-readrate 1”
- -i: 输入源,一个视频
- -f: 约束输出文件的格式容器,可以使用 v4l2
- -stream_loop
: 循环播放视频的次数,-1表示无线循环 - /dev/video: 指定设备,这里用的是我虚拟出来的摄像头
测试效果
使用 ffplay 测试效果
1 |
|
这样就会打开一个窗口,这个窗口里播放的就是我刚推送的视频
使用 VLC 测试效果
打开 VLC ,左上角选择 媒体 -> 打开捕获设备
点击播放就能看到刚推送的视频了
使用 OBS 测试效果
先在 OBS 中开启虚拟摄像机
在来源中添加一个视频采集设备,设备选择虚拟摄像设备,就能看到刚推送的视频了
感觉开启了新大陆,如果在和别人视频聊天的时候,把摄像机设备换成虚拟的,那我不就能伪装成别人了吗
I am faker…