如何创建一个 v4l2 设备,它是网络摄像头的裁剪版本?

如何创建一个 v4l2 设备,它是网络摄像头的裁剪版本?

我有一个 Logitech 网络摄像头 C930e /dev/video0。我可以用它来进行视频会议(例如jitsi)。然而,该网络摄像头拍摄的视频太高、太宽泛。我想要一个“裁剪”版本,/dev/video0不显示墙上的海边图片。

首先,我尝试设置v4l2选项来实现此目的,但没有成功:

$ v4l2-ctl -d /dev/video0 --get-cropcap
Crop Capability Video Capture:
    Bounds      : Left 0, Top 0, Width 640, Height 360
    Default     : Left 0, Top 0, Width 640, Height 360
    Pixel Aspect: 1/1

$ v4l2-ctl -d /dev/video0 --get-selection target=crop_bounds
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 360, Flags:

$ v4l2-ctl -d /dev/video0 --set-selection target=crop_bounds,flags=crop,top=10,left=10,width=100,height=100
VIDIOC_S_SELECTION: failed: Inappropriate ioctl for device

之后我又产生了另一个想法:我尝试用它v4l2loopback来创建另一个设备/dev/video2。之后我会尝试使用ffmpeg连接/dev/video0/dev/video2(参见https://github.com/umlaeute/v4l2loopback/wikihttps://video.stackexchange.com/questions/4563/how-can-i-crop-a-video-with-ffmpeg)。

所以现在,我没有主意了。有人可以给建议吗?

答案1

下面的行创建一个环回视频设备/dev/video5。之后ffmpeg用于连接/dev/video0/dev/video5,但在途中裁剪和翻转流。

sudo apt-get install v4l2loopback-dkms 
sudo modprobe v4l2loopback video_nr=5
ffmpeg -i /dev/video0 -f v4l2 -pix_fmt yuv420p -filter:v "hflip,crop=400:400:0:0" /dev/video5

相关内容